diff --git a/.gitignore b/.gitignore
index 88ff6381..76cdb8ad 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,7 +34,7 @@ ppaslink.sh
/src/**/*.identcache
/src/config-linux.inc
/src/paths.inc
-/src/WorldParty-*.lps
+/src/*.lps
/src/WorldParty.res
/scr/backup/
diff --git a/COPYRIGHT.txt b/COPYRIGHT.txt
index 2ce39416..c5779a11 100644
--- a/COPYRIGHT.txt
+++ b/COPYRIGHT.txt
@@ -1,5 +1,5 @@
Ultrastar Deluxe WorldParty
-Copyright (C) 2010-2017 by the following:
+Copyright (C) 2010-2018 by the following:
"Zup3r_vock"
"Daniel20"
diff --git a/VERSION b/VERSION
index 528f7b56..f7bed874 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-18.2
+18.11
diff --git a/configure.ac b/configure.ac
index daca2698..15c2870c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -276,7 +276,10 @@ AC_SUBST_DEFINE(HAVE_SWRESAMPLE, $libswresample_HAVE)
# map avutil library version to ffmpeg version
AC_MSG_CHECKING([version of ffmpeg])
-if FFMPEG_LIBS_COMPATIBLE([55078100], [57107100], [57083100], [4008100], [2009100]); then
+# the order is ([avutil], [avcodec], [avformat], [swscale], [swresample])
+if FFMPEG_LIBS_COMPATIBLE([56014100], [58018100], [58012100], [5001100], [3001100]); then
+ FFMPEG_VERSION="4.0"
+elif FFMPEG_LIBS_COMPATIBLE([55078100], [57107100], [57083100], [4008100], [2009100]); then
FFMPEG_VERSION="3.4"
elif FFMPEG_LIBS_COMPATIBLE([55034100], [57064100,57093100], [57056100], [4002100], [2003100]); then
FFMPEG_VERSION="3.2" # and 3.3
diff --git a/dists/lazarus/ultrastardx-win.lpi b/dists/lazarus/ultrastardx-win.lpi
index 48c4ed2b..7a25d475 100644
--- a/dists/lazarus/ultrastardx-win.lpi
+++ b/dists/lazarus/ultrastardx-win.lpi
@@ -526,11 +526,6 @@
-
-
-
-
-
diff --git a/game/fonts/Roboto/Roboto-Black.ttf b/game/fonts/Roboto/Roboto-Black.ttf
deleted file mode 100644
index fbde625d..00000000
Binary files a/game/fonts/Roboto/Roboto-Black.ttf and /dev/null differ
diff --git a/game/fonts/Roboto/Roboto-Medium.ttf b/game/fonts/Roboto/Roboto-Medium.ttf
deleted file mode 100644
index 39c63d74..00000000
Binary files a/game/fonts/Roboto/Roboto-Medium.ttf and /dev/null differ
diff --git a/game/fonts/fonts.ini b/game/fonts/fonts.ini
index 0cb7d12b..bbe5747a 100644
--- a/game/fonts/fonts.ini
+++ b/game/fonts/fonts.ini
@@ -44,8 +44,8 @@
[Font_Normal]
File=Roboto/Roboto-Regular.ttf
-;GlyphSpacing=0.2
-Stretch=0.81
+GlyphSpacing=1.1
+Stretch=0.8
[Font_Bold]
File=Roboto/Roboto-Bold.ttf
@@ -53,20 +53,16 @@ File=Roboto/Roboto-Bold.ttf
[Font_Outline1]
File=Roboto/Roboto-Bold.ttf
-Outline=0.05
-Stretch=0.86
+Outline=0.06
+Stretch=0.8
[Font_Outline2]
File=Roboto/Roboto-Bold.ttf
-Outline=0.08
-Stretch=0.89
+Outline=0.09
+Stretch=0.8
[Font_BoldHighRes]
File=Roboto/Roboto-Bold.ttf
MaxResolution=256
PreCache=0
-Outline=0.02
-
-[Fallbacks]
-File1=Roboto/Roboto-Regular.ttf
-;File2=C:/Windows/Fonts/simsun.ttc
+Outline=0.02
\ No newline at end of file
diff --git "a/game/languages/Catal\303\240.ini" "b/game/languages/Catal\303\240.ini"
index 8424e763..9bbe9faa 100644
--- "a/game/languages/Catal\303\240.ini"
+++ "b/game/languages/Catal\303\240.ini"
@@ -1,12 +1,73 @@
[Text]
LANGUAGE=Català
+SING_LOADING=Carregant...
+SING_LOADING_SONGS=Carregant cançons de la carpeta %s
+
+SING_SING=Cantar
+SING_SING_DESC=Joc ràpid: cantar un solo o un duet
+
+SING_MULTI=Festa
+SING_MULTI_DESC=Cantar en mode festa
+
+SING_JUKEBOX=Reproductor de música
+SING_JUKEBOX_DESC=Escoltar les meves cançons
+
+SING_STATS=Estadístiques
+SING_STATS_DESC=Veure estadístiques
+
+SING_GAME_OPTIONS=Opcions de joc
+SING_GAME_OPTIONS_DESC=Canviar preferències de joc
+
+SING_EXIT=Sortir
+SING_EXIT_DESC=Sortir del joc
+
+SING_ABOUT=Quant a
+SING_ABOUT_DESC=Quant a Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Perfils
+SING_PLAYER_READY=Jugadors llestos per cantar
+SING_PLAYER_COUNT=Nombre de jugadors
+SING_PLAYER_EDIT=Personalitzar un jugador
+SING_PLAYER_NAME=Escriu el teu nom
+SING_PLAYER_COLOR=Tria un color
+SING_PLAYER_LEVEL=Trieu un nivell
+SING_PLAYER_AVATAR=Selecciona el teu avatar
+
OPTION_VALUE_EASY=Fàcil
OPTION_VALUE_MEDIUM=Mitjà
OPTION_VALUE_HARD=Difícil
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+SING_OPTIONS=Opcions
+
+SING_OPTIONS_GAME=Joc
+SING_OPTIONS_GRAPHICS=Gràfics
+SING_OPTIONS_SOUND=So
+SING_OPTIONS_LYRICS=LLetres
+SING_OPTIONS_THEMES=Aparença
+SING_OPTIONS_MICROPHONES=Micròfons
+SING_OPTIONS_ADVANCED=Avançat
+SING_OPTIONS_NETWORK=Internet
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_JUKEBOX=Jukebox
+SING_OPTIONS_EXIT=Enrere
+
+SING_OPTIONS_GAME_LANGUAGE=Idioma
+SING_OPTIONS_GAME_SONGMENU=Menú de cançons
+SING_OPTIONS_GAME_TABS=Pestanyes
+SING_OPTIONS_GAME_SORTING=Ordenació
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Gamepad
+
+OPTION_VALUE_ROULETTE=Ruleta
+OPTION_VALUE_CHESSBOARD=Tauler d'escacs
+OPTION_VALUE_CAROUSEL=Carrusel
+OPTION_VALUE_SLOT_MACHINE=Escurabutxaques
+OPTION_VALUE_LIST=LLista
+OPTION_VALUE_MOSAIC=Rajola
+
+OPTION_VALUE_ON=Sí
+OPTION_VALUE_OFF=No
OPTION_VALUE_EDITION=Edició
OPTION_VALUE_GENRE=Gènere
@@ -14,24 +75,37 @@ OPTION_VALUE_LANGUAGE=Idioma
OPTION_VALUE_FOLDER=Directori
OPTION_VALUE_TITLE=Títol
OPTION_VALUE_ARTIST=Artista
-OPTION_VALUE_TITLE2=Títol2
OPTION_VALUE_ARTIST2=Artista2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
-OPTION_VALUE_PLAYLIST=llista
+OPTION_VALUE_YEAR=Curs
+OPTION_VALUE_DECADE=Dècada
+OPTION_VALUE_PLAYLIST=LLista
+
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla complerta
+SING_OPTIONS_GRAPHICS_RESOLUTION=Resolucị
+SING_OPTIONS_GRAPHICS_SCREENFADE=Fos de pantalla
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efectes de cantar
+SING_OPTIONS_GRAPHICS_VISUALIZER=Visualització
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mida pel·lícula
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_BORDERLESS=Maximitzada
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
+OPTION_VALUE_WHENNOVIDEO=Quan no hi ha vídeo
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Quan no hi ha vídeo i imatge
;TODO: OPTION_VALUE_HALF=Half
;TODO: OPTION_VALUE_FULL_VID=Full (Video)
;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Reproducció del micro
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Música de fons
+SING_OPTIONS_SOUND_CLICK_ASSIST=Assistència Click
+SING_OPTIONS_SOUND_BEAT_CLICK=Clic de ritme
+;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum previsualitzar
+SING_OPTIONS_SOUND_PREVIEWFADING=Fos previsualitzar
+
;TODO: OPTION_VALUE_GAIN_SOFT=Soft
;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
;TODO: OPTION_VALUE_GAIN_HARD=Hard
@@ -40,190 +114,214 @@ OPTION_VALUE_PLAYLIST=llista
;TODO: OPTION_VALUE_SEC=Second
;TODO: OPTION_VALUE_SECS=Seconds
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+SING_OPTIONS_LYRICS_FONT=Font
+SING_OPTIONS_LYRICS_EFFECT=Efecte
+SING_OPTIONS_LYRICS_NOTELINES=Pentagrama
+
+OPTION_VALUE_PLAIN=Estilitzat
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
-;TODO: OPTION_VALUE_SIMPLE=Simple
-;TODO: OPTION_VALUE_ZOOM=Zoom
+OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Pilota
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
-
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
-
-OPTION_VALUE_SING=cantar
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
-SING_LOADING=Carregant...
+SING_OPTIONS_THEMES_THEME=Aparença
+SING_OPTIONS_THEMES_SKIN=Pell
+SING_OPTIONS_THEMES_COLOR=Color
-SING_CHOOSE_MODE=Triar mode
-SING_SING=cantar
-SING_SING_DESC=joc ràpid: cantar un solo o un duet
+SING_OPTIONS_MICROPHONES_CARD=Tarjeta de so
+SING_OPTIONS_MICROPHONES_INPUT=Entrada
+SING_OPTIONS_MICROPHONES_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Llindar
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Ampli Micro
-SING_MULTI=festa
-SING_MULTI_DESC=cantar en mode festa
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscil·loscopi
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Després de triar cançó
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Prequnta abans de sortida
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Menú Automàtic de festa
+SING_OPTIONS_ADVANCED_TOPSCORES=Puntuacions més altes
+SING_OPTIONS_ADVANCED_SINGSCORES=Puntuacions sobre el cant
-SING_TOOLS=eines
+OPTION_VALUE_ALL=Tot
+OPTION_VALUE_PLAYER=Jugador
-SING_STATS=estadístiques
-SING_STATS_DESC=veure estadístiques
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Premeu la tecla "Insereix" per afegir l'usuari a aquesta web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Nom d'usuari
+SING_OPTIONS_NETWORK_PASSWORD=Contrasenya
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Envia el nom
+;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Jugador
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Insereix
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Suprimeix
+
+OPTION_PLAYER_1=Jugador 1
+OPTION_PLAYER_2=Jugador 2
+OPTION_PLAYER_3=Jugador 3
+OPTION_PLAYER_4=Jugador 4
+OPTION_PLAYER_5=Jugador 5
+OPTION_PLAYER_6=Jugador 6
+OPTION_ALL_PLAYERS=Tot
+OPTION_ALL_SCORES=Tot
+OPTION_VALUE_SAVE=Desa
+OPTION_VALUE_SEND=Enviar
-SING_EDITOR=editor
-SING_EDITOR_DESC=crea les teves propies cançons
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Omple els camps:
+;TODO: MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_CANCEL=Cancel·lar
-SING_GAME_OPTIONS=opcions de joc
-SING_GAME_OPTIONS_DESC=canviar preferències de joc
+WEBSITE_NO_CONNECTION=No hi ha cap connexió al lloc web!
+;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
+WEBSITE_BLANK_LOGIN=Hi ha camps buits!
+WEBSITE_EXIST_USER=Usuari existent!
+WEBSITE_ERROR_SCORE=S'ha produït un error de puntuació
+WEBSITE_OK_SEND=La puntuació s'ha enviat correctament
+WEBSITE_ERROR_SCORE_DUPLICATED=Puntuació existent!
+WEBSITE_ERROR_SONG=Cançó no trobada
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-SING_EXIT=sortir
-SING_EXIT_DESC=sortir del joc
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-SING_OPTIONS=opcions
-SING_OPTIONS_DESC=canviar preferències
-SING_OPTIONS_WHEREAMI=Opcions
+;TODO: SONG_SCORE_MAX=Best:
+;TODO: SONG_SCORE_MEDIA=Average:
-SING_OPTIONS_GAME=joc
-SING_OPTIONS_GRAPHICS=gràfics
-SING_OPTIONS_SOUND=so
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=lletres
-SING_OPTIONS_THEMES=aparença
-SING_OPTIONS_RECORD=gravar
-SING_OPTIONS_ADVANCED=avançat
-SING_OPTIONS_EXIT=enrere
+;TODO: SCORE_SEND_DESC=Send Score
+;TODO: SCORE_SEND=Send
+;TODO: SCORE_SEND_PLAYER=Player
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
-SING_OPTIONS_GAME_WHEREAMI=Opcions de joc
-SING_OPTIONS_GAME_DESC=opcions generals del joc
-SING_OPTIONS_GAME_PLAYERS=Jugadors
-SING_OPTIONS_GAME_DIFFICULTY=Dificultat
-SING_OPTIONS_GAME_LANGUAGE=Idioma
-SING_OPTIONS_GAME_TABS=Pestanyes
-SING_OPTIONS_GAME_SORTING=Ordenació
-SING_OPTIONS_GAME_DEBUG=Debug
+;TODO: SCORE_DOWNLOAD_TITLE=Download
+;TODO: SCORE_DOWNLOAD_SONG=Song:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Cancel·lar
+;TODO: SCORE_DOWNLOAD_OK=OK
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-SING_OPTIONS_GRAPHICS_WHEREAMI=Opcions Gràfiques
-SING_OPTIONS_GRAPHICS_DESC=configurar gràfics
-SING_OPTIONS_GRAPHICS_RESOLUTION=Resolucị
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla complerta
-SING_OPTIONS_GRAPHICS_DEPTH=Profunditat
-SING_OPTIONS_GRAPHICS_VISUALIZER=Visualització
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscil·loscopi
-SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de línia
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mida pel·lícula
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Resolucị
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Efecte
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
-SING_OPTIONS_SOUND_WHEREAMI=Opcions de so
-SING_OPTIONS_SOUND_DESC=configurar so
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Reproducció del micro
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Música de fons
-SING_OPTIONS_SOUND_MIC_BOOST=Ampli Micro
-SING_OPTIONS_SOUND_CLICK_ASSIST=Assistència Click
-SING_OPTIONS_SOUND_BEAT_CLICK=Clic de ritme
-SING_OPTIONS_SOUND_THRESHOLD=Llindar
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode dos jugadors
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Volum previsualitzar
-SING_OPTIONS_SOUND_PREVIEWFADING=Fos previsualitzar
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Llindar
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparència
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
-SING_OPTIONS_LYRICS_WHEREAMI=Opcions Lletra
-SING_OPTIONS_LYRICS_DESC=configuració de lletres
-SING_OPTIONS_LYRICS_FONT=Font
-SING_OPTIONS_LYRICS_EFFECT=Efecte
-SING_OPTIONS_LYRICS_SOLMIZATION=Solfeig
-SING_OPTIONS_LYRICS_NOTELINES=Pentagrama
+JUKEBOX_SONGOPTIONS_VIDEO=Opcions de vídeo
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspecte
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Ample
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-SING_OPTIONS_THEMES_WHEREAMI=Options d'Aparença
-SING_OPTIONS_THEMES_DESC=Configuració d'aparença
-SING_OPTIONS_THEMES_THEME=Aparença
-SING_OPTIONS_THEMES_SKIN=Pell
-SING_OPTIONS_THEMES_COLOR=Color
+OPTION_VALUE_TO_SING=Canta
+OPTION_VALUE_ACTUAL=Superior
+OPTION_VALUE_NEXT=Inferior
+;TODO: OPTION_VALUE_OTHER=Other
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Blau
+OPTION_VALUE_GREEN=Verd
+OPTION_VALUE_PINK=Rosa
+OPTION_VALUE_RED=Vermell
+OPTION_VALUE_VIOLET=Violeta
+OPTION_VALUE_ORANGE=Taronja
+OPTION_VALUE_YELLOW=Groc
+OPTION_VALUE_BROWN=Marró
+OPTION_VALUE_BLACK=Negre
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Gris
+OPTION_VALUE_WHITE=Blanc
+OPTION_VALUE_TURQUOISE=Turquesa
+OPTION_VALUE_SALMON=Salmó
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+;TODO: OPTION_VALUE_LAVENDER=Lavender
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
+;TODO: OPTION_VALUE_GOLD=Gold
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+;TODO: OPTION_VALUE_SKY=Sky
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
-SING_OPTIONS_RECORD_WHEREAMI=Opcions de micro
-SING_OPTIONS_RECORD_DESC=configuració del micro
-SING_OPTIONS_RECORD_CARD=Tarjeta de so
-SING_OPTIONS_RECORD_INPUT=Entrada
-SING_OPTIONS_RECORD_CHANNEL=Canal
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Opcions Avançades
-SING_OPTIONS_ADVANCED_DESC=opcions avançades
-SING_OPTIONS_ADVANCED_EFFECTSING=Efectes de cantar
-SING_OPTIONS_ADVANCED_SCREENFADE=Fos de pantalla
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animació càrrega
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Prequnta abans d'esborrar
-SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de línia
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=després de triar cançó
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Menú Automàtic de festa
+SING_LEGEND_SELECT=Seleccionar
+SING_LEGEND_NAVIGATE=Navegar
+SING_LEGEND_CONTINUE=Continuar
+SING_LEGEND_ESC=Enrere
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=crea cançons
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importar text de fitxer midi
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=tornar
-SING_EDIT_BUTTON_CONVERT=Importar
-SING_EDIT_BUTTON_EXIT=enrere
-
-SING_EDIT_NAVIGATE=navegar
-SING_EDIT_SELECT=triar
-SING_EDIT_EXIT=enrere
-
-SING_LEGEND_SELECT=seleccionar
-SING_LEGEND_NAVIGATE=navegar
-SING_LEGEND_CONTINUE=continuar
-SING_LEGEND_ESC=enrere
-
-SING_PLAYER_DESC=entrar nom de jugador/s
-SING_PLAYER_WHEREAMI=Nom dels jugadors
-SING_PLAYER_ENTER_NAME=introduir nom
-
-SING_DIFFICULTY_DESC=triar dificultat
-SING_DIFFICULTY_WHEREAMI=Dificultat
-SING_DIFFICULTY_CONTINUE=a selecció de cançó
-SING_EASY=Fàcil
-SING_MEDIUM=Mitjà
-SING_HARD=Difícil
-
-SING_SONG_SELECTION_DESC=triar cançó
-SING_SONG_SELECTION_WHEREAMI=Selecció de cançons
-SING_SONG_SELECTION_GOTO=Anar a ..
-SING_SONG_SELECTION=selecció de cançons
-SING_SONG_SELECTION_MENU=menú
-SING_SONG_SELECTION_PLAYLIST=llista
+SING_SONG_SELECTION=Selecció de cançons
+SING_SONG_SELECTION_MENU=Menú
+SING_SONG_SELECTION_PLAYLIST=LLista
+SING_SONG_IN_CAT=Cançon
SING_SONGS_IN_CAT=Cançons
PLAYLIST_CATTEXT=Playlist: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=total
-SING_MODE=cantar sol
-SING_NOTES=notes
-SING_GOLDEN_NOTES=notes daurades
-SING_PHRASE_BONUS=bonus de línia
+SING_SONG_SELECTION_LEGEND_TITLE=Llegenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Vídeo
+SING_SONG_SELECTION_LEGEND_MEDLEY=Versió curta
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Versió curta calculada
+SING_SONG_SELECTION_LEGEND_DUET=Duo
+
+SING_TOTAL=Total
+SING_MODE=Cantar sol
+SING_NOTES=Notes
+SING_GOLDEN_NOTES=Notes daurades
+SING_PHRASE_BONUS=Bonus de línia
SING_MENU=Menú principal
-SONG_SCORE=puntuació cançó
+SONG_SCORE=Puntuació cançó
SONG_SCORE_WHEREAMI=Puntuació
SING_SCORE_TONE_DEAF=Sense oïda
@@ -235,28 +333,26 @@ SING_SCORE_LEAD_SINGER=Bon cantant
SING_SCORE_SUPERSTAR=Estrella
SING_SCORE_ULTRASTAR=Super estrella
-SING_TOP_5_CHARTS=millors 5 jugadors
-SING_TOP_5_CHARTS_WHEREAMI=millors 5
-SING_TOP_5_CHARTS_CONTINUE=a selecció de cançó
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=switch difficulty
+SING_TOP_5_CHARTS=Millors 5 jugadors
+SING_TOP_5_CHARTS_WHEREAMI=Millors 5
+SING_TOP_5_CHARTS_CONTINUE=A selecció de cançó
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=perfecte!
-POPUP_AWESOME=genial!
-POPUP_GREAT=molt bo!
-POPUP_GOOD=esta bé!
-POPUP_NOTBAD=pots millorar!
-POPUP_BAD=malament!
-POPUP_POOR=pobre!
-POPUP_AWFUL=boo fora!
+POPUP_PERFECT=Perfecte!
+POPUP_AWESOME=Genial!
+POPUP_GREAT=Molt bo!
+POPUP_GOOD=Esta bé!
+POPUP_NOTBAD=Pots millorar!
+POPUP_BAD=Malament!
+POPUP_POOR=Pobre!
+POPUP_AWFUL=Boo fora!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= i
-SONG_MENU_NAME_MAIN=menú de cançons
+SONG_MENU_NAME_MAIN=Menú de cançons
SONG_MENU_PLAY=Cantar
SONG_MENU_CHANGEPLAYERS=Canviar jugadors
-SONG_MENU_EDIT=Editar
-SONG_MENU_MODI=Cantar un Modi
SONG_MENU_CANCEL=Cancel·lar
SONG_MENU_NAME_PLAYLIST=Menú de cançons
@@ -264,8 +360,8 @@ SONG_MENU_PLAYLIST_ADD=Afegir Cançó
SONG_MENU_PLAYLIST_DEL=Esborrar Cançó
SONG_MENU_NAME_PLAYLIST_ADD=Afegir Song
-SONG_MENU_PLAYLIST_ADD_NEW=a nova llista
-SONG_MENU_PLAYLIST_ADD_EXISTING=a llista existent
+SONG_MENU_PLAYLIST_ADD_NEW=A nova llista
+SONG_MENU_PLAYLIST_ADD_EXISTING=A llista existent
SONG_MENU_PLAYLIST_NOEXISTING=No hi ha llistes
SONG_MENU_NAME_PLAYLIST_NEW=Nova llista
@@ -277,77 +373,67 @@ SONG_MENU_YES=Si
SONG_MENU_NO=No
SONG_MENU_NAME_PLAYLIST_LOAD=Obrir llista
-SONG_MENU_PLAYLIST_LOAD=obrir
-SONG_MENU_PLAYLIST_DELCURRENT=esborrar llista
+SONG_MENU_PLAYLIST_LOAD=Obrir
+SONG_MENU_PLAYLIST_DELCURRENT=Esborrar llista
SONG_MENU_NAME_PLAYLIST_DEL=Esborrar llista?
SONG_MENU_NAME_PARTY_MAIN=Menú festa
SONG_MENU_JOKER=Comodí
-SONG_MENU_NAME_PARTY_JOKER=utilitzar comodí
+SONG_MENU_NAME_PARTY_JOKER=Utilitzar comodí
-SONG_JUMPTO_DESC=buscar cançó
+SONG_JUMPTO_DESC=Buscar cançó
SONG_JUMPTO_TYPE_DESC=Buscar:
-SONG_JUMPTO_TYPE1=Tot
-SONG_JUMPTO_TYPE2=Títol
-SONG_JUMPTO_TYPE3=Artista
-SONG_JUMPTO_SONGSFOUND=%d Cançons trobades
-SONG_JUMPTO_NOSONGSFOUND=No s'han trobat cançons
-SONG_JUMPTO_HELP=Introduir text a cercar
-SONG_JUMPTO_CATTEXT=Cercant: %s
-
-PARTY_MODE=mode festa
+
+PARTY_MODE=Mode festa
PARTY_DIFFICULTY=Dificultat
PARTY_PLAYLIST=Mode llista
PARTY_PLAYLIST_ALL=Tot
PARTY_PLAYLIST_CATEGORY=Directori
-PARTY_PLAYLIST_PLAYLIST=llista
+PARTY_PLAYLIST_PLAYLIST=LLista
PARTY_TEAMS=Equips
PARTY_TEAMS_PLAYER1=Player Team1
PARTY_TEAMS_PLAYER2=Player Team2
PARTY_TEAMS_PLAYER3=Player Team3
-PARTY_LEGEND_CONTINUE=continuar
+PARTY_LEGEND_CONTINUE=Continuar
-PARTY_OPTIONS_DESC=opcions mode festa
+PARTY_OPTIONS_DESC=Opcions mode festa
PARTY_OPTIONS_WHEREAMI=Opcions Festa
-PARTY_PLAYER_DESC=introduïr noms de jugadors i equips
-PARTY_PLAYER_WHEREAMI=Noms
-PARTY_PLAYER_ENTER_NAME=introduïr noms
-
+PARTY_PLAYER_ENTER_NAME=Introduïr noms
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
-;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=iniciar festa
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDS_LEGEND_CONTINUE=Iniciar festa
+PARTY_ROUNDCOUNT=Nombre de rondes
+PARTY_SELECTMODE=Rondes %d
-PARTY_ROUND_DESC=següent jugador al micro
-PARTY_ROUND_WHEREAMI=Següent Ronda
-PARTY_ROUND_LEGEND_CONTINUE=iniciar ronda
+PARTY_ROUND_LEGEND_CONTINUE=Iniciar ronda
PARTY_SONG_WHEREAMI=Selecció de cançó mode festa
-PARTY_SONG_LEGEND_CONTINUE=cantar
-PARTY_SONG_MENU=menú festa
+PARTY_SONG_LEGEND_CONTINUE=Cantar
+PARTY_SONG_MENU=Menú festa
-PARTY_SCORE_DESC=puntuació de l'última ronda
+OPTION_VALUE_SING=Cantar
+OPTION_VALUE_SELECT_PLAYERS=Seleccioneu els jugadors
+OPTION_VALUE_OPEN_MENU=Menú obert
+
+PARTY_SCORE_DESC=Puntuació de l'última ronda
PARTY_SCORE_WHEREAMI=Punts mode festa
-PARTY_WIN_DESC=guanyador de la festa
+PARTY_WIN_DESC=Guanyador de la festa
PARTY_WIN_WHEREAMI=Guanyador
-PARTY_WIN_LEGEND_CONTINUE=tornar al menú principal
+PARTY_WIN_LEGEND_CONTINUE=Tornar al menú principal
PARTY_ROUND=Ronda
PARTY_ROUND_WINNER=Guanyador
-PARTY_NOTPLAYEDYET=no s'ha jugat encara
-PARTY_NOBODY=ningú
+PARTY_NOTPLAYEDYET=No s'ha jugat encara
+PARTY_NOBODY=Ningú
NEXT_ROUND=Següent ronda:
PARTY_DISMISSED=Abandona!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=guanya!
+PARTY_SCORE_WINS2=Guanya!
;TODO: MODE_RANDOM_NAME=Random Mode
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -407,8 +493,6 @@ MODE_DUEL_NAME=Duel
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Estadístiques
-STAT_MAIN_DESC=General
-STAT_MAIN_WHEREAMI=Estadístiques
STAT_OVERVIEW_INTRO=%0:s Estadístiques\nÚltima reinicialització %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Cançons(%3:d amb Video), de les que %1:d ya han sonat i %2:d encara no s'han jugat mai.\n La cançó més popular és %5:s de %4:s.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Estadístiques
STAT_NEXT=Següent pàgina
STAT_PREV=Pàgina anterior
STAT_REVERSE=Ordre invers
-STAT_PAGE=%0:d de %1:d Pàgines\n (%2:d de %3:d Entrades)
+STAT_PAGE=%0:d de %1:d Pàgines\n Entrades %2:d de %3:d
STAT_DESC_SCORES=Màximes puntuacions
STAT_DESC_SCORES_REVERSED=Mínimes puntuacions
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Grups més populars
STAT_DESC_BANDS_REVERSED=Grups menys populars
STAT_FORMAT_BANDS=%0:s \n %1:dx Cantades
-;TODO: SCREENSHOT_SAVED=Screenshot saved
-;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
-;TODO: ERROR_FILE_NOT_FOUND=File not found
-
-;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
-
-MSG_ERROR_TITLE=Error
-;TODO: MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Qüestió
-MSG_QUIT_USDX=Realment vols sortir d'UltraStar?
-MSG_END_PARTY=Realment vols sortir del mode festa?
-
-ERROR_NO_SONGS=No hi ha cançons
-ERROR_NO_PLUGINS=No hi ha Plugins
-;TODO: ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
-;TODO: ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
-ERROR_CORRUPT_SONG=No es poden carregar les cançons
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=No es pot carregar: Fitxer no trobat
-ERROR_CORRUPT_SONG_NO_NOTES=No es pot carregar: No s'han trobat notes
-ERROR_CORRUPT_SONG_NO_BREAKS=No es pot carregar: No s'han trobat línies
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=No es pot carregar: Error llegint línia %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Tot
-OPTION_ALL_SCORES=Tot
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Cancel·lar
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Cancel·lar
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
;TODO: PARTY_SELECT_MODE=Mode
;TODO: PARTY_MODE_CLASSIC=Classic
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -561,43 +538,10 @@ SCORE_DOWNLOAD_CANCEL=Cancel·lar
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=següent jugador al micro
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Següent jugador al micro
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
;TODO: JUKEBOX_RANDOM=Random
;TODO: JUKEBOX_REPEAT=Repeat
@@ -609,8 +553,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=següent jugador al micro
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menú de cançons
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Tot
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Resolucị
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Efecte
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Llindar
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
;TODO: SONG_MENU_OPEN_CATEGORY=Open category
@@ -663,60 +578,8 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Llindar
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
-
-SING_OPTIONS_GAME_SONGMENU=Menú de cançons
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=cantar
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+NAME_PLAYERS_COUNT=Nombre de jugadors
+NAME_CURRENT_PLAYER=Jugador
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
-JUKEBOX_OPTIONS_PLAYLIST=llista
-;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
+JUKEBOX_OPTIONS_PLAYLIST=LLista
+JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Tot
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_MAIN=Quant a...
+ABOUT_USDX_DEVELOPEDBY=Desenvolupat per
+ABOUT_CHECK_CHECKING=S'estan cercant noves actualitzacions...
+ABOUT_CHECK_AVAILABLE=Hi ha una nova versió disponible
+ABOUT_CHECK_UPTODATE=WorldParty està actualitzat
+ABOUT_CHECK_CONNECTION=No hi ha connexió a Internet
+ABOUT_OVERVIEW=Descobreix una nova manera de cantar, sol, en parella o amb amics. \n La diversió està garantida.\n\nWorldParty és un fork de la versió original Ultrastar Deluxe 1.1 dissenyat i desenvolupat per l'equip UltraStar España, compta amb la comunitat de karaoke més gran.\n\n\nAquest programa és gratuït i libre sota la llicència GPL. \n\n Visiteu-nos per obtenir més informació.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Desenvolupat per
+DEVELOPERS_OVERVIEW=Persones que han contribuït a aquest projecte:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visiteu-nos per obtenir més informació.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=S'ha desat la captura de pantalla
+;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
+
+MSG_ERROR_TITLE=Error
+;TODO: MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Qüestió
+MSG_QUIT_USDX=Realment vols sortir d'UltraStar?
+MSG_END_PARTY=Realment vols sortir del mode festa?
+
+ERROR_NO_SONGS=No hi ha cançons
+ERROR_NO_PLUGINS=No hi ha Plugins
+;TODO: ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=No es poden carregar les cançons
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=No es pot carregar: Fitxer no trobat
+ERROR_CORRUPT_SONG_NO_NOTES=No es pot carregar: No s'han trobat notes
+ERROR_CORRUPT_SONG_NO_BREAKS=No es pot carregar: No s'han trobat línies
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=No es pot carregar: Error llegint línia %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Jugador %d s'assigna a diversos micròfons. Comproveu les opcions del micròfon.
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Jugador %d no està assignat a un micròfon. Comproveu les opcions del micròfon.
diff --git a/game/languages/Dansk.ini b/game/languages/Dansk.ini
index ec62b01f..d77f97cd 100644
--- a/game/languages/Dansk.ini
+++ b/game/languages/Dansk.ini
@@ -1,220 +1,318 @@
[Text]
LANGUAGE=Dansk
-OPTION_VALUE_EASY=Let
-OPTION_VALUE_MEDIUM=Normal
-OPTION_VALUE_HARD=Svær
-
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
-
-;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
-OPTION_VALUE_LANGUAGE=Sprog
-OPTION_VALUE_FOLDER=Mappe
-OPTION_VALUE_TITLE=Titel
-OPTION_VALUE_ARTIST=Kunstner
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
-OPTION_VALUE_PLAYLIST=Afspilningsliste
-
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
-
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
-
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
-
-;TODO: OPTION_VALUE_HALF=Half
-;TODO: OPTION_VALUE_FULL_VID=Full (Video)
-;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
-
-;TODO: OPTION_VALUE_GAIN_SOFT=Soft
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
-
-;TODO: OPTION_VALUE_AUTO=Auto
-;TODO: OPTION_VALUE_SEC=Second
-;TODO: OPTION_VALUE_SECS=Seconds
-
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
-
-;TODO: OPTION_VALUE_SIMPLE=Simple
-;TODO: OPTION_VALUE_ZOOM=Zoom
-;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
-;TODO: OPTION_VALUE_SHIFT=Shift
-
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
-
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
-
-OPTION_VALUE_SING=Syng
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
SING_LOADING=Loader...
+SING_LOADING_SONGS=Indlæser sange fra mappe %s
-SING_CHOOSE_MODE=Vælg modus
SING_SING=Syng
SING_SING_DESC=Hurtigt spil: Syng solo eller duet
SING_MULTI=Fest
SING_MULTI_DESC=Syng i fest modus
-SING_TOOLS=Værktøjer
+;TODO: SING_JUKEBOX=Jukebox
+;TODO: SING_JUKEBOX_DESC=Listen to my collection
SING_STATS=stats
SING_STATS_DESC=Se statestikker
-SING_EDITOR=editor
-SING_EDITOR_DESC=Lav dine egne sange
-
SING_GAME_OPTIONS=Spil Indstillinger
SING_GAME_OPTIONS_DESC=Ændre spil Indstillinger
SING_EXIT=Forlad
SING_EXIT_DESC=Forlad spillet
+SING_ABOUT=Om
+SING_ABOUT_DESC=Om Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profiler
+SING_PLAYER_READY=Spillere klar til at synge
+SING_PLAYER_COUNT=Antal spillere
+SING_PLAYER_EDIT=Tilpas en spiller
+SING_PLAYER_NAME=Skriv dit navn
+SING_PLAYER_COLOR=Vælg en farve
+SING_PLAYER_LEVEL=Vælg et niveau
+SING_PLAYER_AVATAR=Vælg din avatar
+
+OPTION_VALUE_EASY=Let
+OPTION_VALUE_MEDIUM=Normal
+OPTION_VALUE_HARD=Svær
+
SING_OPTIONS=Indstillinger
-SING_OPTIONS_DESC=Ændre Instillinger
-SING_OPTIONS_WHEREAMI=Indstillinger
SING_OPTIONS_GAME=Spil
SING_OPTIONS_GRAPHICS=Grafik
SING_OPTIONS_SOUND=Lyd
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Tekster
SING_OPTIONS_THEMES=Temaer
-SING_OPTIONS_RECORD=Optag
+SING_OPTIONS_MICROPHONES=Optag
SING_OPTIONS_ADVANCED=Advanceret
+;TODO: SING_OPTIONS_NETWORK=Internet
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+;TODO: SING_OPTIONS_JUKEBOX=Jukebox
SING_OPTIONS_EXIT=Tilbage
-SING_OPTIONS_GAME_WHEREAMI=Spil Indstillinger
-SING_OPTIONS_GAME_DESC=Generelle Spil Indstillinger
-SING_OPTIONS_GAME_PLAYERS=Spillere
-SING_OPTIONS_GAME_DIFFICULTY=Sværhedsgrad
SING_OPTIONS_GAME_LANGUAGE=Sprog
+SING_OPTIONS_GAME_SONGMENU=Sang Menu
SING_OPTIONS_GAME_TABS=Tabs
SING_OPTIONS_GAME_SORTING=Sorting
-SING_OPTIONS_GAME_DEBUG=Debug
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktiver gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Skakbræt
+OPTION_VALUE_CAROUSEL=Karrusel
+OPTION_VALUE_SLOT_MACHINE=Spilleautomat
+OPTION_VALUE_LIST=Liste
+OPTION_VALUE_MOSAIC=Flise
+
+OPTION_VALUE_ON=På
+OPTION_VALUE_OFF=Af
+
+;TODO: OPTION_VALUE_EDITION=Edition
+;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_LANGUAGE=Sprog
+OPTION_VALUE_FOLDER=Mappe
+OPTION_VALUE_TITLE=Titel
+OPTION_VALUE_ARTIST=Kunstner
+;TODO: OPTION_VALUE_ARTIST2=Artist2
+OPTION_VALUE_YEAR=År
+OPTION_VALUE_DECADE=Årti
+OPTION_VALUE_PLAYLIST=Afspilningsliste
+
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-SING_OPTIONS_GRAPHICS_WHEREAMI=Grafik Indstillinger
-SING_OPTIONS_GRAPHICS_DESC=Grafik Indstillinger
-SING_OPTIONS_GRAPHICS_RESOLUTION=Opløsning
SING_OPTIONS_GRAPHICS_FULLSCREEN=Fuldskærm
-SING_OPTIONS_GRAPHICS_DEPTH=Farve dybte
-;TODO: SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop
-SING_OPTIONS_GRAPHICS_LINEBONUS=Linie Bonus
+SING_OPTIONS_GRAPHICS_RESOLUTION=Opløsning
+SING_OPTIONS_GRAPHICS_SCREENFADE=Skærm Fading
+SING_OPTIONS_GRAPHICS_EFFECTSING=Sang Effekter
+SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisering
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Film Størrelse
-SING_OPTIONS_SOUND_WHEREAMI=Lyd Indstillinger
-SING_OPTIONS_SOUND_DESC=Lyd Indstillinger
-;TODO: SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-;TODO: SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Mikrofon Boost
+;TODO: OPTION_VALUE_BORDERLESS=Borderless
+
+;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
+;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+
+;TODO: OPTION_VALUE_HALF=Half
+;TODO: OPTION_VALUE_FULL_VID=Full (Video)
+;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofon afspilning
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Baggrunds musik
SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist
SING_OPTIONS_SOUND_BEAT_CLICK=Beat click
-SING_OPTIONS_SOUND_THRESHOLD=Tærskel
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2 Spiller modus
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Frosmag Volume
SING_OPTIONS_SOUND_PREVIEWFADING=Forsmag Fader
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+;TODO: OPTION_VALUE_GAIN_SOFT=Soft
+;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
+;TODO: OPTION_VALUE_GAIN_HARD=Hard
+
+;TODO: OPTION_VALUE_AUTO=Auto
+;TODO: OPTION_VALUE_SEC=Second
+;TODO: OPTION_VALUE_SECS=Seconds
-SING_OPTIONS_LYRICS_WHEREAMI=Tekst Indstillinger
-SING_OPTIONS_LYRICS_DESC=Tekst Indstillinger
SING_OPTIONS_LYRICS_FONT=Tekst Type
SING_OPTIONS_LYRICS_EFFECT=Effekt
-SING_OPTIONS_LYRICS_SOLMIZATION=Solmization
;TODO: SING_OPTIONS_LYRICS_NOTELINES=Staves
-SING_OPTIONS_THEMES_WHEREAMI=Tema Indstillinger
-SING_OPTIONS_THEMES_DESC=Tema og Skin Indstillinger
+;TODO: OPTION_VALUE_PLAIN=stylized
+;TODO: OPTION_VALUE_OLINE1=with thin edge
+;TODO: OPTION_VALUE_OLINE2=with thick edge
+
+;TODO: OPTION_VALUE_SIMPLE=Simple
+;TODO: OPTION_VALUE_ZOOM=Zoom
+;TODO: OPTION_VALUE_SLIDE=Slide
+;TODO: OPTION_VALUE_BALL=Ball
+;TODO: OPTION_VALUE_SHIFT=Shift
+
SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Farve
-SING_OPTIONS_RECORD_WHEREAMI=Optagelses Indstillinger
-SING_OPTIONS_RECORD_DESC=Mikrofon Indstillinger
-SING_OPTIONS_RECORD_CARD=Lydkort
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Kanal
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Advancerede Indstillinger
-SING_OPTIONS_ADVANCED_DESC=Advancerede Indstillinger
-SING_OPTIONS_ADVANCED_EFFECTSING=Sang Effekter
-SING_OPTIONS_ADVANCED_SCREENFADE=Skærm Fading
-SING_OPTIONS_ADVANCED_LOADANIMATION=Load Animation
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions
-SING_OPTIONS_ADVANCED_LINEBONUS=Linie Bonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
+SING_OPTIONS_MICROPHONES_CARD=Lydkort
+SING_OPTIONS_MICROPHONES_INPUT=Input
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Tærskel
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikrofon Boost
+
+SING_OPTIONS_ADVANCED_DEBUG=Fejlfinde
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloskop
SING_OPTIONS_ADVANCED_ONSONGCLICK=Efter sang valg
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Savety Questions
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Festmodus
+;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
+;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-SING_EDIT=editor
-SING_EDIT_MENU_DESCRIPTION=Lav dine egne sange
+OPTION_VALUE_ALL=Alle
+;TODO: OPTION_VALUE_PLAYER=Player
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Import text from midi file
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Tilbage
-;TODO: SING_EDIT_BUTTON_CONVERT=Import
-SING_EDIT_BUTTON_EXIT=Tilbage
+;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
+;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Spiller
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
+;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-SING_EDIT_NAVIGATE=Naviger
-SING_EDIT_SELECT=Vælg
-SING_EDIT_EXIT=Tilbage
+OPTION_PLAYER_1=Spiller 1
+OPTION_PLAYER_2=Spiller 2
+OPTION_PLAYER_3=Spiller 3
+OPTION_PLAYER_4=Spiller 4
+OPTION_PLAYER_5=Spiller 5
+OPTION_PLAYER_6=Spiller 6
+OPTION_ALL_PLAYERS=Alle
+OPTION_ALL_SCORES=Alle
+OPTION_VALUE_SAVE=Gemme
+OPTION_VALUE_SEND=Sende
+
+MSG_INSERT_USER_TITLE=%0:s
+;TODO: MSG_INSERT_USER_DESC=Fill the fields:
+;TODO: MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_CANCEL=Annuller
+
+;TODO: WEBSITE_NO_CONNECTION=No website connection!
+;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
+;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
+;TODO: WEBSITE_EXIST_USER=Existing user!
+;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
+;TODO: WEBSITE_OK_SEND=Score sent successfully!
+;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+;TODO: WEBSITE_ERROR_SONG=Song Not Found!
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
+
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
+
+SONG_SCORE_MAX=Bedst:
+SONG_SCORE_MEDIA=Gennemsnit:
+
+;TODO: SCORE_SEND_DESC=Send Score
+;TODO: SCORE_SEND=Send
+;TODO: SCORE_SEND_PLAYER=Player
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
+
+;TODO: SCORE_DOWNLOAD_TITLE=Download
+;TODO: SCORE_DOWNLOAD_SONG=Song:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Annuller
+;TODO: SCORE_DOWNLOAD_OK=OK
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
+
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Opløsning
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Effekt
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
+
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+SING_OPTIONS_WEBCAM_NO_WEBCAM=Ingen Webcam fundet!
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Tærskel
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Gennemsigtighed
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Linje
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farve
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rød
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Grøn
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blå
+
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Størrelse
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
+
+OPTION_VALUE_TO_SING=Syng
+OPTION_VALUE_ACTUAL=Øverst
+OPTION_VALUE_NEXT=Bund
+OPTION_VALUE_OTHER=Andet
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Blå
+OPTION_VALUE_GREEN=Grøn
+OPTION_VALUE_PINK=Lyserød
+OPTION_VALUE_RED=Rød
+;TODO: OPTION_VALUE_VIOLET=Violet
+;TODO: OPTION_VALUE_ORANGE=Orange
+OPTION_VALUE_YELLOW=Gul
+OPTION_VALUE_BROWN=Brun
+OPTION_VALUE_BLACK=Sort
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Grå
+OPTION_VALUE_WHITE=Hvid
+;TODO: OPTION_VALUE_TURQUOISE=Turquoise
+;TODO: OPTION_VALUE_SALMON=Salmon
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+;TODO: OPTION_VALUE_LAVENDER=Lavender
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
+;TODO: OPTION_VALUE_GOLD=Gold
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+;TODO: OPTION_VALUE_SKY=Sky
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
SING_LEGEND_SELECT=Vælg
SING_LEGEND_NAVIGATE=Naviger
SING_LEGEND_CONTINUE=Fortsæt
SING_LEGEND_ESC=Tilbage
-SING_PLAYER_DESC=Skriv Spiller Navn/e
-SING_PLAYER_WHEREAMI=Spiller Navne
-SING_PLAYER_ENTER_NAME=Skriv navn
-
-SING_DIFFICULTY_DESC=Vælg Sværhedsgrad
-SING_DIFFICULTY_WHEREAMI=Sværhedsgrad
-SING_DIFFICULTY_CONTINUE=Til sang valg
-SING_EASY=Let
-SING_MEDIUM=Normal
-SING_HARD=Svær
-
-SING_SONG_SELECTION_DESC=Vælg Din Sang
-SING_SONG_SELECTION_WHEREAMI=Sang Valg
-SING_SONG_SELECTION_GOTO=Gå Til ..
SING_SONG_SELECTION=Sang Valg
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Afspilningsliste
+SING_SONG_IN_CAT=Song
SING_SONGS_IN_CAT=Songs
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legende
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=Total
SING_MODE=Syng Solo
SING_NOTES=Noder
@@ -255,8 +353,6 @@ IMPLODE_GLUE2= og
SONG_MENU_NAME_MAIN=Sang Menu
SONG_MENU_PLAY=Syng
SONG_MENU_CHANGEPLAYERS=Skift Spillere
-SONG_MENU_EDIT=Ændre
-SONG_MENU_MODI=Sing a Modi
SONG_MENU_CANCEL=Annuller
SONG_MENU_NAME_PLAYLIST=Sang Menu
@@ -289,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Brug Jokeren
SONG_JUMPTO_DESC=Søg Sang
SONG_JUMPTO_TYPE_DESC=Søg Efter:
-SONG_JUMPTO_TYPE1=Alle
-SONG_JUMPTO_TYPE2=Titel
-SONG_JUMPTO_TYPE3=Kunstner
-SONG_JUMPTO_SONGSFOUND=%d Sang(e) fundet!
-SONG_JUMPTO_NOSONGSFOUND=Ingen Sange Fundet
-SONG_JUMPTO_HELP=Skriv Teksten Du Vil Søge Efter
-SONG_JUMPTO_CATTEXT=Søg Efter: %s
PARTY_MODE=Fest modus
PARTY_DIFFICULTY=Sværhedsgrad
@@ -313,25 +402,22 @@ PARTY_LEGEND_CONTINUE=Fortsæt
PARTY_OPTIONS_DESC=Indstillinger for Fest spil
PARTY_OPTIONS_WHEREAMI=Fest Indstillinger
-PARTY_PLAYER_DESC=Skriv Spiller of Team Navn!
-PARTY_PLAYER_WHEREAMI=Fest navne
PARTY_PLAYER_ENTER_NAME=Skriv Navne
-
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
-;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
PARTY_ROUNDS_LEGEND_CONTINUE=Start Fest Spil
;TODO: PARTY_ROUNDCOUNT=Number of rounds
;TODO: PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=Næste spillere til mikrofonerne
-PARTY_ROUND_WHEREAMI=Fest Næste runde
PARTY_ROUND_LEGEND_CONTINUE=Start runde
PARTY_SONG_WHEREAMI=Fest Sang-Valg
PARTY_SONG_LEGEND_CONTINUE=Syng
PARTY_SONG_MENU=Fest menu
+OPTION_VALUE_SING=Syng
+;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
+;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
+
PARTY_SCORE_DESC=Sidste Rundes Score
PARTY_SCORE_WHEREAMI=Fest Point
@@ -407,8 +493,6 @@ MODE_BLIND_NAME=Blind Modus
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Statestikker
-STAT_MAIN_DESC=Generelle
-STAT_MAIN_WHEREAMI=Statestikker
STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Detaljerede Statestikker
STAT_NEXT=Næste Side
STAT_PREV=Tidligere Side
STAT_REVERSE=Omvendt Orden
-STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys)
+STAT_PAGE=Seite %0:d of %1:d Pages \n Entries %2:d of %3:d
STAT_DESC_SCORES=HighScore
STAT_DESC_SCORES_REVERSED=LowScore
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Mest Populære Bands
STAT_DESC_BANDS_REVERSED=Mindst Populære Bands
STAT_FORMAT_BANDS=%0:s \n %1:dx Sung
-;TODO: SCREENSHOT_SAVED=Screenshot saved
-;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
-;TODO: ERROR_FILE_NOT_FOUND=File not found
-
-;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
-
-MSG_ERROR_TITLE=Fejl
-;TODO: MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Spørgsmål
-MSG_QUIT_USDX=Vil du virkelig forlade UltraStar?
-MSG_END_PARTY=Vil du virkelig forlade fest Modus?
-
-ERROR_NO_SONGS=Ingen Sange hentet
-ERROR_NO_PLUGINS=Igen Plugins hentet
-;TODO: ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
-;TODO: ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
-ERROR_CORRUPT_SONG=Sangen kunne ikke hentes.
-;TODO: ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
-;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
-;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
-;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Alle
-OPTION_ALL_SCORES=Alle
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Annuller
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Annuller
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
;TODO: PARTY_SELECT_MODE=Mode
;TODO: PARTY_MODE_CLASSIC=Classic
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -565,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Næste spillere til mikrofonerne
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
;TODO: JUKEBOX_RANDOM=Random
;TODO: JUKEBOX_REPEAT=Repeat
@@ -607,10 +551,8 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Næste spillere til mikrofonerne
;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-;TODO: SONG_MENU_SONG=Song
+SONG_MENU_SONG=Sang
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Sang Menu
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Alle
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Opløsning
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Effekt
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Tærskel
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
;TODO: SONG_MENU_OPEN_CATEGORY=Open category
@@ -666,58 +581,6 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Tærskel
;TODO: NAME_PLAYERS_COUNT=Number of Players
;TODO: NAME_CURRENT_PLAYER=Player
-SING_OPTIONS_GAME_SONGMENU=Sang Menu
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Syng
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farve
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
-
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farve
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
JUKEBOX_OPTIONS_PLAYLIST=Afspilningsliste
;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Alle
-;TODO: OPTION_VALUE_PLAYER=Player
+ABOUT_MAIN=Om...
+ABOUT_USDX_DEVELOPEDBY=Udviklet af
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Opdag en ny måde at synge, alene, par eller venner med. \n Sjov er garanteret.\n\nWorldParty er en gaffel af den oprindelige version Ultrastar Deluxe 1.1 designet og udviklet af UltraStar España Team, tæller det med det største karaoke-fællesskab.\n\n\nDette program er gratis og libre under GPL-licensen. \n\n Besøg os for mere information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Udviklet af
+DEVELOPERS_OVERVIEW=Folk der har bidraget til dette projekt:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Besøg os for mere information.\n\nhttps://ultrastar-es.org
+
+;TODO: SCREENSHOT_SAVED=Screenshot saved
+;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
+
+MSG_ERROR_TITLE=Fejl
+;TODO: MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Spørgsmål
+MSG_QUIT_USDX=Vil du virkelig forlade UltraStar?
+MSG_END_PARTY=Vil du virkelig forlade fest Modus?
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ERROR_NO_SONGS=Ingen Sange hentet
+ERROR_NO_PLUGINS=Igen Plugins hentet
+;TODO: ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Sangen kunne ikke hentes.
+;TODO: ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
+;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
+;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
+;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
+;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your microphone options
+;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your microphone options
\ No newline at end of file
diff --git a/game/languages/Deutsch.ini b/game/languages/Deutsch.ini
index 5f14d418..703219b5 100644
--- a/game/languages/Deutsch.ini
+++ b/game/languages/Deutsch.ini
@@ -1,10 +1,71 @@
[Text]
LANGUAGE=Deutsch
+SING_LOADING=Lädt...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
+
+SING_SING=Singen
+SING_SING_DESC=Singen
+
+SING_MULTI=Party
+SING_MULTI_DESC=Rundenbasiertes Teamspiel
+
+SING_JUKEBOX=Jukebox
+SING_JUKEBOX_DESC=Spiele meine Sammlung ab
+
+SING_STATS=Statistiken
+SING_STATS_DESC=Die Statistiken anschauen
+
+SING_GAME_OPTIONS=Spieloptionen
+SING_GAME_OPTIONS_DESC=Verändere die Spieleinstellungen
+
+SING_EXIT=Beenden
+SING_EXIT_DESC=Spiel verlassen
+
+SING_ABOUT=Über
+SING_ABOUT_DESC=Über Utrastar Deluxe WorldParty
+
+;TODO: SING_PLAYER_TITLE=Profiles
+SING_PLAYER_READY=Spieler bereit zum Singen
+SING_PLAYER_COUNT=Anzahl der Spieler
+;TODO: SING_PLAYER_EDIT=Customize a player
+SING_PLAYER_NAME=Schreib deinen Namen
+SING_PLAYER_COLOR=Wähle eine Farbe
+SING_PLAYER_LEVEL=Wähle ein Level
+SING_PLAYER_AVATAR=Wähle deinen Avatar
+
OPTION_VALUE_EASY=Einfach
OPTION_VALUE_MEDIUM=Mittel
OPTION_VALUE_HARD=Schwierig
+SING_OPTIONS=Optionen
+
+SING_OPTIONS_GAME=Spiel
+SING_OPTIONS_GRAPHICS=Grafik
+SING_OPTIONS_SOUND=Sound
+SING_OPTIONS_LYRICS=Lyrics
+SING_OPTIONS_THEMES=Design
+SING_OPTIONS_MICROPHONES=Mikrofone
+SING_OPTIONS_ADVANCED=Erweitert
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_JUKEBOX=Jukebox
+SING_OPTIONS_EXIT=Zurück
+
+SING_OPTIONS_GAME_LANGUAGE=Sprache
+SING_OPTIONS_GAME_SONGMENU=Menü
+SING_OPTIONS_GAME_TABS=Ordner
+SING_OPTIONS_GAME_SORTING=Sortierung
+SING_OPTIONS_GAME_SHOWSCORES=Punktzahl anzeigen
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktiviere das Gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Raster
+OPTION_VALUE_CAROUSEL=Karussell
+OPTION_VALUE_SLOT_MACHINE=Walze
+OPTION_VALUE_LIST=Liste
+OPTION_VALUE_MOSAIC=Kacheln
+
OPTION_VALUE_ON=An
OPTION_VALUE_OFF=Aus
@@ -14,24 +75,37 @@ OPTION_VALUE_LANGUAGE=Sprache
OPTION_VALUE_FOLDER=Ordner
OPTION_VALUE_TITLE=Titel
OPTION_VALUE_ARTIST=Künstler
-OPTION_VALUE_TITLE2=Titel2
OPTION_VALUE_ARTIST2=Künstler2
OPTION_VALUE_YEAR=Jahr
OPTION_VALUE_DECADE=Dekade
OPTION_VALUE_PLAYLIST=Playlist
+OPTION_VALUE_WHEN_EXISTS=Wenn vorhanden
+
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild
+SING_OPTIONS_GRAPHICS_RESOLUTION=Auflösung
+SING_OPTIONS_GRAPHICS_SCREENFADE=Bildschirm-Fade
+SING_OPTIONS_GRAPHICS_EFFECTSING=Singeffekte
+SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisierung
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videogröße
+
OPTION_VALUE_BORDERLESS=Fenster-Vollbild
OPTION_VALUE_WHENNOVIDEO=Wenn kein Video
OPTION_VALUE_WHENNOVIDEOANDIMAGE=Wenn kein Video und kein Bild
-OPTION_VALUE_SMALL=Klein
-OPTION_VALUE_BIG=Groß
-
OPTION_VALUE_HALF=Halb
OPTION_VALUE_FULL_VID=Voll (Video)
OPTION_VALUE_FULL_VID_BG=Voll (HG & Video)
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofon Wiedergabe
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hintergrundmusik
+SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent
+SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click
+SING_OPTIONS_SOUND_MUSICAUTOGAIN=Normalisierung
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Vorschau Lautst.
+SING_OPTIONS_SOUND_PREVIEWFADING=Vorschau Fading
+
OPTION_VALUE_GAIN_SOFT=Sanft
OPTION_VALUE_GAIN_MEDIUM=Medium
OPTION_VALUE_GAIN_HARD=Hart
@@ -40,9 +114,13 @@ OPTION_VALUE_AUTO=Automatisch
OPTION_VALUE_SEC=Sekunde
OPTION_VALUE_SECS=Sekunden
-OPTION_VALUE_PLAIN=Einfach
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+SING_OPTIONS_LYRICS_FONT=Schriftart
+SING_OPTIONS_LYRICS_EFFECT=Effekt
+SING_OPTIONS_LYRICS_NOTELINES=Notenlinien
+
+;TODO: OPTION_VALUE_PLAIN=Stylized
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
OPTION_VALUE_SIMPLE=Einfach
OPTION_VALUE_ZOOM=Vergrößern
@@ -50,171 +128,191 @@ OPTION_VALUE_SLIDE=Rutschen
OPTION_VALUE_BALL=Ball
OPTION_VALUE_SHIFT=Schieben
-OPTION_VALUE_EURO=Europäisch
-OPTION_VALUE_JAPAN=Japanisch
-OPTION_VALUE_AMERICAN=Amerikanisch
-
-OPTION_VALUE_BLUE=Blau
-OPTION_VALUE_GREEN=Grün
-OPTION_VALUE_PINK=Rosa
-OPTION_VALUE_RED=Rot
-OPTION_VALUE_VIOLET=Violett
-OPTION_VALUE_ORANGE=Orange
-OPTION_VALUE_YELLOW=Gelb
-OPTION_VALUE_BROWN=Braun
-OPTION_VALUE_BLACK=Schwarz
-
-OPTION_VALUE_SING=Singen
-OPTION_VALUE_SELECT_PLAYERS=Spieler auswählen
-OPTION_VALUE_OPEN_MENU=Menü öffnen
-
-OPTION_VALUE_SYSTEM_CURSOR=An [Systemzeiger]
-OPTION_VALUE_GAME_CURSOR=An [Spielzeiger]
-OPTION_VALUE_HARDWARE_CURSOR=Hardware Zeiger
-OPTION_VALUE_SOFTWARE_CURSOR=Software Zeiger
-
-SING_LOADING=Lädt...
-
-SING_CHOOSE_MODE=Modus wählen
-SING_SING=Singen
-SING_SING_DESC=Singen
-
-SING_MULTI=Party
-SING_MULTI_DESC=Rundenbasiertes Teamspiel
-
-SING_TOOLS=Werkzeuge
+SING_OPTIONS_THEMES_THEME=Design
+SING_OPTIONS_THEMES_SKIN=Skin
+SING_OPTIONS_THEMES_COLOR=Farbe
-SING_STATS=Statistiken
-SING_STATS_DESC=Die Statistiken anschauen
+SING_OPTIONS_MICROPHONES_CARD=Soundkarte
+SING_OPTIONS_MICROPHONES_INPUT=Eingang
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Rauschunterdr.
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mic-Anhebung
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Erstelle deinen eigenen Song
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oszilloskop
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Nach Songauswahl
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr.
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menü
+SING_OPTIONS_ADVANCED_TOPSCORES=Höchstpunktzahlen
+SING_OPTIONS_ADVANCED_SINGSCORES=Punkte vergeben
-SING_GAME_OPTIONS=Spieloptionen
-SING_GAME_OPTIONS_DESC=Verändere die Spieleinstellungen
+OPTION_VALUE_ALL=Alle
+OPTION_VALUE_PLAYER=Spieler
-SING_EXIT=Beenden
-SING_EXIT_DESC=Spiel verlassen
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Drücke 'Einfügen' um Spieler dem Internet hinzuzufügen.
+SING_OPTIONS_NETWORK_WEBSITE=Webseite
+SING_OPTIONS_NETWORK_USERNAME=Benutzername
+SING_OPTIONS_NETWORK_PASSWORD=Passwort
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Spielername
+SING_OPTIONS_NETWORK_AUTO_MODE=Automatisch
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Spieler
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto Senden (Einfach)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto Senden (Mittel)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto Senden (Schwierig)
+SING_OPTIONS_NETWORK_NO_DLL=Kein kompatibles Ranglisten-Plugin gefunden!
+SING_OPTIONS_NETWORK_DELETE_PLAYER=Spieler %0:s wirklich von der Webseite %1:s löschen?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Einfg
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Entf
-SING_OPTIONS=Optionen
-SING_OPTIONS_DESC=Einstellungen verändern
-SING_OPTIONS_WHEREAMI=Optionen
+OPTION_PLAYER_1=Spieler 1
+OPTION_PLAYER_2=Spieler 2
+OPTION_PLAYER_3=Spieler 3
+OPTION_PLAYER_4=Spieler 4
+OPTION_PLAYER_5=Spieler 5
+OPTION_PLAYER_6=Spieler 6
+OPTION_ALL_PLAYERS=Allem
+OPTION_ALL_SCORES=Allem
+OPTION_VALUE_SAVE=Speichern
+OPTION_VALUE_SEND=Senden
-SING_OPTIONS_GAME=Spiel
-SING_OPTIONS_GRAPHICS=Grafik
-SING_OPTIONS_SOUND=Sound
-SING_OPTIONS_INPUT=Eingabe
-SING_OPTIONS_LYRICS=Lyrics
-SING_OPTIONS_THEMES=Design
-SING_OPTIONS_RECORD=Aufnahme
-SING_OPTIONS_ADVANCED=Erweitert
-SING_OPTIONS_EXIT=zurück
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Felder eintragen:
+MSG_INSERT_USER_ADD=Hinzufügen
+MSG_INSERT_USER_CANCEL=Abbrechen
-SING_OPTIONS_GAME_WHEREAMI=Spieloptionen
-SING_OPTIONS_GAME_DESC=Allgemeine Spieleinstellungen
-SING_OPTIONS_GAME_PLAYERS=Spieler
-SING_OPTIONS_GAME_DIFFICULTY=Schwierigkeit
-SING_OPTIONS_GAME_LANGUAGE=Sprache
-SING_OPTIONS_GAME_TABS=Ordner
-SING_OPTIONS_GAME_SORTING=Sortierung
-SING_OPTIONS_GAME_DEBUG=Debug
+WEBSITE_NO_CONNECTION=Keine Verbindung zu Webseite!
+WEBSITE_LOGIN_ERROR=Login nicht richtig!
+WEBSITE_BLANK_LOGIN=Es sind leere Felder vorhanden!
+WEBSITE_EXIST_USER=Benutzer existiert bereits!
+WEBSITE_ERROR_SCORE=Fehler bei Punktzahlübertragung!
+WEBSITE_OK_SEND=Punktzahl erfolgreich übermittelt!
+WEBSITE_ERROR_SCORE_DUPLICATED=Punktzahl bereits vorhanden!
+WEBSITE_ERROR_SONG=Song nicht gefunden!
+WEBSITE_SAVE_SCORE=Punktzahl erfolgreich gesichert!
+WEBSITE_NO_CONNECTION_SAVE=Keine Verbindung zur Webseite! Benutzer trotzdem sichern?
-SING_OPTIONS_GRAPHICS_WHEREAMI=Grafikoptionen
-SING_OPTIONS_GRAPHICS_DESC=Grafikeinstellungen
-SING_OPTIONS_GRAPHICS_RESOLUTION=Auflösung
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild
-SING_OPTIONS_GRAPHICS_DEPTH=Farbtiefe
-SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisierung
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oszilloskop
-SING_OPTIONS_GRAPHICS_LINEBONUS=Phrasenbonus
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videogröße
+SONG_MENU_REFRESH_SCORES=Punktzahl aktualisieren
+SONG_MENU_REFRESH_SCORES_TITLE=Aktualisieren
+SONG_MENU_REFRESH_SCORES_NO_WEB=Es sind keine Webseiten eingetragen!
+SONG_MENU_REFRESH_SCORES_ONLINE=Online
+SONG_MENU_REFRESH_SCORES_FILE=Datei
+SONG_MENU_REFRESH_SCORES_ALL_WEB=Alle Webseiten
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Alle Songs
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Diesen Song
+SONG_MENU_REFRESH_SCORES_REFRESH=Update
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Fehler beim Verbindungsaufbau zur Webseite: %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=Datei nicht gefunden: '%0:s [Download Scores]'!
-SING_OPTIONS_SOUND_WHEREAMI=Soundoptionen
-SING_OPTIONS_SOUND_DESC=Soundeinstellungen
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofon Wiedergabe
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hintergrundmusik
-SING_OPTIONS_SOUND_MIC_BOOST=Mic-Anhebung
-SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent
-SING_OPTIONS_SOUND_BEAT_CLICK=Beat-Click
-SING_OPTIONS_SOUND_THRESHOLD=Rauschunterdr.
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spieler-Modus
-SING_OPTIONS_SOUND_MUSICAUTOGAIN=Normalisierung
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Vorschau Lautst.
-SING_OPTIONS_SOUND_PREVIEWFADING=Vorschau Fading
+SONG_SCORE_MAX=Beste:
+SONG_SCORE_MEDIA=Durchschnitt:
-SING_OPTIONS_INPUT_WHEREAMI=Eingabeeinstellungen
-SING_OPTIONS_INPUT_DESC=Eingabeeinstellungen
-SING_OPTIONS_INPUT_MOUSE=Maus
-SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller Support
+SCORE_SEND_DESC=Punktzahl hochladen
+SCORE_SEND=Senden
+SCORE_SEND_PLAYER=Spieler
+SCORE_SEND_OTHER_USER=Anderer Spielername
+SCORE_SAVE=Speichern
-SING_OPTIONS_LYRICS_WHEREAMI=Lyricsoptionen
-SING_OPTIONS_LYRICS_DESC=Einstellungen für die Lyrics
-SING_OPTIONS_LYRICS_FONT=Schriftart
-SING_OPTIONS_LYRICS_EFFECT=Effekt
-SING_OPTIONS_LYRICS_SOLMIZATION=Solmisation
-SING_OPTIONS_LYRICS_NOTELINES=Notenlinien
+SCORE_DOWNLOAD_TITLE=Download
+SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_CREATE_LIST=Liste aufbauen...
+SCORE_DOWNLOAD_RECEIVE_LIST=Herunterladend...
+SCORE_DOWNLOAD_CANCEL=Abbrechen
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=%0:d Song(s) sind von der Webseite verschieden!
-SING_OPTIONS_THEMES_WHEREAMI=Designoptionen
-SING_OPTIONS_THEMES_DESC=Design und Skineinstellungen
-SING_OPTIONS_THEMES_THEME=Design
-SING_OPTIONS_THEMES_SKIN=Skin
-SING_OPTIONS_THEMES_COLOR=Farbe
+SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Auflösung
+SING_OPTIONS_WEBCAM_FPS=Bildfrequenz
+SING_OPTIONS_WEBCAM_FLIP=Drehen
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Helligkeit
+SING_OPTIONS_WEBCAM_SATURATION=Sättigung
+SING_OPTIONS_WEBCAM_HUE=Farbton
+SING_OPTIONS_WEBCAM_EFFECT=Effekt
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
-SING_OPTIONS_RECORD_WHEREAMI=Aufnahmeoptionen
-SING_OPTIONS_RECORD_DESC=Mikrofoneinstellungen
-SING_OPTIONS_RECORD_CARD=Soundkarte
-SING_OPTIONS_RECORD_INPUT=Eingang
-SING_OPTIONS_RECORD_CHANNEL=Kanal
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Erweiterte Optionen
-SING_OPTIONS_ADVANCED_DESC=Erweiterte Einstellungen
-SING_OPTIONS_ADVANCED_EFFECTSING=Singeffekte
-SING_OPTIONS_ADVANCED_SCREENFADE=Bildschirm-Fade
-SING_OPTIONS_ADVANCED_LOADANIMATION=Lade-Animation
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sicherheitsabfr.
-SING_OPTIONS_ADVANCED_LINEBONUS=Phrasenbonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=Nach Songauswahl
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Party-Menü
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Vorschau aktivieren
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Vorschau deaktivieren
+SING_OPTIONS_WEBCAM_NO_WEBCAM=Keine Webcam gefunden!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Graustufen
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Schwarz & Weiß
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negativ
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binärbild
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilatieren
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Schwellenwert
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Kanten
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Weichzeichnen
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Ausgegleichen
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erodieren
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Erstelle deinen eigenen Song
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparenz
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Phrase
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Art
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farbe
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rot
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Grün
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blau
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Midi/Kar-Datei in Text exportieren
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=zurück
-SING_EDIT_BUTTON_CONVERT=Importieren
-SING_EDIT_BUTTON_EXIT=zurück
+JUKEBOX_SONGOPTIONS_VIDEO=Video Optionen
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Bildformat
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Breite
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Höhe
+JUKEBOX_SONGOPTIONS_LYRIC=Lyricsoptionen
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Größe
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-SING_EDIT_NAVIGATE=Navigieren
-SING_EDIT_SELECT=Auswählen
-SING_EDIT_EXIT=zurück
+OPTION_VALUE_TO_SING=Singen
+OPTION_VALUE_ACTUAL=Aktuelle
+OPTION_VALUE_NEXT=Nächste
+OPTION_VALUE_OTHER=Other
+OPTION_VALUE_FILL=Füllung
+OPTION_VALUE_OUTLINE=Umriss
+OPTION_VALUE_BLUE=Blau
+OPTION_VALUE_GREEN=Grün
+OPTION_VALUE_PINK=Rosa
+OPTION_VALUE_RED=Rot
+OPTION_VALUE_VIOLET=Violett
+OPTION_VALUE_ORANGE=Orange
+OPTION_VALUE_YELLOW=Gelb
+OPTION_VALUE_BROWN=Braun
+OPTION_VALUE_BLACK=Schwarz
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Grau
+OPTION_VALUE_WHITE=Weiß
+OPTION_VALUE_TURQUOISE=Türkis
+OPTION_VALUE_SALMON=Lachsfarben
+OPTION_VALUE_GREENYELLOW=Grüngelb
+OPTION_VALUE_LAVENDER=Lavendel
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Blaugrün
+OPTION_VALUE_ORCHID=Orchidee
+OPTION_VALUE_STEELBLUE=Stahlblau
+OPTION_VALUE_PLUM=Pflaume
+OPTION_VALUE_CHOCOLATE=Schokolade
+OPTION_VALUE_GOLD=Gold
+OPTION_VALUE_DARKBLUE=Dunkelblau
+OPTION_VALUE_SKY=Himmelblau
+OPTION_VALUE_HARLEQUIN=Harlekin
+OPTION_VALUE_CYAN=Cyan
+OPTION_VALUE_FLAME=Flamme
SING_LEGEND_SELECT=Auswählen
SING_LEGEND_NAVIGATE=Navigieren
SING_LEGEND_CONTINUE=Weiter
-SING_LEGEND_ESC=zurück
-
-SING_PLAYER_DESC=Spielernamen eingeben.
-SING_PLAYER_WHEREAMI=Spielernamen
-SING_PLAYER_ENTER_NAME=Namen eingeben
-
-SING_DIFFICULTY_DESC=Schwierigkeitsgrad auswählen
-SING_DIFFICULTY_WHEREAMI=Schwierigkeitsgrad
-SING_DIFFICULTY_CONTINUE=zur Song-Auswahl
-SING_EASY=Einfach
-SING_MEDIUM=Mittel
-SING_HARD=Schwierig
-
-SING_SONG_SELECTION_DESC=Wähle deinen Song
-SING_SONG_SELECTION_WHEREAMI=Song-Auswahl
-SING_SONG_SELECTION_GOTO=Gehe zu ..
+SING_LEGEND_ESC=Zurück
+
SING_SONG_SELECTION=Song-Auswahl
SING_SONG_SELECTION_MENU=Menü
SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Song
SING_SONGS_IN_CAT=Songs
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legende
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duett
-SING_TIME=ZEIT
SING_TOTAL=Gesamt
SING_MODE=Singmodus
SING_NOTES=Noten
@@ -255,8 +353,6 @@ IMPLODE_GLUE2= und
SONG_MENU_NAME_MAIN=Menü
SONG_MENU_PLAY=Singen
SONG_MENU_CHANGEPLAYERS=Spieler wechseln
-SONG_MENU_EDIT=Editor
-SONG_MENU_MODI=Einen Modus singen
SONG_MENU_CANCEL=Abbrechen
SONG_MENU_NAME_PLAYLIST=Menü
@@ -289,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Joker einsetzen
SONG_JUMPTO_DESC=Song suchen
SONG_JUMPTO_TYPE_DESC=Suchen in:
-SONG_JUMPTO_TYPE1=Allem
-SONG_JUMPTO_TYPE2=Titel
-SONG_JUMPTO_TYPE3=Artist
-SONG_JUMPTO_SONGSFOUND=%d Song(s) gefunden
-SONG_JUMPTO_NOSONGSFOUND=Keinen Song gefunden
-SONG_JUMPTO_HELP=Suchtext eingeben
-SONG_JUMPTO_CATTEXT=Suche nach: %s
PARTY_MODE=Party-Modus
PARTY_DIFFICULTY=Schwierigkeit
@@ -308,30 +397,27 @@ PARTY_TEAMS_PLAYER1=Spieleranzahl
PARTY_TEAMS_PLAYER2=Spieleranzahl
PARTY_TEAMS_PLAYER3=Spieleranzahl
-PARTY_LEGEND_CONTINUE=weiter
+PARTY_LEGEND_CONTINUE=Weiter
PARTY_OPTIONS_DESC=Einstellungen für das Partyspiel.
PARTY_OPTIONS_WHEREAMI=Party Optionen
-PARTY_PLAYER_DESC=Team- und Spielernamen eingeben.
-PARTY_PLAYER_WHEREAMI=Party Spielernamen
PARTY_PLAYER_ENTER_NAME=Namen eingeben
-
-PARTY_ROUNDS_DESC= Wähle welche Modi du spielen möchtest
-PARTY_ROUNDS_WHEREAMI=Party Runden
PARTY_ROUNDS_LEGEND_CONTINUE=Partyspiel starten
PARTY_ROUNDCOUNT=Anzahl der Runden
PARTY_SELECTMODE=Runde %d
-PARTY_ROUND_DESC=Die nächsten Spieler an die Mikros!
-PARTY_ROUND_WHEREAMI=Party nächste Runde
PARTY_ROUND_LEGEND_CONTINUE=Runde starten
PARTY_SONG_WHEREAMI=Party Song-Auswahl
PARTY_SONG_LEGEND_CONTINUE=Singen
PARTY_SONG_MENU=Party-Menü
+OPTION_VALUE_SING=Singen
+OPTION_VALUE_SELECT_PLAYERS=Spieler auswählen
+OPTION_VALUE_OPEN_MENU=Menü öffnen
+
PARTY_SCORE_DESC=Punkte der letzten Runde.
PARTY_SCORE_WHEREAMI=Party Punkte
@@ -347,7 +433,7 @@ NEXT_ROUND=Nächste Runde:
PARTY_DISMISSED=Ausgeschieden!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=hat gewonnen!
+PARTY_SCORE_WINS2=Hat gewonnen!
MODE_RANDOM_NAME= zufälliger Modus
MODE_RANDOM_DESC=Sei gespannt! Das Spiel entscheidet zufällige Spiel-Modi für euch.
@@ -407,8 +493,6 @@ MODE_HARDCORE_NAME=Hardcore
MODE_HARDCORE_DESC=Umkämpfe eine Führung über 3 Phrasen hinweg und siege!
STAT_MAIN=Statistiken
-STAT_MAIN_DESC=Allgemein
-STAT_MAIN_WHEREAMI=Statistiken
STAT_OVERVIEW_INTRO=%0:s Statistiken. \n Letzter Reset am %1:.2d.%2:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Songs (%3:d mit Video), davon wurden bereits %1:d gesungen, andere %2:d noch nicht.\nDer am häufigsten gesungene Song ist:\n"%5:s" von %4:s.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Detaillierte Statistiken
STAT_NEXT=Nächste Seite
STAT_PREV=Vorherige Seite
STAT_REVERSE=Umkehren
-STAT_PAGE=Seite %0:d von %1:d\n(%2:d von %3:d Einträgen)
+STAT_PAGE=Seite %0:d von %1:d \n Einträgen %2:d von %3:d
STAT_DESC_SCORES=Höchstpunktzahl
STAT_DESC_SCORES_REVERSED=Niedrigste Punktzahl
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Beliebteste Bands
STAT_DESC_BANDS_REVERSED=Unbeliebteste Bands
STAT_FORMAT_BANDS=%0:s\nGesungene Songs: %1:d
-SCREENSHOT_SAVED=Bildschirmfoto gesichert
-SCREENSHOT_FAILED=Konnte Bildschirmfoto nicht sichern
-
-INFO_FILE_SAVED=Datei gesichert
-ERROR_SAVE_FILE_FAILED=Konnte Datei nicht sichern
-ERROR_FILE_NOT_FOUND=Datei nicht gefunden
-
-ENCODING_ERROR_ASK_FOR_UTF8=Änderungen können nicht in der aktuellen Kodierung gesichert werden. Nach UTF-8 konvertieren?
-EDITOR_ERROR_NO_TRACK_SELECTED=Keine Spur ausgewählt
-
-MSG_ERROR_TITLE=Fehler
-MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Frage
-MSG_QUIT_USDX=UltraStar wirklich beenden?
-MSG_END_PARTY=Party-Modus wirklich beenden?
-
-ERROR_NO_SONGS=Keine Songs vorhanden.
-ERROR_NO_PLUGINS=Keine Plugins vorhanden.
-ERROR_NO_MODES_FOR_CURRENT_SETUP=Es sind keine Modi für die aktuellen Spieler und/oder Teameinstellungen vorhanden
-ERROR_CAN_NOT_START_PARTY= Ein Fehler ist beim Starten des Partyspiels aufgetreten
-ERROR_CORRUPT_SONG=Song konnte nicht geladen werden.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song konnte nicht geladen werden: Datei wurde nicht gefunden.
-ERROR_CORRUPT_SONG_NO_NOTES=Song konnte nicht geladen werden: Es wurden keine Noten gefunden.
-ERROR_CORRUPT_SONG_NO_BREAKS=Song konnte nicht geladen werden: Es wurden keine Satzwechsel gefunden.
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song konnte nicht geladen werden: Fehler beim Einlesen der Zeile %0:d
-ERROR_NO_EDITOR=Diese Funktion ist unter Linux/Mac noch nicht verfügbar
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Mehrere Mikrofone für Spieler %d gewählt.\nAufnahmeoptionen überprüfen.
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Kein Mikrofon für Spieler %d gewählt.\nAufnahmeoptionen überprüfen.
-
-SING_OPTIONS_NETWORK=Internet
-SING_OPTIONS_NETWORK_WHEREAMI=Interneteinstellungen
-SING_OPTIONS_NETWORK_DESC=Allgemeine Netzwerk- und Interneteinstellungen
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Drücke 'Einfügen' um Spieler dem Internet hinzuzufügen.
-SING_OPTIONS_NETWORK_WEBSITE=Webseite
-SING_OPTIONS_NETWORK_USERNAME=Benutzername
-SING_OPTIONS_NETWORK_PASSWORD=Passwort
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Spielername
-SING_OPTIONS_NETWORK_AUTO_MODE=Automatisch
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Spieler
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto Senden (Einfach)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto Senden (Mittel)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto Senden (Schwierig)
-SING_OPTIONS_NETWORK_NO_DLL=Kein kompatibles Ranglisten-Plugin gefunden!
-SING_OPTIONS_NETWORK_DELETE_PLAYER=Spieler %0:s wirklich von der Webseite %1:s löschen?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Einfg
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Entf
-
-OPTION_PLAYER_1=Spieler 1
-OPTION_PLAYER_2=Spieler 2
-OPTION_PLAYER_3=Spieler 3
-OPTION_PLAYER_4=Spieler 4
-OPTION_PLAYER_5=Spieler 5
-OPTION_PLAYER_6=Spieler 6
-OPTION_ALL_PLAYERS=Allem
-OPTION_ALL_SCORES=Allem
-OPTION_VALUE_SAVE=Speichern
-OPTION_VALUE_SEND=Senden
-
-MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC=Felder eintragen:
-MSG_INSERT_USER_ADD=Hinzufügen
-MSG_INSERT_USER_CANCEL=Abbrechen
-
-WEBSITE_NO_CONNECTION=Keine Verbindung zu Webseite!
-WEBSITE_LOGIN_ERROR=Login nicht richtig!
-WEBSITE_BLANK_LOGIN=Es sind leere Felder vorhanden!
-WEBSITE_EXIST_USER=Benutzer existiert bereits!
-WEBSITE_ERROR_SCORE=Fehler bei Punktzahlübertragung!
-WEBSITE_OK_SEND=Punktzahl erfolgreich übermittelt!
-WEBSITE_ERROR_SCORE_DUPLICATED=Punktzahl bereits vorhanden!
-WEBSITE_ERROR_SONG=Song nicht gefunden!
-WEBSITE_SAVE_SCORE=Punktzahl erfolgreich gesichert!
-WEBSITE_NO_CONNECTION_SAVE=Keine Verbindung zur Webseite! Benutzer trotzdem sichern?
-
-SONG_MENU_REFRESH_SCORES=Punktzahl aktualisieren
-SONG_MENU_REFRESH_SCORES_TITLE=Aktualisieren
-SONG_MENU_REFRESH_SCORES_NO_WEB=Es sind keine Webseiten eingetragen!
-SONG_MENU_REFRESH_SCORES_ONLINE=Online
-SONG_MENU_REFRESH_SCORES_FILE=Datei
-SONG_MENU_REFRESH_SCORES_ALL_WEB=Alle Webseiten
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=Alle Songs
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=Diesen Song
-SONG_MENU_REFRESH_SCORES_REFRESH=Update
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Fehler beim Verbindungsaufbau zur Webseite: %0:s!
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=Datei nicht gefunden: '%0:s [Download Scores]'!
-
-SONG_SCORE_MAX=Beste:
-SONG_SCORE_MEDIA=Durchschnitt:
-
-SCORE_SEND_DESC=Punktzahl hochladen
-SCORE_SEND=Senden
-SCORE_SEND_PLAYER=Spieler
-SCORE_SEND_OTHER_USER=Anderer Spielername
-SCORE_SAVE=Speichern
-
-SCORE_DOWNLOAD_TITLE=Download
-SCORE_DOWNLOAD_SONG=Song:
-SCORE_DOWNLOAD_CREATE_LIST=Liste aufbauen...
-SCORE_DOWNLOAD_RECEIVE_LIST=Herunterladend...
-SCORE_DOWNLOAD_CANCEL=Abbrechen
-SCORE_DOWNLOAD_OK=OK
-SCORE_DOWNLOAD_SONG_UPDATE=%0:d Song(s) sind von der Webseite verschieden!
-
-SING_OPTIONS_GAME_SHOWSCORES=Punktzahl anzeigen
-OPTION_VALUE_WHEN_EXISTS=Wenn vorhanden
-
PARTY_SELECT_MODE=Modus
PARTY_MODE_CLASSIC=Standard
PARTY_MODE_CLASSIC_FREE=Standard (freie Auswahl)
PARTY_MODE_CHALLENGE=Wettkampf
PARTY_MODE_TOURNAMENT=Turnier
PARTY_MODE_JUKEBOX=Jukebox
-PARTY_MODE_NOT_AVAILABLE=Nicht verfügbar!
PARTY_MODE_TOURNAMENT_PLAYER_DESC=Spieleranzahl und Spieler angeben
PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Anzahl der Spieler
@@ -565,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Die nächsten Spieler an die Mikros!
PARTY_MODE_TOURNAMENT_WIN_DESC=Rundenergebnis
PARTY_MODE_TOURNAMENT_CHAMPION=Der Champion ist: %0:s!
-EDIT_TITLE=Titel:
-EDIT_ARTIST=Interpret:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Cover:
-EDIT_BACKGROUND=Hintergrund:
-
-EDIT_START=Start:
-EDIT_DURATION=Laufzeit:
-EDIT_TONE=Note:
-EDIT_LYRIC=Lyric:
-EDIT_VIDEOGAP=Video-Versatz:
-EDIT_VOLUME_AUDIO=Musik Lautstärke
-EDIT_VOLUME_MIDI=Midi Lautstärke
-EDIT_VOLUME_CLICK=Takt Lautstärke
-INFO_UNDO=Letzte Änderung rückgängig
-
-INFO_FILE_SAVED=Datei gesichert
-INFO_TIME_FIXED=Zeiteinteilung korrigiert
-INFO_CAPITALIZE=Großschreibung korrigiert
-INFO_EXIT=Möchtest du den Editor ohne zu Speichern wirklich verlassen?
-INFO_SONG_RELOADED=Song erneut geladen
-INFO_DIVIDED_BPM=BPM halbiert
-INFO_MULTIPLIED_BPM=BPM verdoppelt
-INFO_PLAY_SONG=Spiele Song...
-INFO_PLAY_SENTENCE=Spiele Phrase...
-INFO_CURRENT_LINE=Phrase
-INFO_CURRENT_NOTE=Note:
-
-INFO_MIDI_CHANNEL_OFF=Kanal %0:s aus!
-INFO_MIDI_CHANNEL_RESET=Alle Kanäle an!
-
MSG_END_JUKEBOX=Möchtest du den Jukebox Modus verlassen?
JUKEBOX_RANDOM=Zufallsmodus
JUKEBOX_REPEAT=Wiederholen
@@ -609,8 +553,6 @@ SING_ERROR_DUET_MODE_PARTY =Duett! Ist im Party Modus nicht spielbar!
SONG_MENU_SONG=Song
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Sortieren
-SONG_MENU_EXTRA=Extras
SONG_MENU_NAME_SONG=Song Menü
SONG_MENU_NAME_MEDLEY=Medley Menü
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Alles
SONG_MENU_SORTING_DUET=DuettScores
SONG_MENU_SORTING_APPLY=Anwenden
-SING_OPTIONS_WEBCAM=Webcam
-SING_OPTIONS_WEBCAM_DESC=Verändere Webcam Einstellungen
-SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Einstellungen
-SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Auflösung
-SING_OPTIONS_WEBCAM_FPS=Bildfrequenz
-SING_OPTIONS_WEBCAM_NO_WEBCAM=Keine Webcam gefunden!
-SING_OPTIONS_WEBCAM_FLIP=Drehen
-SING_OPTIONS_WEBCAM_EFFECT=Effekt
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Helligkeit
-SING_OPTIONS_WEBCAM_SATURATION=Sättigung
-SING_OPTIONS_WEBCAM_HUE=Farbton
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Vorschau aktivieren
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Vorschau deaktivieren
-
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Graustufen
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Schwarz & Weiß
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negativ
-SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binärbild
-SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilatieren
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Schwellenwert
-SING_OPTIONS_WEBCAM_EFFECT_EDGES=Kanten
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Weichzeichnen
-SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Ausgegleichen
-SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erodieren
-
PARTY_PLAYLIST_MANUAL=Manuelle Auswahl
PARTY_MODE_JUKEBOX_NO_SONGS=Playlist ist leer!
SONG_MENU_OPEN_CATEGORY=Kategorie öffnen
@@ -666,58 +581,6 @@ WEBSITE_NOT_EXIST_SONG=Dieser Song ist keiner Webseite zugeordnet!
NAME_PLAYERS_COUNT=Anzahl der Spieler
NAME_CURRENT_PLAYER=Spieler
-SING_OPTIONS_GAME_SONGMENU=Menü
-OPTION_VALUE_ROULETTE=Roulette
-OPTION_VALUE_CHESSBOARD=Raster
-OPTION_VALUE_CAROUSEL=Karussell
-OPTION_VALUE_SLOT_MACHINE=Walze
-OPTION_VALUE_LIST=Liste
-OPTION_VALUE_MOSAIC=Kacheln
-
-SING_OPTIONS_JUKEBOX=Jukebox
-SING_OPTIONS_JUKEBOX_DESC=Verändere Jukebox Einstellungen
-SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Einstellungen
-
-OPTION_VALUE_TO_SING=Singen
-OPTION_VALUE_ACTUAL=Aktuelle
-OPTION_VALUE_NEXT=Nächste
-OPTION_VALUE_OTHER=Other
-OPTION_VALUE_FILL=Füllung
-OPTION_VALUE_OUTLINE=Umriss
-OPTION_VALUE_GRAY=Grau
-OPTION_VALUE_WHITE=Weiß
-OPTION_VALUE_TURQUOISE=Türkis
-OPTION_VALUE_SALMON=Lachsfarben
-OPTION_VALUE_GREENYELLOW=Grüngelb
-OPTION_VALUE_LAVENDER=Lavendel
-OPTION_VALUE_BEIGE=Beige
-OPTION_VALUE_TEAL=Blaugrün
-OPTION_VALUE_ORCHID=Orchidee
-OPTION_VALUE_STEELBLUE=Stahlblau
-OPTION_VALUE_PLUM=Pflaume
-OPTION_VALUE_CHOCOLATE=Schokolade
-OPTION_VALUE_GOLD=Gold
-OPTION_VALUE_DARKBLUE=Dunkelblau
-OPTION_VALUE_SKY=Himmelblau
-OPTION_VALUE_HARLEQUIN=Harlekin
-OPTION_VALUE_CYAN=Cyan
-OPTION_VALUE_FLAME=Flamme
-
-JUKEBOX_SONGOPTIONS_VIDEO=Video Optionen
-JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Bildformat
-JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Breite
-JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Höhe
-JUKEBOX_SONGOPTIONS_LYRIC=Lyricsoptionen
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Größe
-JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparenz
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farbe
-JUKEBOX_SONGOPTIONS_LYRIC_LINE=Phrase
-JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Art
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rot
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Grün
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blau
-
JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Füllen
JUKEBOX_SONGOPTIONS_VIDEO_CROP=Zuschneiden
JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=Balken
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_CLOSE=Schließen
JUKEBOX_SONGOPTIONS_DEFAULT=Werkseinstellung
JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Gesichert!
-SING_SONG_CREDITS=Credits
-SING_JUKEBOX=Jukebox
-SING_JUKEBOX_DESC=Spiele meine Sammlung ab
JUKEBOX_MODE=Jukebox Modus
-JUKEBOX_OPTIONS_DESC=Playlist Optionen
-JUKEBOX_OPTIONS_WHEREAMI=Jukebox Optionen
JUKEBOX_OPTIONS_PLAYLIST=Playlist
JUKEBOX_OPTIONS_PLAYLIST_MODE=Playlist Modus
-SING_OPTIONS_ADVANCED_SINGSCORES=Punkte vergeben
-SING_OPTIONS_ADVANCED_TOPSCORES=Höchstpunktzahlen
-OPTION_VALUE_ALL=Alle
-OPTION_VALUE_PLAYER=Spieler
-
-SING_ABOUT=Über
-SING_ABOUT_DESC=Über Utrastar Deluxe
ABOUT_MAIN=Über...
-ABOUT_MAIN_DESC=Ultrastar Deluxe
-ABOUT_MAIN_WHEREAMI=Erfahre etwas über...
-ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_USDX_DEVELOPEDBY=Entwickelt von
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Entwickelt von
+DEVELOPERS_OVERVIEW=Menschen, die zu diesem Projekt beigetragen haben:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Besuchen Sie uns für weitere Informationen.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Bildschirmfoto gesichert
+SCREENSHOT_FAILED=Konnte Bildschirmfoto nicht sichern
+
+MSG_ERROR_TITLE=Fehler
+MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Frage
+MSG_QUIT_USDX=UltraStar wirklich beenden?
+MSG_END_PARTY=Party-Modus wirklich beenden?
+
+ERROR_NO_SONGS=Keine Songs vorhanden.
+ERROR_NO_PLUGINS=Keine Plugins vorhanden.
+ERROR_LOADING_SONGS=Warten Sie, bis alle Songs geladen sind
+ERROR_CORRUPT_SONG=Song konnte nicht geladen werden.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song konnte nicht geladen werden: Datei wurde nicht gefunden.
+ERROR_CORRUPT_SONG_NO_NOTES=Song konnte nicht geladen werden: Es wurden keine Noten gefunden.
+ERROR_CORRUPT_SONG_NO_BREAKS=Song konnte nicht geladen werden: Es wurden keine Satzwechsel gefunden.
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song konnte nicht geladen werden: Fehler beim Einlesen der Zeile %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Mehrere Mikrofone für Spieler %d gewählt.\nÜberprüfen Sie Ihre Mikrofonoptionen.
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Kein Mikrofon für Spieler %d gewählt.\nÜberprüfen Sie Ihre Mikrofonoptionen.
\ No newline at end of file
diff --git a/game/languages/English.ini b/game/languages/English.ini
index d1191719..002b7169 100644
--- a/game/languages/English.ini
+++ b/game/languages/English.ini
@@ -1,87 +1,17 @@
[Text]
LANGUAGE=English
-OPTION_VALUE_EASY=Easy
-OPTION_VALUE_MEDIUM=Medium
-OPTION_VALUE_HARD=Hard
-
-OPTION_VALUE_ON=On
-OPTION_VALUE_OFF=Off
-
-OPTION_VALUE_EDITION=Edition
-OPTION_VALUE_GENRE=Genre
-OPTION_VALUE_LANGUAGE=Language
-OPTION_VALUE_FOLDER=Folder
-OPTION_VALUE_TITLE=Title
-OPTION_VALUE_ARTIST=Artist
-OPTION_VALUE_TITLE2=Title2
-OPTION_VALUE_ARTIST2=Artist2
-OPTION_VALUE_YEAR=Year
-OPTION_VALUE_DECADE=Decade
-OPTION_VALUE_PLAYLIST=Playlist
-
-OPTION_VALUE_BORDERLESS=Borderless
-
-OPTION_VALUE_WHENNOVIDEO=When No Video
-OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
-
-OPTION_VALUE_SMALL=Small
-OPTION_VALUE_BIG=Big
-
-OPTION_VALUE_HALF=Half
-OPTION_VALUE_FULL_VID=Full (Video)
-OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
-
-OPTION_VALUE_GAIN_SOFT=Soft
-OPTION_VALUE_GAIN_MEDIUM=Medium
-OPTION_VALUE_GAIN_HARD=Hard
-
-OPTION_VALUE_AUTO=Auto
-OPTION_VALUE_SEC=Second
-OPTION_VALUE_SECS=Seconds
-
-OPTION_VALUE_PLAIN=Plain
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
-
-OPTION_VALUE_SIMPLE=Simple
-OPTION_VALUE_ZOOM=Zoom
-OPTION_VALUE_SLIDE=Slide
-OPTION_VALUE_BALL=Ball
-OPTION_VALUE_SHIFT=Shift
-
-OPTION_VALUE_EURO=Euro
-OPTION_VALUE_JAPAN=Japan
-OPTION_VALUE_AMERICAN=American
-
-OPTION_VALUE_BLUE=Blue
-OPTION_VALUE_GREEN=Green
-OPTION_VALUE_PINK=Pink
-OPTION_VALUE_RED=Red
-OPTION_VALUE_VIOLET=Violet
-OPTION_VALUE_ORANGE=Orange
-OPTION_VALUE_YELLOW=Yellow
-OPTION_VALUE_BROWN=Brown
-OPTION_VALUE_BLACK=Black
-OPTION_VALUE_MAGENTA=Magenta
-
-OPTION_VALUE_SING=Sing
-OPTION_VALUE_SELECT_PLAYERS=Select Players
-OPTION_VALUE_OPEN_MENU=Open Menu
-
-
SING_LOADING=Loading...
-SING_LOADING_CHECK_FOLDER=Searching songs on folder %s
-SING_LOADING_FINISH=Load finished. ¡Sing!
+SING_LOADING_SONGS=Loading songs from folder %s
-SING_CHOOSE_MODE=Choose Mode
SING_SING=Sing
-SING_SING_DESC=sing solo or duet
+SING_SING_DESC=Sing solo or duet
SING_MULTI=Party
SING_MULTI_DESC=Sing in party-mode
-SING_TOOLS=Tools
+SING_JUKEBOX=Jukebox
+SING_JUKEBOX_DESC=Listen to my collection
SING_STATS=Stats
SING_STATS_DESC=View the statistics
@@ -92,107 +22,285 @@ SING_GAME_OPTIONS_DESC=Change game settings
SING_EXIT=Quit
SING_EXIT_DESC=Quit game
+SING_ABOUT=About
+SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profiles
+SING_PLAYER_READY=Players ready to sing
+SING_PLAYER_COUNT=Number of players
+SING_PLAYER_EDIT=Customize a player
+SING_PLAYER_NAME=Write your name
+SING_PLAYER_COLOR=Pick a color
+SING_PLAYER_LEVEL=Choose a level
+SING_PLAYER_AVATAR=Select your avatar
+
+OPTION_VALUE_EASY=Easy
+OPTION_VALUE_MEDIUM=Medium
+OPTION_VALUE_HARD=Hard
+
SING_OPTIONS=Options
-SING_OPTIONS_DESC=Change settings
-SING_OPTIONS_WHEREAMI=Options
SING_OPTIONS_GAME=Game
SING_OPTIONS_GRAPHICS=Graphics
SING_OPTIONS_SOUND=Sound
SING_OPTIONS_LYRICS=Lyrics
SING_OPTIONS_THEMES=Themes
-SING_OPTIONS_RECORD=Record
+SING_OPTIONS_MICROPHONES=Microphones
SING_OPTIONS_ADVANCED=Advanced
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_JUKEBOX=Jukebox
SING_OPTIONS_EXIT=Back
-SING_OPTIONS_GAME_WHEREAMI=Options Game
-SING_OPTIONS_GAME_DESC=General game settings
-SING_OPTIONS_GAME_PLAYERS=Players
-SING_OPTIONS_GAME_DIFFICULTY=Difficulty
SING_OPTIONS_GAME_LANGUAGE=Language
+SING_OPTIONS_GAME_SONGMENU=Song Menu
SING_OPTIONS_GAME_TABS=Tabs
SING_OPTIONS_GAME_SORTING=Sorting
-SING_OPTIONS_GAME_JOYPAD_SUPPORT=Controller support
+SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activate gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Chessboard
+OPTION_VALUE_CAROUSEL=Carousel
+OPTION_VALUE_SLOT_MACHINE=Slot Machine
+OPTION_VALUE_LIST=List
+OPTION_VALUE_MOSAIC=Tile
+
+OPTION_VALUE_ON=On
+OPTION_VALUE_OFF=Off
+
+OPTION_VALUE_EDITION=Edition
+OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_LANGUAGE=Language
+OPTION_VALUE_FOLDER=Folder
+OPTION_VALUE_TITLE=Title
+OPTION_VALUE_ARTIST=Artist
+OPTION_VALUE_ARTIST2=Artist2
+OPTION_VALUE_YEAR=Year
+OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_PLAYLIST=Playlist
+
+OPTION_VALUE_WHEN_EXISTS=When Exists
-SING_OPTIONS_GRAPHICS_WHEREAMI=Options Graphics
-SING_OPTIONS_GRAPHICS_DESC=Graphic settings
-SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution
SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen
-SING_OPTIONS_GRAPHICS_EFFECTSING=Sing Effects
+SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution
SING_OPTIONS_GRAPHICS_SCREENFADE=Screen Fading
-SING_OPTIONS_GRAPHICS_LOADANIMATION=Load Animation
+SING_OPTIONS_GRAPHICS_EFFECTSING=Sing Effects
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size
-SING_OPTIONS_SOUND_WHEREAMI=Options Sound
-SING_OPTIONS_SOUND_DESC=Sound settings
+OPTION_VALUE_BORDERLESS=Borderless
+
+OPTION_VALUE_WHENNOVIDEO=When No Video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+
+OPTION_VALUE_HALF=Half
+OPTION_VALUE_FULL_VID=Full (Video)
+OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Mic boost
SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist
SING_OPTIONS_SOUND_BEAT_CLICK=Beat click
-SING_OPTIONS_SOUND_THRESHOLD=Threshold
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode
SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview Volume
SING_OPTIONS_SOUND_PREVIEWFADING=Preview Fading
-SING_OPTIONS_LYRICS_WHEREAMI=Options Lyrics
-SING_OPTIONS_LYRICS_DESC=Lyrics settings
+OPTION_VALUE_GAIN_SOFT=Soft
+OPTION_VALUE_GAIN_MEDIUM=Medium
+OPTION_VALUE_GAIN_HARD=Hard
+
+OPTION_VALUE_AUTO=Auto
+OPTION_VALUE_SEC=Second
+OPTION_VALUE_SECS=Seconds
+
SING_OPTIONS_LYRICS_FONT=Font
SING_OPTIONS_LYRICS_EFFECT=Effect
-SING_OPTIONS_LYRICS_SOLMIZATION=Solmization
SING_OPTIONS_LYRICS_NOTELINES=Staves
-SING_OPTIONS_THEMES_WHEREAMI=Options Themes
-SING_OPTIONS_THEMES_DESC=Theme and Skin settings
+OPTION_VALUE_PLAIN=Stylized
+OPTION_VALUE_OLINE1=With thin edge
+OPTION_VALUE_OLINE2=With thick edge
+
+OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_ZOOM=Zoom
+OPTION_VALUE_SLIDE=Slide
+OPTION_VALUE_BALL=Ball
+OPTION_VALUE_SHIFT=Shift
+
SING_OPTIONS_THEMES_THEME=Theme
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Color
-SING_OPTIONS_RECORD_WHEREAMI=Options Record
-SING_OPTIONS_RECORD_DESC=Microphone settings
-SING_OPTIONS_RECORD_CARD=Soundcard
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Channel
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Options Advanced
-SING_OPTIONS_ADVANCED_DESC=Advanced settings
+SING_OPTIONS_MICROPHONES_CARD=Soundcard
+SING_OPTIONS_MICROPHONES_INPUT=Input
+SING_OPTIONS_MICROPHONES_CHANNEL=Channel
+SING_OPTIONS_MICROPHONES_THRESHOLD=Threshold
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mic boost
SING_OPTIONS_ADVANCED_DEBUG=Debug
SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscope
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Safety Questions
-SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=After Song Select
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Safety Questions
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
+SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
+SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
+
+OPTION_VALUE_ALL=All
+OPTION_VALUE_PLAYER=Player
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Username
+SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
+
+OPTION_PLAYER_1=Player 1
+OPTION_PLAYER_2=Player 2
+OPTION_PLAYER_3=Player 3
+OPTION_PLAYER_4=Player 4
+OPTION_PLAYER_5=Player 5
+OPTION_PLAYER_6=Player 6
+OPTION_ALL_PLAYERS=All
+OPTION_ALL_SCORES=All
+OPTION_VALUE_SAVE=Save
+OPTION_VALUE_SEND=Send
+
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Fill the fields:
+MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_CANCEL=Cancel
+
+WEBSITE_NO_CONNECTION=No website connection!
+WEBSITE_LOGIN_ERROR=Login Incorrect!
+WEBSITE_BLANK_LOGIN=There are blank fields!
+WEBSITE_EXIST_USER=Existing user!
+WEBSITE_ERROR_SCORE=Scoring Error!
+WEBSITE_OK_SEND=Score sent successfully!
+WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+WEBSITE_ERROR_SONG=Song Not Found!
+WEBSITE_SAVE_SCORE=Score save successfully!
+WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
+
+SONG_MENU_REFRESH_SCORES=Update Scores
+SONG_MENU_REFRESH_SCORES_TITLE=Update
+SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+SONG_MENU_REFRESH_SCORES_ONLINE=Online
+SONG_MENU_REFRESH_SCORES_FILE=File
+SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+SONG_MENU_REFRESH_SCORES_REFRESH=Update
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
+
+SONG_SCORE_MAX=Best:
+SONG_SCORE_MEDIA=Average:
+
+SCORE_SEND_DESC=Send Score
+SCORE_SEND=Send
+SCORE_SEND_PLAYER=Player
+SCORE_SEND_OTHER_USER= Other Username
+SCORE_SAVE=Save
+
+SCORE_DOWNLOAD_TITLE=Download
+SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Cancel
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
+
+SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Resolution
+SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FLIP=Flip
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Effect
+SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Threshold
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+
+JUKEBOX_SONGOPTIONS_VIDEO=Video Options
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
+
+OPTION_VALUE_TO_SING=Sing
+OPTION_VALUE_ACTUAL=Actual
+OPTION_VALUE_NEXT=Next
+OPTION_VALUE_OTHER=Other
+OPTION_VALUE_FILL=Fill
+OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Blue
+OPTION_VALUE_GREEN=Green
+OPTION_VALUE_PINK=Pink
+OPTION_VALUE_RED=Red
+OPTION_VALUE_VIOLET=Violet
+OPTION_VALUE_ORANGE=Orange
+OPTION_VALUE_YELLOW=Yellow
+OPTION_VALUE_BROWN=Brown
+OPTION_VALUE_BLACK=Black
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Gray
+OPTION_VALUE_WHITE=White
+OPTION_VALUE_TURQUOISE=Turquoise
+OPTION_VALUE_SALMON=Salmon
+OPTION_VALUE_GREENYELLOW=GreenYellow
+OPTION_VALUE_LAVENDER=Lavender
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Teal
+OPTION_VALUE_ORCHID=Orchid
+OPTION_VALUE_STEELBLUE=Steel Blue
+OPTION_VALUE_PLUM=Plum
+OPTION_VALUE_CHOCOLATE=Chocolate
+OPTION_VALUE_GOLD=Gold
+OPTION_VALUE_DARKBLUE=Dark Blue
+OPTION_VALUE_SKY=Sky
+OPTION_VALUE_HARLEQUIN=Harlequin
+OPTION_VALUE_CYAN=Cyan
+OPTION_VALUE_FLAME=Flame
SING_LEGEND_SELECT=Select
SING_LEGEND_NAVIGATE=Navigate
SING_LEGEND_CONTINUE=Continue
SING_LEGEND_ESC=Back
-SING_PLAYER_TITLE=Profiles
-SING_PLAYER_READY=Players ready to sing
-SING_PLAYER_COUNT=Number of players
-SING_PLAYER_EDIT=Customize a player
-SING_PLAYER_NAME=Write your name
-SING_PLAYER_COLOR=Pick a color
-SING_PLAYER_LEVEL=Choose a level
-SING_PLAYER_AVATAR=Select your avatar
-
-SING_DIFFICULTY_DESC=Select difficulty
-SING_DIFFICULTY_WHEREAMI=Difficulty
-SING_DIFFICULTY_CONTINUE=To song selection
-SING_EASY=Easy
-SING_MEDIUM=Medium
-SING_HARD=Hard
-
-SING_SONG_SELECTION_DESC=Choose your song
-SING_SONG_SELECTION_WHEREAMI=Song Selection
-SING_SONG_SELECTION_GOTO=Go to ..
SING_SONG_SELECTION=Song selection
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Playlist
@@ -230,14 +338,14 @@ SING_TOP_5_CHARTS_WHEREAMI=Top 5
SING_TOP_5_CHARTS_CONTINUE=To song selection
SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=perfect!
-POPUP_AWESOME=awesome!
-POPUP_GREAT=great!
-POPUP_GOOD=good!
-POPUP_NOTBAD=not bad!
-POPUP_BAD=bad!
-POPUP_POOR=poor!
-POPUP_AWFUL=awful!
+POPUP_PERFECT=Perfect!
+POPUP_AWESOME=Awesome!
+POPUP_GREAT=Great!
+POPUP_GOOD=Good!
+POPUP_NOTBAD=Not bad!
+POPUP_BAD=Bad!
+POPUP_POOR=Poor!
+POPUP_AWFUL=Awful!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= and
@@ -245,8 +353,6 @@ IMPLODE_GLUE2= and
SONG_MENU_NAME_MAIN=Song menu
SONG_MENU_PLAY=Sing
SONG_MENU_CHANGEPLAYERS=Change Players
-SONG_MENU_EDIT=Edit
-SONG_MENU_MODI=Sing a Modi
SONG_MENU_CANCEL=Cancel
SONG_MENU_NAME_PLAYLIST=Song Menu
@@ -279,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Take joker
SONG_JUMPTO_DESC=Search song
SONG_JUMPTO_TYPE_DESC=Search for:
-SONG_JUMPTO_TYPE1=All
-SONG_JUMPTO_TYPE2=Title
-SONG_JUMPTO_TYPE3=Artist
-SONG_JUMPTO_SONGSFOUND=%d Song(s) found
-SONG_JUMPTO_NOSONGSFOUND=No Song found
-SONG_JUMPTO_HELP=Type Text to Search for
-SONG_JUMPTO_CATTEXT=Search for: %s
PARTY_MODE=Party mode
PARTY_DIFFICULTY=Difficulty
@@ -303,25 +402,22 @@ PARTY_LEGEND_CONTINUE=Continue
PARTY_OPTIONS_DESC=Settings for the party-game
PARTY_OPTIONS_WHEREAMI=Party Options
-PARTY_PLAYER_DESC=Enter player- and teamnames!
-PARTY_PLAYER_WHEREAMI=Party Names
PARTY_PLAYER_ENTER_NAME=Enter names
-
-PARTY_ROUNDS_DESC=Select which modes you want to play
-PARTY_ROUNDS_WHEREAMI=Party Rounds
PARTY_ROUNDS_LEGEND_CONTINUE=Start party-game
PARTY_ROUNDCOUNT=Number of rounds
PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=Next players to the mics
-PARTY_ROUND_WHEREAMI=Party Next Round
PARTY_ROUND_LEGEND_CONTINUE=Start round
PARTY_SONG_WHEREAMI=Party Song-Selection
PARTY_SONG_LEGEND_CONTINUE=Sing
PARTY_SONG_MENU=Party menu
+OPTION_VALUE_SING=Sing
+OPTION_VALUE_SELECT_PLAYERS=Select Players
+OPTION_VALUE_OPEN_MENU=Open Menu
+
PARTY_SCORE_DESC=Score of the last round
PARTY_SCORE_WHEREAMI=Party Points
@@ -397,8 +493,6 @@ MODE_HARDCORE_NAME=Hardcore
MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Statistics
-STAT_MAIN_DESC=General
-STAT_MAIN_WHEREAMI=Statistics
STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s.
@@ -412,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Detail Statistics
STAT_NEXT=Next Page
STAT_PREV=Previous Page
STAT_REVERSE=Reverse Order
-STAT_PAGE=Page %0:d of %1:d pages\n (%2:d of %3:d Entrys)
+STAT_PAGE=Page %0:d of %1:d \n Entries %2:d of %3:d
STAT_DESC_SCORES=HighScores
STAT_DESC_SCORES_REVERSED=LowScores
@@ -430,121 +524,12 @@ STAT_DESC_BANDS=Most popular Bands
STAT_DESC_BANDS_REVERSED=Least popular Bands
STAT_FORMAT_BANDS=%0:s \n %1:dx Sung
-SCREENSHOT_SAVED=Screenshot saved
-SCREENSHOT_FAILED=Couldn''t save screenshot
-
-INFO_FILE_SAVED=File saved
-ERROR_SAVE_FILE_FAILED=Couldn''t save file
-ERROR_FILE_NOT_FOUND=File not found
-
-ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
-
-MSG_ERROR_TITLE=Error
-MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Question
-MSG_QUIT_USDX=Really leave UltraStar?
-MSG_END_PARTY=Really leave Party Mode?
-
-ERROR_NO_SONGS=No Songs loaded
-ERROR_NO_PLUGINS=No Plugins loaded
-ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
-ERROR_LOADING_SONGS=Wait to finish songs loading
-ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
-ERROR_CORRUPT_SONG=Song could not be loaded.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
-ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
-ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-ERROR_DUETS_NOT_EDITABLE=Duet songs are currently not editable.
-ERROR_NO_EDITOR=This feature is not available on this version.
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-SING_OPTIONS_NETWORK=Internet
-SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-SING_OPTIONS_NETWORK_DESC=Internet General Settings
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-SING_OPTIONS_NETWORK_WEBSITE=Website
-SING_OPTIONS_NETWORK_USERNAME=Username
-SING_OPTIONS_NETWORK_PASSWORD=Password
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-OPTION_PLAYER_1=Player 1
-OPTION_PLAYER_2=Player 2
-OPTION_PLAYER_3=Player 3
-OPTION_PLAYER_4=Player 4
-OPTION_PLAYER_5=Player 5
-OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=All
-OPTION_ALL_SCORES=All
-OPTION_VALUE_SAVE=Save
-OPTION_VALUE_SEND=Send
-
-MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC=Fill the fields:
-MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Cancel
-
-WEBSITE_NO_CONNECTION=No website connection!
-WEBSITE_LOGIN_ERROR=Login Incorrect!
-WEBSITE_BLANK_LOGIN=There are blank fields!
-WEBSITE_EXIST_USER=Existing user!
-WEBSITE_ERROR_SCORE=Scoring Error!
-WEBSITE_OK_SEND=Score sent successfully!
-WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-WEBSITE_ERROR_SONG=Song Not Found!
-WEBSITE_SAVE_SCORE=Score save successfully!
-WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-SONG_MENU_REFRESH_SCORES=Update Scores
-SONG_MENU_REFRESH_SCORES_TITLE=Update
-SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-SONG_MENU_REFRESH_SCORES_ONLINE=Online
-SONG_MENU_REFRESH_SCORES_FILE=File
-SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-SONG_MENU_REFRESH_SCORES_REFRESH=Update
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-SONG_SCORE_MAX=Best:
-SONG_SCORE_MEDIA=Average:
-
-SCORE_SEND_DESC=Send Score
-SCORE_SEND=Send
-SCORE_SEND_PLAYER=Player
-SCORE_SEND_OTHER_USER= Other Username
-SCORE_SAVE=Save
-
-SCORE_DOWNLOAD_TITLE=Download
-SCORE_DOWNLOAD_SONG=Song:
-SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Cancel
-SCORE_DOWNLOAD_OK=OK
-SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-OPTION_VALUE_WHEN_EXISTS=When Exists
-
PARTY_SELECT_MODE=Mode
PARTY_MODE_CLASSIC=Classic
PARTY_MODE_CLASSIC_FREE=Classic Free
PARTY_MODE_CHALLENGE=Challenge
PARTY_MODE_TOURNAMENT=Tournament
PARTY_MODE_JUKEBOX=Jukebox
-PARTY_MODE_NOT_AVAILABLE=Not Available!
PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -557,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Next players to the mics
PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-EDIT_TITLE=Title:
-EDIT_ARTIST=Artist:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Cover:
-EDIT_BACKGROUND=Background:
-
-EDIT_START=Start:
-EDIT_DURATION=Duration:
-EDIT_TONE=Tone:
-EDIT_LYRIC=Lyric:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Audio Volume:
-EDIT_VOLUME_MIDI=Midi Volume:
-EDIT_VOLUME_CLICK=Click Volume:
-INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=File saved
-INFO_TIME_FIXED=Timings corrected
-INFO_CAPITALIZE=Capitalization corrected
-INFO_EXIT=Do you want to leave editor without saving ?
-INFO_SONG_RELOADED=Song reloaded
-INFO_DIVIDED_BPM=BPM Divided by 2
-INFO_MULTIPLIED_BPM=BPM Multiplied by 2
-INFO_PLAY_SONG=Play song
-INFO_PLAY_SENTENCE=Play sentence
-INFO_CURRENT_LINE=Line:
-INFO_CURRENT_NOTE=Note:
-
-INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-INFO_MIDI_CHANNEL_RESET= All channels on!
-
MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
JUKEBOX_RANDOM=Random
JUKEBOX_REPEAT=Repeat
@@ -601,8 +553,6 @@ SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
SONG_MENU_SONG=Song
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Sort
-SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Song Menu
SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -618,34 +568,6 @@ SONG_MENU_SORTING_ALL=All
SONG_MENU_SORTING_DUET=Duets
SONG_MENU_SORTING_APPLY=Apply
-SING_OPTIONS_WEBCAM=Webcam
-SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Resolution
-SING_OPTIONS_WEBCAM_FPS=FPS
-SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Effect
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-SING_OPTIONS_WEBCAM_SATURATION=Saturation
-SING_OPTIONS_WEBCAM_HUE=Hue
-SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Threshold
-SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
PARTY_PLAYLIST_MANUAL=Manual Selection
PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
SONG_MENU_OPEN_CATEGORY=Open category
@@ -659,58 +581,6 @@ WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
NAME_PLAYERS_COUNT=Number of Players
NAME_CURRENT_PLAYER=Player
-SING_OPTIONS_GAME_SONGMENU=Song Menu
-OPTION_VALUE_ROULETTE=Roulette
-OPTION_VALUE_CHESSBOARD=Chessboard
-OPTION_VALUE_CAROUSEL=Carousel
-OPTION_VALUE_SLOT_MACHINE=Slot Machine
-OPTION_VALUE_LIST=List
-OPTION_VALUE_MOSAIC=Tile
-
-SING_OPTIONS_JUKEBOX=Jukebox
-SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Sing
-OPTION_VALUE_ACTUAL=Actual
-OPTION_VALUE_NEXT=Next
-OPTION_VALUE_OTHER=Other
-OPTION_VALUE_FILL=Fill
-OPTION_VALUE_OUTLINE=Outline
-OPTION_VALUE_GRAY=Gray
-OPTION_VALUE_WHITE=White
-OPTION_VALUE_TURQUOISE=Turquoise
-OPTION_VALUE_SALMON=Salmon
-OPTION_VALUE_GREENYELLOW=GreenYellow
-OPTION_VALUE_LAVENDER=Lavender
-OPTION_VALUE_BEIGE=Beige
-OPTION_VALUE_TEAL=Teal
-OPTION_VALUE_ORCHID=Orchid
-OPTION_VALUE_STEELBLUE=Steel Blue
-OPTION_VALUE_PLUM=Plum
-OPTION_VALUE_CHOCOLATE=Chocolate
-OPTION_VALUE_GOLD=Gold
-OPTION_VALUE_DARKBLUE=Dark Blue
-OPTION_VALUE_SKY=Sky
-OPTION_VALUE_HARLEQUIN=Harlequin
-OPTION_VALUE_CYAN=Cyan
-OPTION_VALUE_FLAME=Flame
-
-JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
-JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
-
JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
@@ -720,29 +590,37 @@ JUKEBOX_SONGOPTIONS_CLOSE=Close
JUKEBOX_SONGOPTIONS_DEFAULT=Default
JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-SING_SONG_CREDITS=Credits
-SING_JUKEBOX=Jukebox
-SING_JUKEBOX_DESC=Listen to my collection
JUKEBOX_MODE=Jukebox Mode
-JUKEBOX_OPTIONS_DESC=Playlist Options
-JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
JUKEBOX_OPTIONS_PLAYLIST=Playlist
JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=All
-OPTION_VALUE_PLAYER=Player
-
-SING_ABOUT=About
-SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
ABOUT_MAIN=About...
-ABOUT_MAIN_DESC=Ultrastar Deluxe WorldParty
-ABOUT_MAIN_WHEREAMI=About...
-ABOUT_USDX_CREDITS=Credits
ABOUT_USDX_DEVELOPEDBY=Developed by
+ABOUT_CHECK_CHECKING=Checking for new updates...
+ABOUT_CHECK_AVAILABLE=There is a new version available
+ABOUT_CHECK_UPTODATE=WorldParty is up to date
+ABOUT_CHECK_CONNECTION=There is no Internet connection
ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
-
DEVELOPERS_TITLE=Developed by
-DEVELOPERS_OVERVIEW=People who has contribuited to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+DEVELOPERS_OVERVIEW=People who has contributed to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Screenshot saved
+SCREENSHOT_FAILED=Couldn't save screenshot
+
+MSG_ERROR_TITLE=Error
+MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Question
+MSG_QUIT_USDX=Really leave UltraStar?
+MSG_END_PARTY=Really leave Party Mode?
+
+ERROR_NO_SONGS=No Songs loaded
+ERROR_NO_PLUGINS=No Plugins loaded
+ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Song could not be loaded.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
+ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
+ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your microphone options
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your microphone options
diff --git "a/game/languages/Espa\303\261ol.ini" "b/game/languages/Espa\303\261ol.ini"
index bd61e243..b2d31f49 100644
--- "a/game/languages/Espa\303\261ol.ini"
+++ "b/game/languages/Espa\303\261ol.ini"
@@ -1,86 +1,17 @@
[Text]
LANGUAGE=Español
-OPTION_VALUE_EASY=Fácil
-OPTION_VALUE_MEDIUM=Medio
-OPTION_VALUE_HARD=Difícil
-
-OPTION_VALUE_ON=Sí
-OPTION_VALUE_OFF=No
-
-OPTION_VALUE_EDITION=Edición
-OPTION_VALUE_GENRE=Género
-OPTION_VALUE_LANGUAGE=Idioma
-OPTION_VALUE_FOLDER=Carpeta
-OPTION_VALUE_TITLE=Título
-OPTION_VALUE_ARTIST=Artista
-OPTION_VALUE_TITLE2=Título2
-OPTION_VALUE_ARTIST2=Artista2
-OPTION_VALUE_YEAR=Año
-OPTION_VALUE_DECADE=Década
-OPTION_VALUE_PLAYLIST=Lista
-
-OPTION_VALUE_BORDERLESS=Maximizada
-
-OPTION_VALUE_WHENNOVIDEO=Si no hay video
-OPTION_VALUE_WHENNOVIDEOANDIMAGE=Si no hay video ni imagen
-
-OPTION_VALUE_SMALL=Pequeño
-OPTION_VALUE_BIG=Grande
-
-OPTION_VALUE_HALF=Mitad
-OPTION_VALUE_FULL_VID=Completo (video)
-OPTION_VALUE_FULL_VID_BG=Completo (fondo y video)
-
-OPTION_VALUE_GAIN_SOFT=Poca
-OPTION_VALUE_GAIN_MEDIUM=Media
-OPTION_VALUE_GAIN_HARD=Mucha
-
-OPTION_VALUE_AUTO=Auto
-OPTION_VALUE_SEC=Segundo
-OPTION_VALUE_SECS=Segundos
-
-OPTION_VALUE_PLAIN=Estilizada
-OPTION_VALUE_OLINE1=Con borde fino
-OPTION_VALUE_OLINE2=Con borde grueso
-
-OPTION_VALUE_SIMPLE=Simple
-OPTION_VALUE_ZOOM=Acercar
-OPTION_VALUE_SLIDE=Deslizar
-OPTION_VALUE_BALL=Pelotita
-OPTION_VALUE_SHIFT=Saltar
-
-OPTION_VALUE_EURO=Europeo
-OPTION_VALUE_JAPAN=Japonés
-OPTION_VALUE_AMERICAN=Americano
-
-OPTION_VALUE_BLUE=Azul
-OPTION_VALUE_GREEN=Verde
-OPTION_VALUE_PINK=Rosa
-OPTION_VALUE_RED=Rojo
-OPTION_VALUE_VIOLET=Violeta
-OPTION_VALUE_ORANGE=Naranja
-OPTION_VALUE_YELLOW=Amarillo
-OPTION_VALUE_BROWN=Marrón
-OPTION_VALUE_BLACK=Negro
-OPTION_VALUE_MAGENTA=Magenta
-
-OPTION_VALUE_SING=Cantar
-OPTION_VALUE_SELECT_PLAYERS=Elegir jugadores
-OPTION_VALUE_OPEN_MENU=Abrir menú
-
SING_LOADING=Cargando...
-SING_LOADING_CHECK_FOLDER=Buscando canciones en la carpeta %s
-SING_LOADING_FINISH=Carga finalizada. ¡Ya puedes cantar!
+SING_LOADING_SONGS=Cargando canciones de la carpeta %s
-SING_CHOOSE_MODE=Elige
SING_SING=Canta
SING_SING_DESC=Canta solo o acompañado
SING_MULTI=Fiesta
SING_MULTI_DESC=Canta en una fiesta o en grupos
-SING_TOOLS=Utilidades
+SING_JUKEBOX=Reproductor de música
+SING_JUKEBOX_DESC=Escuchar mis canciones
SING_STATS=Estadísticas
SING_STATS_DESC=Ver estadísticas
@@ -91,29 +22,42 @@ SING_GAME_OPTIONS_DESC=Cambia las opciones del juego
SING_EXIT=Salir
SING_EXIT_DESC=Salir del juego
+SING_ABOUT=Acerca de
+SING_ABOUT_DESC=Acerca de Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Perfiles
+SING_PLAYER_READY=Jugadores listos para cantar
+SING_PLAYER_COUNT=Número de jugadores
+SING_PLAYER_EDIT=Edita un jugador
+SING_PLAYER_NAME=Escribe tu nombre
+SING_PLAYER_COLOR=Escoge un color
+SING_PLAYER_LEVEL=Elige un nivel
+SING_PLAYER_AVATAR=Selecciona tu avatar
+
+OPTION_VALUE_EASY=Fácil
+OPTION_VALUE_MEDIUM=Medio
+OPTION_VALUE_HARD=Difícil
+
SING_OPTIONS=Opciones
-SING_OPTIONS_DESC=Cambia las opciones
-SING_OPTIONS_WHEREAMI=Opciones
SING_OPTIONS_GAME=Juego
SING_OPTIONS_GRAPHICS=Gráficos
SING_OPTIONS_SOUND=Sonido
SING_OPTIONS_LYRICS=Letras
SING_OPTIONS_THEMES=Apariencia
-SING_OPTIONS_RECORD=Micrófonos
+SING_OPTIONS_MICROPHONES=Micrófonos
SING_OPTIONS_ADVANCED=Avanzado
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_JUKEBOX=Jukebox
SING_OPTIONS_EXIT=Atrás
-SING_OPTIONS_GAME_WHEREAMI=Opciones del juego
-SING_OPTIONS_GAME_DESC=Cambia las preferencias generales del juego
-SING_OPTIONS_GAME_PLAYERS=Jugadores
-SING_OPTIONS_GAME_DIFFICULTY=Dificultad
SING_OPTIONS_GAME_LANGUAGE=Idioma
+SING_OPTIONS_GAME_SONGMENU=Menú
SING_OPTIONS_GAME_TABS=Mostrar carpetas
SING_OPTIONS_GAME_SORTING=Clasificar por
-SING_OPTIONS_GAME_SONGMENU=Menú
-SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activar gamepad
SING_OPTIONS_GAME_SHOWSCORES=Ver puntuación online
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activar gamepad
OPTION_VALUE_ROULETTE=Ruleta
OPTION_VALUE_CHESSBOARD=Ajedrez
@@ -122,87 +66,245 @@ OPTION_VALUE_SLOT_MACHINE=Máquina tragaperras
OPTION_VALUE_LIST=Lista
OPTION_VALUE_MOSAIC=Baldosas
+OPTION_VALUE_ON=Sí
+OPTION_VALUE_OFF=No
-SING_OPTIONS_GRAPHICS_WHEREAMI=Opciones gráficas
-SING_OPTIONS_GRAPHICS_DESC=Cambia los ajustes de video
+OPTION_VALUE_EDITION=Edición
+OPTION_VALUE_GENRE=Género
+OPTION_VALUE_LANGUAGE=Idioma
+OPTION_VALUE_FOLDER=Carpeta
+OPTION_VALUE_TITLE=Título
+OPTION_VALUE_ARTIST=Artista
+OPTION_VALUE_ARTIST2=Artista2
+OPTION_VALUE_YEAR=Año
+OPTION_VALUE_DECADE=Década
+OPTION_VALUE_PLAYLIST=Lista
+
+OPTION_VALUE_WHEN_EXISTS=Cuando exista
+
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa
SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución
-SING_OPTIONS_GRAPHICS_EFFECTSING=Efectos al cantar
SING_OPTIONS_GRAPHICS_SCREENFADE=Animaciones
-SING_OPTIONS_GRAPHICS_LOADANIMATION=Animación de carga
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa
-SING_OPTIONS_GRAPHICS_DEPTH=Profundidad de color
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efectos al cantar
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualización
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño del video
-SING_OPTIONS_SOUND_WHEREAMI=Opciones de sonido
-SING_OPTIONS_SOUND_DESC=Cambia los ajustes de audio
+OPTION_VALUE_BORDERLESS=Maximizada
+
+OPTION_VALUE_WHENNOVIDEO=Si no hay video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Si no hay video ni imagen
+
+OPTION_VALUE_HALF=Mitad
+OPTION_VALUE_FULL_VID=Completo (video)
+OPTION_VALUE_FULL_VID_BG=Completo (fondo y video)
+
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Escucha tu voz
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Música de fondo
-SING_OPTIONS_SOUND_MIC_BOOST=Potenciar micrófono
SING_OPTIONS_SOUND_CLICK_ASSIST=Clic en notas
SING_OPTIONS_SOUND_BEAT_CLICK=Activar metrónomo
-SING_OPTIONS_SOUND_THRESHOLD=Reducción de ruido
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo 2 jugadores
SING_OPTIONS_SOUND_MUSICAUTOGAIN=Ganancia
SING_OPTIONS_SOUND_PREVIEWVOLUME=Volumen vista previa
SING_OPTIONS_SOUND_PREVIEWFADING=Desvanecer audio
+OPTION_VALUE_GAIN_SOFT=Poca
+OPTION_VALUE_GAIN_MEDIUM=Media
+OPTION_VALUE_GAIN_HARD=Mucha
+
+OPTION_VALUE_AUTO=Auto
+OPTION_VALUE_SEC=Segundo
+OPTION_VALUE_SECS=Segundos
-SING_OPTIONS_LYRICS_WHEREAMI=Opciones de letras
-SING_OPTIONS_LYRICS_DESC=Cambia la forma en que se ven las canciones
SING_OPTIONS_LYRICS_FONT=Tipografía
SING_OPTIONS_LYRICS_EFFECT=Efecto
-SING_OPTIONS_LYRICS_SOLMIZATION=Solfeo
SING_OPTIONS_LYRICS_NOTELINES=Pentagrama
-SING_OPTIONS_THEMES_WHEREAMI=Opciones de apariencia
-SING_OPTIONS_THEMES_DESC=Cambia la apariencia del juego
+OPTION_VALUE_PLAIN=Estilizada
+OPTION_VALUE_OLINE1=Con borde fino
+OPTION_VALUE_OLINE2=Con borde grueso
+
+OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_ZOOM=Acercar
+OPTION_VALUE_SLIDE=Deslizar
+OPTION_VALUE_BALL=Pelotita
+OPTION_VALUE_SHIFT=Saltar
+
SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Piel
SING_OPTIONS_THEMES_COLOR=Color
-SING_OPTIONS_RECORD_WHEREAMI=Opciones de micrófonos
-SING_OPTIONS_RECORD_DESC=Cambia tus micrófonos
-SING_OPTIONS_RECORD_CARD=Dispositivo de sonido
-SING_OPTIONS_RECORD_INPUT=Entrada
-SING_OPTIONS_RECORD_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_CARD=Dispositivo de sonido
+SING_OPTIONS_MICROPHONES_INPUT=Entrada
+SING_OPTIONS_MICROPHONES_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Reducción de ruido
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Potenciar micrófono
SING_OPTIONS_ADVANCED_DEBUG=Mostrar FPS
SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloscopio
-SING_OPTIONS_ADVANCED_WHEREAMI=Opciones avanzadas
-SING_OPTIONS_ADVANCED_DESC=Opciones avanzadas
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Confirmar al salir
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Al seleccionar canción
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Confirmar al salir
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menú de fiesta
+SING_OPTIONS_ADVANCED_TOPSCORES=Mostrar calificaciones
+SING_OPTIONS_ADVANCED_SINGSCORES=Marcador al cantar
+
+OPTION_VALUE_ALL=Todos los jugadores
+OPTION_VALUE_PLAYER=Jugador actual
+
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Pulsa la tecla "Insert" para añadir un usuario a esta web
+SING_OPTIONS_NETWORK_WEBSITE=Página web
+SING_OPTIONS_NETWORK_USERNAME=Usuario
+SING_OPTIONS_NETWORK_PASSWORD=Contraseña
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Enviar nombre
+SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Jugador
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Puntuación (Fácil)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Puntuación (Medio)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Puntuación (Difícil)
+SING_OPTIONS_NETWORK_NO_DLL=Está usando una versión desactualizada. Visite nuestra web.
+SING_OPTIONS_NETWORK_DELETE_PLAYER=¿De verdad quieres eliminar el usuario %0:s de la web de %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Insertar
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Eliminar
+
+OPTION_PLAYER_1=Jugador 1
+OPTION_PLAYER_2=Jugador 2
+OPTION_PLAYER_3=Jugador 3
+OPTION_PLAYER_4=Jugador 4
+OPTION_PLAYER_5=Jugador 5
+OPTION_PLAYER_6=Jugador 6
+OPTION_ALL_PLAYERS=Todos
+OPTION_ALL_SCORES=Todas
+OPTION_VALUE_SAVE=Guardar
+OPTION_VALUE_SEND=Enviar
+
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC= Rellena los campos:
+MSG_INSERT_USER_ADD=Añadir
+MSG_INSERT_USER_CANCEL=Cancelar
+
+WEBSITE_NO_CONNECTION=¡No hay conexión a la web!
+WEBSITE_LOGIN_ERROR=¡Usuario y contraseña incorrectos!
+WEBSITE_BLANK_LOGIN=¡Las casillas estan en blanco!
+WEBSITE_EXIST_USER=¡El usuario ya existe!
+WEBSITE_ERROR_SCORE=¡Error al enviar la puntuación!
+WEBSITE_OK_SEND=¡Puntuación enviada satisfactoriamente!
+WEBSITE_ERROR_SCORE_DUPLICATED=¡Ya existe la puntuación!
+WEBSITE_ERROR_SONG=¡Canción no encontrada en la web!
+WEBSITE_SAVE_SCORE=Puntuación guardada correctamente
+WEBSITE_NO_CONNECTION_SAVE=No se puede conectar a la web ¿Desea guardar?
+
+SONG_MENU_REFRESH_SCORES=Actualizar puntuación
+SONG_MENU_REFRESH_SCORES_TITLE=Actualización
+SONG_MENU_REFRESH_SCORES_NO_WEB=No hay páginas web
+SONG_MENU_REFRESH_SCORES_ONLINE=En red
+SONG_MENU_REFRESH_SCORES_FILE=Archivo
+SONG_MENU_REFRESH_SCORES_ALL_WEB=Todas las páginas web
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Todas las canciones
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Esta canción
+SONG_MENU_REFRESH_SCORES_REFRESH=Actualizar
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error,no se puede conectar a la web: %0:s
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=No existe el ficheiro '%0:s [Download Scores]'
+
+SONG_SCORE_MAX=Máximo:
+SONG_SCORE_MEDIA=Media:
+
+SCORE_SEND_DESC=Enviar puntuación
+SCORE_SEND=Enviar
+SCORE_SEND_PLAYER=Jugador
+SCORE_SEND_OTHER_USER= Otro nombre de usuario
+SCORE_SAVE=Guardar
+
+SCORE_DOWNLOAD_TITLE=Descargar
+SCORE_DOWNLOAD_SONG=Canción:
+SCORE_DOWNLOAD_CREATE_LIST=Preparando lista...
+SCORE_DOWNLOAD_RECEIVE_LIST=Descargando...
+SCORE_DOWNLOAD_CANCEL=Cancelar
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=Existe %0:d canciones(s) modificadas(s) en la web
+
+SING_OPTIONS_WEBCAM_ID=Cámara
+SING_OPTIONS_WEBCAM_RESOLUTION=Resolución
+SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FLIP=Espejo
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Brillo
+SING_OPTIONS_WEBCAM_SATURATION=Saturación
+SING_OPTIONS_WEBCAM_HUE=Matiz
+SING_OPTIONS_WEBCAM_EFFECT=Efecto
+SING_OPTIONS_WEBCAM_PREVIEW=Activar previsualización
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Sí
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=No
+SING_OPTIONS_WEBCAM_NO_WEBCAM=¡No se ha encontrado ninguna cámara!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Escala de grises
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Blanco y negro
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negativo
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Imagen binaria
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Estirada
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Umbral
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Bordes
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Difuminado Gaussiano
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equilibrada
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erosión
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparencia
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Línea
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Personalizado
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rojo
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Verde
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Azul
+
+JUKEBOX_SONGOPTIONS_VIDEO=Opciones de vídeo
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspecto
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Ancho
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Alto
+JUKEBOX_SONGOPTIONS_LYRIC=Opciones de letra
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Tamaño
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Posición
+
+OPTION_VALUE_TO_SING=Canta
+OPTION_VALUE_ACTUAL=Superior
+OPTION_VALUE_NEXT=Inferior
+OPTION_VALUE_OTHER=Otro
+OPTION_VALUE_FILL=Relleno
+OPTION_VALUE_OUTLINE=Borde
+OPTION_VALUE_BLUE=Azul
+OPTION_VALUE_GREEN=Verde
+OPTION_VALUE_PINK=Rosa
+OPTION_VALUE_RED=Rojo
+OPTION_VALUE_VIOLET=Violeta
+OPTION_VALUE_ORANGE=Naranja
+OPTION_VALUE_YELLOW=Amarillo
+OPTION_VALUE_BROWN=Marrón
+OPTION_VALUE_BLACK=Negro
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Gris
+OPTION_VALUE_WHITE=Blanco
+OPTION_VALUE_TURQUOISE=Turquesa
+OPTION_VALUE_SALMON=Salmón
+OPTION_VALUE_GREENYELLOW=Lima
+OPTION_VALUE_LAVENDER=Lavanda
+OPTION_VALUE_BEIGE=Beis
+OPTION_VALUE_TEAL=Verde azulado
+OPTION_VALUE_ORCHID=Orquídea
+OPTION_VALUE_STEELBLUE=Azul Metálico
+OPTION_VALUE_PLUM=Ciruela
+OPTION_VALUE_CHOCOLATE=Chocolate
+OPTION_VALUE_GOLD=Oro
+OPTION_VALUE_DARKBLUE=Azul Marino
+OPTION_VALUE_SKY=Cielo
+OPTION_VALUE_HARLEQUIN=Arlequín
+OPTION_VALUE_CYAN=Cian
+OPTION_VALUE_FLAME=LLama
SING_LEGEND_SELECT=Seleccionar
SING_LEGEND_NAVIGATE=Navegar
SING_LEGEND_CONTINUE=Continuar
SING_LEGEND_ESC=Atrás
-SING_PLAYER_TITLE=Perfiles
-SING_PLAYER_READY=Jugadores listos para cantar
-SING_PLAYER_COUNT=Número de jugadores
-SING_PLAYER_EDIT=Edita un jugador
-SING_PLAYER_NAME=Escribe tu nombre
-SING_PLAYER_COLOR=Escoge un color
-SING_PLAYER_LEVEL=Elige un nivel
-SING_PLAYER_AVATAR=Selecciona tu avatar
-
-SING_DIFFICULTY_DESC=Selecciona la dificultad
-SING_DIFFICULTY_WHEREAMI=Dificultad
-SING_DIFFICULTY_CONTINUE=Selección de canción
-SING_EASY=Fácil
-SING_MEDIUM=Normal
-SING_HARD=Difícil
-
-SING_SONG_SELECTION_DESC=Elige tu canción
-SING_SONG_SELECTION_WHEREAMI=Elige la canción
-SING_SONG_SELECTION_GOTO=Ir a...
SING_SONG_SELECTION=Selección de canción
SING_SONG_SELECTION_MENU=Menú
SING_SONG_SELECTION_PLAYLIST=Lista
+SING_SONG_IN_CAT=canción
SING_SONGS_IN_CAT=canciones
PLAYLIST_CATTEXT=Lista: %s
SING_SONG_SELECTION_LEGEND_TITLE=Leyenda
@@ -251,8 +353,6 @@ IMPLODE_GLUE2= y
SONG_MENU_NAME_MAIN=Menú canciones
SONG_MENU_PLAY=Cantar esta canción
SONG_MENU_CHANGEPLAYERS=Elegir jugadores
-SONG_MENU_EDIT=Editar
-SONG_MENU_MODI=Cantar una Modi
SONG_MENU_CANCEL=Cancelar
SONG_MENU_NAME_PLAYLIST=Menú canciones
@@ -285,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Gastar comodín
SONG_JUMPTO_DESC=Buscar canción
SONG_JUMPTO_TYPE_DESC=Buscar por:
-SONG_JUMPTO_TYPE1=Todo
-SONG_JUMPTO_TYPE2=Título
-SONG_JUMPTO_TYPE3=Artista
-SONG_JUMPTO_SONGSFOUND=%d resultados
-SONG_JUMPTO_NOSONGSFOUND=0 resultados
-SONG_JUMPTO_HELP=Escribe el texto a buscar
-SONG_JUMPTO_CATTEXT=Buscar por: %s
PARTY_MODE=Modo fiesta
PARTY_DIFFICULTY=Dificultad
@@ -309,25 +402,22 @@ PARTY_LEGEND_CONTINUE=Continuar
PARTY_OPTIONS_DESC=Opciones del modo fiesta
PARTY_OPTIONS_WHEREAMI=Opciones del modo fiesta
-PARTY_PLAYER_DESC=Escribe los nombres de jugadores y equipos
-PARTY_PLAYER_WHEREAMI=Nombre de los equipos
PARTY_PLAYER_ENTER_NAME=Escribe los nombres
-
-PARTY_ROUNDS_DESC=Elige qué modos quieres jugar
-PARTY_ROUNDS_WHEREAMI=Rondas
PARTY_ROUNDS_LEGEND_CONTINUE=Empezar
PARTY_ROUNDCOUNT=Número de rondas
PARTY_SELECTMODE=Ronda %d
-PARTY_ROUND_DESC=Siguientes jugadores
-PARTY_ROUND_WHEREAMI=Siguiente ronda
PARTY_ROUND_LEGEND_CONTINUE=Iniciar ronda
PARTY_SONG_WHEREAMI=Selección de canción
PARTY_SONG_LEGEND_CONTINUE=Cantar
PARTY_SONG_MENU=Menú fiesta
+OPTION_VALUE_SING=Cantar
+OPTION_VALUE_SELECT_PLAYERS=Elegir jugadores
+OPTION_VALUE_OPEN_MENU=Abrir menú
+
PARTY_SCORE_DESC=Puntación de la última ronda
PARTY_SCORE_WHEREAMI=Puntación
@@ -403,8 +493,6 @@ MODE_HARDCORE_NAME=Extremo
MODE_HARDCORE_DESC=Gana quien consiga 3 líneas de ventaja
STAT_MAIN=Estadísticas
-STAT_MAIN_DESC=General
-STAT_MAIN_WHEREAMI=Estadísticas
STAT_OVERVIEW_INTRO=Estadísticas de %0:s\n Desde el %1:.2d/%2:.2d/%3:d
STAT_OVERVIEW_SONG=Hay %0:d canciones (%3:d con vídeo),\n de las cuales %1:d han sido cantadas y %2:d aún no.\n La más popular es %5:s de %4:s.
@@ -418,11 +506,11 @@ STAT_DETAIL_WHEREAMI=Estadísticas detalladas
STAT_NEXT=Siguiente
STAT_PREV=Anterior
STAT_REVERSE=Invertir el orden
-STAT_PAGE=Página %0:d de %1:d \n (%2:d ítems de un total de %3:d)
+STAT_PAGE=Página %0:d de %1:d \n Registros %2:d de %3:d
STAT_DESC_SCORES=Calificaciones
STAT_DESC_SCORES_REVERSED=Peores Calificaciones
-STAT_FORMAT_SCORES=%0:d - %1:s\n %2:s - %5:s (%3:s) el %4:s
+STAT_FORMAT_SCORES=%0:s - %1:d puntos [%2:s] el %5:s \n%3:s - %4:s
STAT_DESC_SINGERS=Cantantes
STAT_DESC_SINGERS_REVERSED=Peores cantantes
@@ -436,119 +524,12 @@ STAT_DESC_BANDS=Grupos populares
STAT_DESC_BANDS_REVERSED=Grupos menos cantados
STAT_FORMAT_BANDS=%0:s \n cantado %1:d veces
-SCREENSHOT_SAVED=Pantalla guardada
-SCREENSHOT_FAILED=No se pudo guardar
-
-INFO_FILE_SAVED=Archivo guardado
-ERROR_SAVE_FILE_FAILED=No se pudo guardar
-ERROR_FILE_NOT_FOUND=No se encontró el archivo
-
-ENCODING_ERROR_ASK_FOR_UTF8=No se pueden guardar los cambios en la codificación actual. ¿Convertir a UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Sin pista seleccionada
-
-MSG_ERROR_TITLE=Error
-MSG_INFO_TITLE=Información
-MSG_QUESTION_TITLE=Pregunta
-MSG_QUIT_USDX=¿Seguro que quieres salir?
-MSG_END_PARTY=¿Seguro que quieres salir del modo fiesta?
-
-ERROR_NO_SONGS=No hay canciones
-ERROR_NO_PLUGINS=No hay plugins
-ERROR_NO_MODES_FOR_CURRENT_SETUP=No hay modos disponibles para la configuración actual de equipos y jugadores
-ERROR_LOADING_SONGS=Espera a que terminen de cargar las canciones
-ERROR_CAN_NOT_START_PARTY=Ocurrió un error al iniciar el juego
-ERROR_CORRUPT_SONG=Imposible cargar la canción.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Imposible cargar la canción: Archivo no encontrado
-ERROR_CORRUPT_SONG_NO_NOTES=Imposible cargar la canción: No se encuentran notas
-ERROR_CORRUPT_SONG_NO_BREAKS=Imposible cargar la canción: No se encuentran interrupciones de línea
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Imposible cargar la canción: Error durante el parsing de la línea %0:d
-ERROR_NO_EDITOR=Esta función no está disponible en ésta versión
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Se han asignado más de 1 micrófono al jugador %d. Comprueba las opciones de micrófonos.
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Al jugador %d no se le ha asignado ningún micrófono. Comprueba las opciones de micrófonos
-
-SING_OPTIONS_NETWORK=Internet
-SING_OPTIONS_NETWORK_WHEREAMI=Opciones de internet
-SING_OPTIONS_NETWORK_DESC=Sincroniza tu cuenta con nuestra web
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Pulsa la tecla "Insert" para añadir un usuario a esta web
-SING_OPTIONS_NETWORK_WEBSITE=Página web
-SING_OPTIONS_NETWORK_USERNAME=Usuario
-SING_OPTIONS_NETWORK_PASSWORD=Contraseña
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Enviar nombre
-SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Jugador
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Puntuación (Fácil)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Puntuación (Medio)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Puntuación (Difícil)
-SING_OPTIONS_NETWORK_NO_DLL=Está usando una versión desactualizada. Visite nuestra web.
-SING_OPTIONS_NETWORK_DELETE_PLAYER=¿De verdad quieres eliminar el usuario %0:s de la web de %1:s?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Insertar
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Eliminar
-
-OPTION_PLAYER_1=Jugador 1
-OPTION_PLAYER_2=Jugador 2
-OPTION_PLAYER_3=Jugador 3
-OPTION_PLAYER_4=Jugador 4
-OPTION_PLAYER_5=Jugador 5
-OPTION_PLAYER_6=Jugador 6
-OPTION_ALL_PLAYERS=Todos
-OPTION_ALL_SCORES=Todas
-OPTION_VALUE_SAVE=Guardar
-OPTION_VALUE_SEND=Enviar
-
-MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC= Rellena los campos:
-MSG_INSERT_USER_ADD=Añadir
-MSG_INSERT_USER_CANCEL=Cancelar
-
-WEBSITE_NO_CONNECTION=¡No hay conexión a la web!
-WEBSITE_LOGIN_ERROR=¡Usuario y contraseña incorrectos!
-WEBSITE_BLANK_LOGIN=¡Las casillas estan en blanco!
-WEBSITE_EXIST_USER=¡El usuario ya existe!
-WEBSITE_ERROR_SCORE=¡Error al enviar la puntuación!
-WEBSITE_OK_SEND=¡Puntuación enviada satisfactoriamente!
-WEBSITE_ERROR_SCORE_DUPLICATED=¡Ya existe la puntuación!
-WEBSITE_ERROR_SONG=¡Canción no encontrada en la web!
-WEBSITE_SAVE_SCORE=Puntuación guardada correctamente
-WEBSITE_NO_CONNECTION_SAVE=No se puede conectar a la web ¿Desea guardar?
-
-SONG_MENU_REFRESH_SCORES=Actualizar puntuación
-SONG_MENU_REFRESH_SCORES_TITLE=Actualización
-SONG_MENU_REFRESH_SCORES_NO_WEB=No hay páginas web
-SONG_MENU_REFRESH_SCORES_ONLINE=En red
-SONG_MENU_REFRESH_SCORES_FILE=Archivo
-SONG_MENU_REFRESH_SCORES_ALL_WEB=Todas las páginas web
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=Todas las canciones
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=Esta canción
-SONG_MENU_REFRESH_SCORES_REFRESH=Actualizar
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error,no se puede conectar a la web: %0:s
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=No existe el ficheiro '%0:s [Download Scores]'
-
-SONG_SCORE_MAX=Máximo:
-SONG_SCORE_MEDIA=Media:
-
-SCORE_SEND_DESC=Enviar puntuación
-SCORE_SEND=Enviar
-SCORE_SEND_PLAYER=Jugador
-SCORE_SEND_OTHER_USER= Otro nombre de usuario
-SCORE_SAVE=Guardar
-
-SCORE_DOWNLOAD_TITLE=Descargar
-SCORE_DOWNLOAD_SONG=Canción:
-SCORE_DOWNLOAD_CREATE_LIST=Preparando lista...
-SCORE_DOWNLOAD_RECEIVE_LIST=Descargando...
-SCORE_DOWNLOAD_CANCEL=Cancelar
-SCORE_DOWNLOAD_OK=OK
-SCORE_DOWNLOAD_SONG_UPDATE=Existe %0:d canciones(s) modificadas(s) en la web
-
-OPTION_VALUE_WHEN_EXISTS=Cuando exista
-
PARTY_SELECT_MODE=Modo
PARTY_MODE_CLASSIC=Clásico
PARTY_MODE_CLASSIC_FREE=Clásico Libre
PARTY_MODE_CHALLENGE=Desafío
PARTY_MODE_TOURNAMENT=Torneo
PARTY_MODE_JUKEBOX=Jukebox
-PARTY_MODE_NOT_AVAILABLE=No Disponible
PARTY_MODE_TOURNAMENT_PLAYER_DESC=Inserta el nº y los nombres de los jugadores
PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Nº de jugadores
@@ -561,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Jugadores siguientes para los micrófonos
PARTY_MODE_TOURNAMENT_WIN_DESC=Resultados de la ronda
PARTY_MODE_TOURNAMENT_CHAMPION=El campeón es: %0:s
-EDIT_TITLE=Título:
-EDIT_ARTIST=Artista:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Carátula
-EDIT_BACKGROUND=Fondo:
-
-EDIT_START=Inicio:
-EDIT_DURATION=Duración
-EDIT_TONE=Tono
-EDIT_LYRIC=Letra:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Volumen del audio:
-EDIT_VOLUME_MIDI=Volumen del midi:
-EDIT_VOLUME_CLICK=Volumen del click:
-INFO_UNDO=Deshacer la operación
-
-INFO_FILE_SAVED=Archivo guardado
-INFO_TIME_FIXED=Tiempos corregidos
-INFO_CAPITALIZE=Capitalización corregida
-INFO_EXIT=¿Desea salir del editor sin guardar?
-INFO_SONG_RELOADED=Canción Reabierta
-INFO_DIVIDED_BPM=Dividir BPM
-INFO_MULTIPLIED_BPM=Multiplicar BPM
-INFO_PLAY_SONG=Reproducir música
-INFO_PLAY_SENTENCE=Reproducir línea
-INFO_CURRENT_LINE=Línea:
-INFO_CURRENT_NOTE=Nota:
-
-INFO_MIDI_CHANNEL_OFF= Canal %0:s desactivado
-INFO_MIDI_CHANNEL_RESET= Todos los canales activos
-
MSG_END_JUKEBOX=¿Seguro que quieres salir del reproductor de música?
JUKEBOX_RANDOM=Aleatorio
JUKEBOX_REPEAT=Repetir
@@ -605,8 +553,6 @@ SING_ERROR_DUET_MODE_PARTY = ¡Dueto! ¡No se puede jugar en el modo fiesta!
SONG_MENU_SONG=Canción
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Ordenar
-SONG_MENU_EXTRA=Extras
SONG_MENU_NAME_SONG=Menu Canción
SONG_MENU_NAME_MEDLEY=Menu Medley
@@ -622,41 +568,12 @@ SONG_MENU_SORTING_ALL=Todas
SONG_MENU_SORTING_DUET=Duetos
SONG_MENU_SORTING_APPLY=Aplicar
-SING_OPTIONS_WEBCAM=Cámara
-SING_OPTIONS_WEBCAM_DESC=Configuración de la cámara
-SING_OPTIONS_WEBCAM_WHEREAMI=Opciones de la cámara
-SING_OPTIONS_WEBCAM_ID=Cámara
-SING_OPTIONS_WEBCAM_RESOLUTION=Resolución
-SING_OPTIONS_WEBCAM_FPS=FPS
-SING_OPTIONS_WEBCAM_NO_WEBCAM=¡No se ha encontrado ninguna cámara!
-SING_OPTIONS_WEBCAM_FLIP=Espejo
-SING_OPTIONS_WEBCAM_EFFECT=Efecto
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Brillo
-SING_OPTIONS_WEBCAM_SATURATION=Saturación
-SING_OPTIONS_WEBCAM_HUE=Matiz
-SING_OPTIONS_WEBCAM_PREVIEW=Activar previsualización
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Sí
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=No
-
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Escala de grises
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Blanco y negro
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negativo
-SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Imagen binaria
-SING_OPTIONS_WEBCAM_EFFECT_DILATE=Estirada
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Umbral
-SING_OPTIONS_WEBCAM_EFFECT_EDGES=Bordes
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Difuminado Gaussiano
-SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equilibrada
-SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erosión
-
-
PARTY_PLAYLIST_MANUAL=Seleción manual
PARTY_MODE_JUKEBOX_NO_SONGS=La lista de canciones está vacía
SONG_MENU_OPEN_CATEGORY=Abrir categoria
SONG_MENU_CLOSE_CATEGORY=Cerrar categoria
SONG_MENU_START_JUKEBOX=¡Iniciar Jukebox!
-SONG_MENU_NAME_JUKEBOX=Menu Jukebox
+SONG_MENU_NAME_JUKEBOX=Menú Jukebox
WEBSITE_EXIST_SONG=La cancion pertenece al sitio: %0:s
WEBSITE_NOT_EXIST_SONG=La canción no pertenece a ningún sitio
@@ -664,46 +581,6 @@ WEBSITE_NOT_EXIST_SONG=La canción no pertenece a ningún sitio
NAME_PLAYERS_COUNT=Número de jugadores
NAME_CURRENT_PLAYER=Jugador
-OPTION_VALUE_TO_SING=Canta
-OPTION_VALUE_ACTUAL=Superior
-OPTION_VALUE_NEXT=Inferior
-OPTION_VALUE_OTHER=Otro
-OPTION_VALUE_FILL=Relleno
-OPTION_VALUE_OUTLINE=Borde
-OPTION_VALUE_GRAY=Gris
-OPTION_VALUE_WHITE=Blanco
-OPTION_VALUE_TURQUOISE=Turquesa
-OPTION_VALUE_SALMON=Salmón
-OPTION_VALUE_GREENYELLOW=Lima
-OPTION_VALUE_LAVENDER=Lavanda
-OPTION_VALUE_BEIGE=Beis
-OPTION_VALUE_TEAL=Verde azulado
-OPTION_VALUE_ORCHID=Orquídea
-OPTION_VALUE_STEELBLUE=Azul Metálico
-OPTION_VALUE_PLUM=Ciruela
-OPTION_VALUE_CHOCOLATE=Chocolate
-OPTION_VALUE_GOLD=Oro
-OPTION_VALUE_DARKBLUE=Azul Marino
-OPTION_VALUE_SKY=Cielo
-OPTION_VALUE_HARLEQUIN=Arlequín
-OPTION_VALUE_CYAN=Cian
-OPTION_VALUE_FLAME=LLama
-
-JUKEBOX_SONGOPTIONS_VIDEO=Opciones de vídeo
-JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspecto
-JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Ancho
-JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Alto
-JUKEBOX_SONGOPTIONS_LYRIC=Opciones de letra
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Tamaño
-JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Posición
-JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparencia
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
-JUKEBOX_SONGOPTIONS_LYRIC_LINE=Línea
-JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Personalizado
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rojo
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Verde
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Azul
-
JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Estirar
JUKEBOX_SONGOPTIONS_VIDEO_CROP=Recortar
JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=4:3
@@ -713,28 +590,37 @@ JUKEBOX_SONGOPTIONS_CLOSE=Cerrar
JUKEBOX_SONGOPTIONS_DEFAULT=Reiniciar valores
JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Cambios guardados
-SING_SONG_CREDITS=Créditos
-SING_JUKEBOX=Reproductor de música
-SING_JUKEBOX_DESC=Escuchar mis canciones
JUKEBOX_MODE=Modo reproductor
-JUKEBOX_OPTIONS_DESC=Opciones de la lista de música
-JUKEBOX_OPTIONS_WHEREAMI=Opciones del reproductor
JUKEBOX_OPTIONS_PLAYLIST=Lista de música
JUKEBOX_OPTIONS_PLAYLIST_MODE=Modo
-SING_OPTIONS_ADVANCED_SINGSCORES=Marcador al cantar
-SING_OPTIONS_ADVANCED_TOPSCORES=Mostrar calificaciones
-OPTION_VALUE_ALL=Todos los jugadores
-OPTION_VALUE_PLAYER=Jugador actual
-SING_ABOUT=Acerca de
-SING_ABOUT_DESC=Acerca de Ultrastar Deluxe WorldParty
ABOUT_MAIN=Acerca de...
-ABOUT_MAIN_DESC=Ultrastar Deluxe WorldParty
-ABOUT_MAIN_WHEREAMI=Acerca de...
-ABOUT_USDX_CREDITS=Créditos originales
ABOUT_USDX_DEVELOPEDBY=Desarrollado por
+ABOUT_CHECK_CHECKING=Buscando actualizaciones...
+ABOUT_CHECK_AVAILABLE=Hay disponible una nueva versión
+ABOUT_CHECK_UPTODATE=WorldParty está actualizado
+ABOUT_CHECK_CONNECTION=No hay conexión a Internet
ABOUT_OVERVIEW=Descubre una nueva manera de cantar, solo, en pareja o con amigos. \nLa diversión estará asegurada.\n\nWorldParty es una modificación de la versión original Ultrastar Deluxe 1.1 diseñado y desarrollado por el equipo de UltraStar España, cuenta con el apoyo de la comunidad más grande del mundo de karaoke. \n\n\nEste programa es gratuito y libre bajo licencia GPL. \n\nVisitad nuestra web para más información.\n\nhttps://ultrastar-es.org
DEVELOPERS_TITLE=Desarrollado por
DEVELOPERS_OVERVIEW=Gente que ha contribuido en este proyecto:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiXj\n\n\n Visítanos para más información.\n\nhttps://ultrastar-es.org
-DEVELOPERS_USDX_OVERVIEW=Gracias a Corvus5, brian-ch, brunzelchen, canni0, k-m_schindler, whiteshark0, BasisBit y todos los que han colaborado con UltraStar y UltraStar Deluxe
+
+SCREENSHOT_SAVED=Pantalla guardada
+SCREENSHOT_FAILED=No se pudo guardar
+
+MSG_ERROR_TITLE=Error
+MSG_INFO_TITLE=Información
+MSG_QUESTION_TITLE=Pregunta
+MSG_QUIT_USDX=¿Seguro que quieres salir?
+MSG_END_PARTY=¿Seguro que quieres salir del modo fiesta?
+
+ERROR_NO_SONGS=No hay canciones
+ERROR_NO_PLUGINS=No hay plugins
+ERROR_LOADING_SONGS=Espera a que terminen de cargar las canciones
+ERROR_CORRUPT_SONG=Imposible cargar la canción.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Imposible cargar la canción: Archivo no encontrado
+ERROR_CORRUPT_SONG_NO_NOTES=Imposible cargar la canción: No se encuentran notas
+ERROR_CORRUPT_SONG_NO_BREAKS=Imposible cargar la canción: No se encuentran interrupciones de línea
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Imposible cargar la canción: Error durante el parsing de la línea %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Se han asignado más de 1 micrófono al jugador %d. Comprueba las opciones de micrófonos.
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Al jugador %d no se le ha asignado ningún micrófono. Comprueba las opciones de micrófonos
diff --git a/game/languages/Euskara.ini b/game/languages/Euskara.ini
index 29a80a7c..6fb099f5 100644
--- a/game/languages/Euskara.ini
+++ b/game/languages/Euskara.ini
@@ -1,220 +1,318 @@
[Text]
LANGUAGE=Euskara
-OPTION_VALUE_EASY=Erraza
-OPTION_VALUE_MEDIUM=Bitartekoa
-OPTION_VALUE_HARD=Zaila
-
-OPTION_VALUE_ON=On
-OPTION_VALUE_OFF=Off
-
-OPTION_VALUE_EDITION=Edizioa
-OPTION_VALUE_GENRE=Generoa
-OPTION_VALUE_LANGUAGE=Hizkuntza
-OPTION_VALUE_FOLDER=Fitxategia
-OPTION_VALUE_TITLE=Titulua
-OPTION_VALUE_ARTIST=Artista
-OPTION_VALUE_TITLE2=2.titulua
-OPTION_VALUE_ARTIST2=2.artista
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
-OPTION_VALUE_PLAYLIST=Zerrenda
-
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
-
-OPTION_VALUE_WHENNOVIDEO=Bideorik ez badago
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
-
-OPTION_VALUE_SMALL=Txikia
-OPTION_VALUE_BIG=Handia
-
-OPTION_VALUE_HALF=Erdia
-OPTION_VALUE_FULL_VID=Osoa (Bideoa)
-OPTION_VALUE_FULL_VID_BG=Osoa (BG eta bideoa)
-
-;TODO: OPTION_VALUE_GAIN_SOFT=Soft
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
-
-OPTION_VALUE_AUTO=Automatikoa
-OPTION_VALUE_SEC=Segundu
-OPTION_VALUE_SECS=Segundu
-
-OPTION_VALUE_PLAIN=Plain
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
-
-OPTION_VALUE_SIMPLE=Arrunta
-OPTION_VALUE_ZOOM=Zoom-a
-OPTION_VALUE_SLIDE=Slide-a
-OPTION_VALUE_BALL=Baloia
-OPTION_VALUE_SHIFT=Shift-a
-
-OPTION_VALUE_EURO=Europearra
-OPTION_VALUE_JAPAN=Japoniarra
-OPTION_VALUE_AMERICAN=Amerikarra
-
-OPTION_VALUE_BLUE=Urdina
-OPTION_VALUE_GREEN=Berdea
-OPTION_VALUE_PINK=Arrosa
-OPTION_VALUE_RED=Gorria
-OPTION_VALUE_VIOLET=Morea
-OPTION_VALUE_ORANGE=Laranja
-OPTION_VALUE_YELLOW=Horia
-OPTION_VALUE_BROWN=Marroia
-OPTION_VALUE_BLACK=Beltza
-
-OPTION_VALUE_SING=Abestu
-OPTION_VALUE_SELECT_PLAYERS=Aukeratu jokalariak
-OPTION_VALUE_OPEN_MENU=Menua zabaldu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardware kurtsorea
-OPTION_VALUE_SOFTWARE_CURSOR=Software kurtsorea
-
SING_LOADING=Kargatzen...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
-SING_CHOOSE_MODE=Aukeratu
SING_SING=Abestu
SING_SING_DESC=Abestu: bakarka edo binaka
SING_MULTI=Taldea
SING_MULTI_DESC=Taldean abestu
-SING_TOOLS=Tresnak
+;TODO: SING_JUKEBOX=Jukebox
+;TODO: SING_JUKEBOX_DESC=Listen to my collection
SING_STATS=Estatistikak
SING_STATS_DESC=Estatistikak ikusi
-SING_EDITOR=Editorea
-SING_EDITOR_DESC=Zure kantuak sortu
-
SING_GAME_OPTIONS=Hobespenak
SING_GAME_OPTIONS_DESC=Jokoaren hobespenak aldatu
SING_EXIT=Irten
SING_EXIT_DESC=Jokotik irten
+;TODO: SING_ABOUT=About
+;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
+
+;TODO: SING_PLAYER_TITLE=Profiles
+;TODO: SING_PLAYER_READY=Players ready to sing
+;TODO: SING_PLAYER_COUNT=Number of players
+;TODO: SING_PLAYER_EDIT=Customize a player
+;TODO: SING_PLAYER_NAME=Write your name
+;TODO: SING_PLAYER_COLOR=Pick a color
+;TODO: SING_PLAYER_LEVEL=Choose a level
+;TODO: SING_PLAYER_AVATAR=Select your avatar
+
+OPTION_VALUE_EASY=Erraza
+OPTION_VALUE_MEDIUM=Bitartekoa
+OPTION_VALUE_HARD=Zaila
+
SING_OPTIONS=Hobespenak
-SING_OPTIONS_DESC=Aukerak aldatu
-SING_OPTIONS_WHEREAMI=Hobespenak
SING_OPTIONS_GAME=Jokoa
SING_OPTIONS_GRAPHICS=Grafikoak
SING_OPTIONS_SOUND=Soinua
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Letrak
SING_OPTIONS_THEMES=Gaiak
-SING_OPTIONS_RECORD=Grabazioa
+SING_OPTIONS_MICROPHONES=Grabazioa
SING_OPTIONS_ADVANCED=Aurreratuak
+;TODO: SING_OPTIONS_NETWORK=Internet
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+;TODO: SING_OPTIONS_JUKEBOX=Jukebox
SING_OPTIONS_EXIT=Itzuli
-SING_OPTIONS_GAME_WHEREAMI=Jokoaren hobespenak
-SING_OPTIONS_GAME_DESC=Jokoaren hobespen orokorrak
-SING_OPTIONS_GAME_PLAYERS=Jokalariak
-SING_OPTIONS_GAME_DIFFICULTY=Zailtasuna
SING_OPTIONS_GAME_LANGUAGE=Hizkuntza
+SING_OPTIONS_GAME_SONGMENU=Menua
SING_OPTIONS_GAME_TABS=Etiketak
SING_OPTIONS_GAME_SORTING=Sailkapena
-SING_OPTIONS_GAME_DEBUG=Araztu
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+;TODO: SING_OPTIONS_GAME_JOYPAD_SUPPORT=Controller support
+
+;TODO: OPTION_VALUE_ROULETTE=Roulette
+;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
+;TODO: OPTION_VALUE_CAROUSEL=Carousel
+;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
+;TODO: OPTION_VALUE_LIST=List
+;TODO: OPTION_VALUE_MOSAIC=Tile
+
+OPTION_VALUE_ON=On
+OPTION_VALUE_OFF=Off
+
+OPTION_VALUE_EDITION=Edizioa
+OPTION_VALUE_GENRE=Generoa
+OPTION_VALUE_LANGUAGE=Hizkuntza
+OPTION_VALUE_FOLDER=Fitxategia
+OPTION_VALUE_TITLE=Titulua
+OPTION_VALUE_ARTIST=Artista
+OPTION_VALUE_ARTIST2=2.artista
+;TODO: OPTION_VALUE_YEAR=Year
+;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_PLAYLIST=Zerrenda
+
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-SING_OPTIONS_GRAPHICS_WHEREAMI=Grafikoen hobespenak
-SING_OPTIONS_GRAPHICS_DESC=Grafikoen hobespenak
-SING_OPTIONS_GRAPHICS_RESOLUTION=Erresoluzioa
SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantaila osoa
-SING_OPTIONS_GRAPHICS_DEPTH=Kolore kalitatea
+SING_OPTIONS_GRAPHICS_RESOLUTION=Erresoluzioa
+;TODO: SING_OPTIONS_GRAPHICS_SCREENFADE=Screen Fading
+;TODO: SING_OPTIONS_GRAPHICS_EFFECTSING=Sing Effects
SING_OPTIONS_GRAPHICS_VISUALIZER=Bistaratzeak
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osziloskopioa
-SING_OPTIONS_GRAPHICS_LINEBONUS=Lerro Bonusa
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Bideo tamaina
-SING_OPTIONS_SOUND_WHEREAMI=Soinu hobespenak
-SING_OPTIONS_SOUND_DESC=Soinu hobespenak
+;TODO: OPTION_VALUE_BORDERLESS=Borderless
+
+OPTION_VALUE_WHENNOVIDEO=Bideorik ez badago
+;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+
+OPTION_VALUE_HALF=Erdia
+OPTION_VALUE_FULL_VID=Osoa (Bideoa)
+OPTION_VALUE_FULL_VID_BG=Osoa (BG eta bideoa)
+
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofono playback-a
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Atzeko soinua
-SING_OPTIONS_SOUND_MIC_BOOST=Mikrofonoa indartu
SING_OPTIONS_SOUND_CLICK_ASSIST=Noten laguntza
SING_OPTIONS_SOUND_BEAT_CLICK=Kolpeen laguntza
-SING_OPTIONS_SOUND_THRESHOLD=Arintzea
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Bi jokalari modua
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Bolumena aurreikusi
SING_OPTIONS_SOUND_PREVIEWFADING=Desagerpena aurreikusi
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+;TODO: OPTION_VALUE_GAIN_SOFT=Soft
+;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
+;TODO: OPTION_VALUE_GAIN_HARD=Hard
+
+OPTION_VALUE_AUTO=Automatikoa
+OPTION_VALUE_SEC=Segundu
+OPTION_VALUE_SECS=Segundu
-SING_OPTIONS_LYRICS_WHEREAMI=Letren hobespenak
-SING_OPTIONS_LYRICS_DESC=Letren hobespenak
SING_OPTIONS_LYRICS_FONT=Letra-mota
SING_OPTIONS_LYRICS_EFFECT=Efektua
-SING_OPTIONS_LYRICS_SOLMIZATION=Solfeoa
SING_OPTIONS_LYRICS_NOTELINES=Pentagramak
-SING_OPTIONS_THEMES_WHEREAMI=Gaien hobespenak
-SING_OPTIONS_THEMES_DESC=Gaien eta azalen hobespenak
+;TODO: OPTION_VALUE_PLAIN=stylized
+;TODO: OPTION_VALUE_OLINE1=with thin edge
+;TODO: OPTION_VALUE_OLINE2=with thick edge
+
+OPTION_VALUE_SIMPLE=Arrunta
+OPTION_VALUE_ZOOM=Zoom-a
+OPTION_VALUE_SLIDE=Slide-a
+OPTION_VALUE_BALL=Baloia
+OPTION_VALUE_SHIFT=Shift-a
+
SING_OPTIONS_THEMES_THEME=Gaia
SING_OPTIONS_THEMES_SKIN=Azala
SING_OPTIONS_THEMES_COLOR=Kolorea
-SING_OPTIONS_RECORD_WHEREAMI=Grabazioaren hobespenak
-SING_OPTIONS_RECORD_DESC=Mikrofonoaren hobespenak
-SING_OPTIONS_RECORD_CARD=Soinu-txartela
-SING_OPTIONS_RECORD_INPUT=Sarrera
-SING_OPTIONS_RECORD_CHANNEL=Kanala
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Hobespen aurreratuak
-SING_OPTIONS_ADVANCED_DESC=Hobespen aurreratuak
-SING_OPTIONS_ADVANCED_EFFECTSING=Kantu efektuak
-SING_OPTIONS_ADVANCED_SCREENFADE=Pantaila desagertu
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animazioa kargatzerakoan
+SING_OPTIONS_MICROPHONES_CARD=Soinu-txartela
+SING_OPTIONS_MICROPHONES_INPUT=Sarrera
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanala
+SING_OPTIONS_MICROPHONES_THRESHOLD=Arintzea
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikrofonoa indartu
+
+;TODO: SING_OPTIONS_ADVANCED_DEBUG=Debug
+;TODO: SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscope
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Ziurtasun galderak
-SING_OPTIONS_ADVANCED_LINEBONUS=Lerro bonusa
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Aukeratu ondoren
SING_OPTIONS_ADVANCED_PARTYPOPUP=Talde menu auto
+;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
+;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
+
+OPTION_VALUE_ALL=Guztia
+;TODO: OPTION_VALUE_PLAYER=Player
+
+;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
+;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+SING_OPTIONS_NETWORK_AUTO_MODE=Automatikoa
+;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
+;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
+
+;TODO: OPTION_PLAYER_1=Player 1
+;TODO: OPTION_PLAYER_2=Player 2
+;TODO: OPTION_PLAYER_3=Player 3
+;TODO: OPTION_PLAYER_4=Player 4
+;TODO: OPTION_PLAYER_5=Player 5
+;TODO: OPTION_PLAYER_6=Player 6
+OPTION_ALL_PLAYERS=Guztia
+OPTION_ALL_SCORES=Guztia
+;TODO: OPTION_VALUE_SAVE=Save
+;TODO: OPTION_VALUE_SEND=Send
+
+;TODO: MSG_INSERT_USER_TITLE=%0:s
+;TODO: MSG_INSERT_USER_DESC=Fill the fields:
+;TODO: MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_CANCEL=Itzuli
+
+;TODO: WEBSITE_NO_CONNECTION=No website connection!
+;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
+;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
+;TODO: WEBSITE_EXIST_USER=Existing user!
+;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
+;TODO: WEBSITE_OK_SEND=Score sent successfully!
+;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+;TODO: WEBSITE_ERROR_SONG=Song Not Found!
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
+
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-SING_EDIT=Editorea
-SING_EDIT_MENU_DESCRIPTION=Zure kantuak sortu
+;TODO: SONG_SCORE_MAX=Best:
+;TODO: SONG_SCORE_MEDIA=Average:
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Testua inportatu MIDI fitxategiatik
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Itzuli
-SING_EDIT_BUTTON_CONVERT=Inportatu
-SING_EDIT_BUTTON_EXIT=Itzuli
+;TODO: SCORE_SEND_DESC=Send Score
+;TODO: SCORE_SEND=Send
+;TODO: SCORE_SEND_PLAYER=Player
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
+
+;TODO: SCORE_DOWNLOAD_TITLE=Download
+;TODO: SCORE_DOWNLOAD_SONG=Song:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Itzuli
+;TODO: SCORE_DOWNLOAD_OK=OK
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-SING_EDIT_NAVIGATE=Nabigatu
-SING_EDIT_SELECT=Aukeratu
-SING_EDIT_EXIT=Itzuli
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Erresoluzioa
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Efektua
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
+
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Arintzea
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
+
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Kolorea
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Gorria
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Berdea
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Urdina
+
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
+
+OPTION_VALUE_TO_SING=Abestu
+;TODO: OPTION_VALUE_ACTUAL=Actual
+;TODO: OPTION_VALUE_NEXT=Next
+;TODO: OPTION_VALUE_OTHER=Other
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Urdina
+OPTION_VALUE_GREEN=Berdea
+OPTION_VALUE_PINK=Arrosa
+OPTION_VALUE_RED=Gorria
+OPTION_VALUE_VIOLET=Morea
+OPTION_VALUE_ORANGE=Laranja
+OPTION_VALUE_YELLOW=Horia
+OPTION_VALUE_BROWN=Marroia
+OPTION_VALUE_BLACK=Beltza
+OPTION_VALUE_MAGENTA=Magenta
+;TODO: OPTION_VALUE_GRAY=Gray
+;TODO: OPTION_VALUE_WHITE=White
+;TODO: OPTION_VALUE_TURQUOISE=Turquoise
+;TODO: OPTION_VALUE_SALMON=Salmon
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+;TODO: OPTION_VALUE_LAVENDER=Lavender
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
+;TODO: OPTION_VALUE_GOLD=Gold
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+;TODO: OPTION_VALUE_SKY=Sky
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
SING_LEGEND_SELECT=Hautatu
SING_LEGEND_NAVIGATE=Nabigatu
SING_LEGEND_CONTINUE=Jarraitu
SING_LEGEND_ESC=Itzuli
-SING_PLAYER_DESC=Jokalarien izenak sartu
-SING_PLAYER_WHEREAMI=Jokalarien izenak
-SING_PLAYER_ENTER_NAME=Izenak idatzi
-
-SING_DIFFICULTY_DESC=Zailtasuna aukeratu
-SING_DIFFICULTY_WHEREAMI=Zailtasuna
-SING_DIFFICULTY_CONTINUE=Abestia aukeratu
-SING_EASY=Erraza
-SING_MEDIUM=Bitartekoa
-SING_HARD=Zaila
-
-SING_SONG_SELECTION_DESC=Abestia aukeratu
-SING_SONG_SELECTION_WHEREAMI=Abestia aukeratu
-SING_SONG_SELECTION_GOTO=... joan
SING_SONG_SELECTION=Abestia aukeratu
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Zerrenda
+;TODO: SING_SONG_IN_CAT=Song
SING_SONGS_IN_CAT=Abestiak
PLAYLIST_CATTEXT=Zerrenda: %s
+;TODO: SING_SONG_SELECTION_LEGEND_TITLE=Legend
+;TODO: SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+;TODO: SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=Guztira
SING_MODE=Bakarka abestu
SING_NOTES=Notak
@@ -255,8 +353,6 @@ IMPLODE_GLUE2= eta
SONG_MENU_NAME_MAIN=Menua
SONG_MENU_PLAY=Abestu
SONG_MENU_CHANGEPLAYERS=Jokalariak aukeratu
-SONG_MENU_EDIT=Editorera bidali
-SONG_MENU_MODI=Modi bat abestu
SONG_MENU_CANCEL=Itzuli
SONG_MENU_NAME_PLAYLIST=Menua
@@ -289,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Komodina erabili
SONG_JUMPTO_DESC=Bilatu
SONG_JUMPTO_TYPE_DESC=Bilatu:
-SONG_JUMPTO_TYPE1=Guztia
-SONG_JUMPTO_TYPE2=Titulua
-SONG_JUMPTO_TYPE3=Artista
-SONG_JUMPTO_SONGSFOUND=%d kantu aurkituta
-SONG_JUMPTO_NOSONGSFOUND=Ez dago kanturik
-SONG_JUMPTO_HELP=Hitz gakoak idatzi
-SONG_JUMPTO_CATTEXT=Bilatu: %s
PARTY_MODE=Taldean Abestu
PARTY_DIFFICULTY=Zailtasuna
@@ -313,25 +402,22 @@ PARTY_LEGEND_CONTINUE=Jarraitu
PARTY_OPTIONS_DESC=Taldean jokatzeko aukerak
PARTY_OPTIONS_WHEREAMI=Taldeko hobespenak
-PARTY_PLAYER_DESC=Jokalarien eta taldeen izenak
-PARTY_PLAYER_WHEREAMI=Taldeen izenak
PARTY_PLAYER_ENTER_NAME=Izenak idatzi
-
-PARTY_ROUNDS_DESC=Aukeratu zein modurekin jokatu nahi duzun
-PARTY_ROUNDS_WHEREAMI=Errondak
PARTY_ROUNDS_LEGEND_CONTINUE=Jokoa hasi
PARTY_ROUNDCOUNT=Erronda kopurua
PARTY_SELECTMODE=%d. errondaren
-PARTY_ROUND_DESC=Hurrengoa mikrofonora
-PARTY_ROUND_WHEREAMI=Hurrengo erronda
PARTY_ROUND_LEGEND_CONTINUE=Erronda hasi
PARTY_SONG_WHEREAMI=Talde Abestia aukeratu
PARTY_SONG_LEGEND_CONTINUE=Abestu
PARTY_SONG_MENU=Talde menua
+OPTION_VALUE_SING=Abestu
+OPTION_VALUE_SELECT_PLAYERS=Aukeratu jokalariak
+OPTION_VALUE_OPEN_MENU=Menua zabaldu
+
PARTY_SCORE_DESC=Azken Errondako puntuazioa
PARTY_SCORE_WHEREAMI=Talde puntuazioa
@@ -407,8 +493,6 @@ MODE_BLIND_NAME=Itsuan
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Estatistikak
-STAT_MAIN_DESC=Orokorrak
-STAT_MAIN_WHEREAMI=Estatistikak
STAT_OVERVIEW_INTRO=%0:s estatistikak. \n Azken aldiz ezabatutak %3:dko %2:.2daren %1:.2dan
STAT_OVERVIEW_SONG=%0:d abesti daude (%3:d bideoarekin), hauetatik %1:d dagoeneko abestu dira, %2:d oraindik ez dira abestu.\n Gehien abestu den kantua %5:s da, %4:s-ena.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Estatistika zehatzak
STAT_NEXT=Hurrengo orria
STAT_PREV=Aurreko orria
STAT_REVERSE=Ordena alderanztu
-STAT_PAGE=Seite %0:d orri %1:dtik \n (%2:d sarrera %3:dtik)
+STAT_PAGE=Seite %0:d orri %1:d tik \n Tik %2:d sarrera %3:d
STAT_DESC_SCORES=Puntuazio onenak
STAT_DESC_SCORES_REVERSED=Puntuazio txarrenak
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Talde ospetsuak
STAT_DESC_BANDS_REVERSED=Talde ez ospetsuak
STAT_FORMAT_BANDS=%0:s \n %1:dx aldiz abestuta
-SCREENSHOT_SAVED=Pantaila-irudia gordeta
-SCREENSHOT_FAILED=Pantaila irudia ezin izan da gorde
-
-INFO_FILE_SAVED=Fitxategia gordeta
-ERROR_SAVE_FILE_FAILED=Ezin izan da fitxategia gorde
-ERROR_FILE_NOT_FOUND=Fitxategia ez da aurkitu
-
-ENCODING_ERROR_ASK_FOR_UTF8=Ezin dira aldaketan kodeaketa honetan gorde izan. UTF-8-ra bihurtu?
-EDITOR_ERROR_NO_TRACK_SELECTED=Ez da abestirik aukeratu
-
-MSG_ERROR_TITLE=Hutsa
-MSG_INFO_TITLE=Informazioa
-MSG_QUESTION_TITLE=Galdera
-MSG_QUIT_USDX=Ziur zaude irten nahi duzula?
-MSG_END_PARTY=Ziur zaude talde jokoa bukatu nahi duzula?
-
-ERROR_NO_SONGS=Ez dago abestirik
-ERROR_NO_PLUGINS=Ez dago pluginik
-ERROR_NO_MODES_FOR_CURRENT_SETUP=Ez dago modu eskuragarririk jokalari/talde honetarako
-ERROR_CAN_NOT_START_PARTY=Errore bat gertatu da jokoa hastean
-ERROR_CORRUPT_SONG=Ezin da abestia kargatu
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Ezin da abestia kargatu: Fitxategia falta da
-ERROR_CORRUPT_SONG_NO_NOTES=Ezin da abestia kargatu: Ez daude notak
-ERROR_CORRUPT_SONG_NO_BREAKS=Ezin da abestia kargatu: Ez daude lerro jauziak
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Ezin da abestia kargatu: Okerra %0:d lerroan
-ERROR_NO_EDITOR=Ezaugarri hau ez dago Linux/Mac-en
-ERROR_PLAYER_DEVICE_ASSIGNMENT= %d.jokalariak mikrofono bat baino gehiago aukeratuta ditu . Mesedez grabazioaren aukerak begiratu
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphones. Mesedez grabazioaren aukerak begiratu
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Automatikoa
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Guztia
-OPTION_ALL_SCORES=Guztia
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Itzuli
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Itzuli
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
;TODO: PARTY_SELECT_MODE=Mode
;TODO: PARTY_MODE_CLASSIC=Classic
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -565,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Hurrengoa mikrofonora
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Fitxategia gordeta
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
;TODO: JUKEBOX_RANDOM=Random
;TODO: JUKEBOX_REPEAT=Repeat
@@ -609,8 +553,6 @@ INFO_FILE_SAVED=Fitxategia gordeta
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menua
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Guztia
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Erresoluzioa
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Efektua
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Arintzea
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
;TODO: SONG_MENU_OPEN_CATEGORY=Open category
@@ -666,58 +581,6 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Arintzea
;TODO: NAME_PLAYERS_COUNT=Number of Players
;TODO: NAME_CURRENT_PLAYER=Player
-SING_OPTIONS_GAME_SONGMENU=Menua
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Abestu
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Kolorea
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Gorria
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Berdea
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Urdina
-
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Urdina
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
JUKEBOX_OPTIONS_PLAYLIST=Zerrenda
;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Guztia
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+;TODO: ABOUT_USDX_DEVELOPEDBY=Developed by
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+;TODO: DEVELOPERS_TITLE=Developed by
+;TODO: DEVELOPERS_OVERVIEW=People who has contributed to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Pantaila-irudia gordeta
+SCREENSHOT_FAILED=Pantaila irudia ezin izan da gorde
+
+MSG_ERROR_TITLE=Hutsa
+MSG_INFO_TITLE=Informazioa
+MSG_QUESTION_TITLE=Galdera
+MSG_QUIT_USDX=Ziur zaude irten nahi duzula?
+MSG_END_PARTY=Ziur zaude talde jokoa bukatu nahi duzula?
+
+ERROR_NO_SONGS=Ez dago abestirik
+ERROR_NO_PLUGINS=Ez dago pluginik
+ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Ezin da abestia kargatu
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Ezin da abestia kargatu: Fitxategia falta da
+ERROR_CORRUPT_SONG_NO_NOTES=Ezin da abestia kargatu: Ez daude notak
+ERROR_CORRUPT_SONG_NO_BREAKS=Ezin da abestia kargatu: Ez daude lerro jauziak
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Ezin da abestia kargatu: Okerra %0:d lerroan
+ERROR_PLAYER_DEVICE_ASSIGNMENT= %d.jokalariak mikrofono bat baino gehiago aukeratuta ditu . Egiaztatu mikrofonoaren aukerak
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphones. Egiaztatu mikrofonoaren aukerak
\ No newline at end of file
diff --git "a/game/languages/Fran\303\247ais.ini" "b/game/languages/Fran\303\247ais.ini"
index f95bbe60..ca69775b 100644
--- "a/game/languages/Fran\303\247ais.ini"
+++ "b/game/languages/Fran\303\247ais.ini"
@@ -1,215 +1,319 @@
[Text]
LANGUAGE=Français
-OPTION_VALUE_EASY=Facile
-OPTION_VALUE_MEDIUM=Moyen
-OPTION_VALUE_HARD=Difficile
-
-OPTION_VALUE_ON=Activé
-OPTION_VALUE_OFF=Désactivé
-
-OPTION_VALUE_EDITION=Édition
-OPTION_VALUE_GENRE=Genre
-OPTION_VALUE_LANGUAGE=Langue
-OPTION_VALUE_FOLDER=Dossier
-OPTION_VALUE_TITLE=Titre
-OPTION_VALUE_ARTIST=Artiste
-OPTION_VALUE_TITLE2=Titre2
-OPTION_VALUE_ARTIST2=Artiste2
-OPTION_VALUE_YEAR=Année
-OPTION_VALUE_DECADE=Décennie
-OPTION_VALUE_PLAYLIST=Playlist
-
-OPTION_VALUE_BORDERLESS=Plein écran
-
-OPTION_VALUE_WHENNOVIDEO=Si pas de vidéo
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
-
-OPTION_VALUE_SMALL=Petit
-OPTION_VALUE_BIG=Grand
-
-OPTION_VALUE_HALF=Moitiée
-OPTION_VALUE_FULL_VID=Complète
-OPTION_VALUE_FULL_VID_BG=Complète (Fond + Vidéo)
-
-OPTION_VALUE_GAIN_SOFT=Doux
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
-
-OPTION_VALUE_AUTO=Automatique
-OPTION_VALUE_SEC=Seconde
-OPTION_VALUE_SECS=Secondes
-
-OPTION_VALUE_PLAIN=Classique
-OPTION_VALUE_OLINE1=Bordures
-OPTION_VALUE_OLINE2=Gras
-
-OPTION_VALUE_SIMPLE=Syllabes
-OPTION_VALUE_ZOOM=Zoomer
-OPTION_VALUE_SLIDE=Glisser
-OPTION_VALUE_BALL=Balle
-OPTION_VALUE_SHIFT=Bond
-
-OPTION_VALUE_EURO=Européen
-OPTION_VALUE_JAPAN=Japonais
-OPTION_VALUE_AMERICAN=Américain
-
-OPTION_VALUE_BLUE=Bleu
-OPTION_VALUE_GREEN=Vert
-OPTION_VALUE_PINK=Rose
-OPTION_VALUE_RED=Rouge
-OPTION_VALUE_VIOLET=Violet
-OPTION_VALUE_ORANGE=Orange
-OPTION_VALUE_YELLOW=Jaune
-OPTION_VALUE_BROWN=Marron
-OPTION_VALUE_BLACK=Noir
-
-OPTION_VALUE_SING=Chanter
-OPTION_VALUE_SELECT_PLAYERS=Choix des joueurs
-OPTION_VALUE_OPEN_MENU=Ouvrir le menu
-
SING_LOADING=Chargement...
+SING_LOADING_SONGS=Chargement des chansons à partir du dossier %s
-SING_CHOOSE_MODE=Choisissez un mode de jeu
SING_SING=Chanter
SING_SING_DESC=Chantez en solo
SING_MULTI=Fête
SING_MULTI_DESC=Faites la fête
-SING_TOOLS=Outils
+SING_JUKEBOX=Jukebox
+SING_JUKEBOX_DESC=Écouter mes chansons
SING_STATS=Statistiques
SING_STATS_DESC=Consultez les statistiques
-SING_EDITOR=Éditeur
-SING_EDITOR_DESC=Créez vos propres chansons
-
SING_GAME_OPTIONS=Options
SING_GAME_OPTIONS_DESC=Modifiez les paramètres du jeu
SING_EXIT=Quitter
SING_EXIT_DESC=Quitter le jeu
+SING_ABOUT=À propos
+SING_ABOUT_DESC=À propos Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profils
+SING_PLAYER_READY=Joueurs prêts à chanter
+SING_PLAYER_COUNT=Nombre de joueurs
+SING_PLAYER_EDIT=Personnaliser un joueur
+SING_PLAYER_NAME=Écrivez votre nom
+SING_PLAYER_COLOR=Choisissez une couleur
+SING_PLAYER_LEVEL=Choisissez un niveau
+SING_PLAYER_AVATAR=Sélectionnez votre avatar
+
+OPTION_VALUE_EASY=Facile
+OPTION_VALUE_MEDIUM=Moyen
+OPTION_VALUE_HARD=Difficile
+
SING_OPTIONS=Options
-SING_OPTIONS_DESC=Changez les paramètres
-SING_OPTIONS_WHEREAMI=Options
SING_OPTIONS_GAME=Jeu
SING_OPTIONS_GRAPHICS=Graphismes
SING_OPTIONS_SOUND=Audio
-SING_OPTIONS_INPUT=Contrôles
SING_OPTIONS_LYRICS=Paroles
SING_OPTIONS_THEMES=Thèmes
-SING_OPTIONS_RECORD=Micros
+SING_OPTIONS_MICROPHONES=Micros
SING_OPTIONS_ADVANCED=Avancé
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Caméra
+SING_OPTIONS_JUKEBOX=Jukebox
SING_OPTIONS_EXIT=Retour
-SING_OPTIONS_GAME_WHEREAMI=Options du jeu
-SING_OPTIONS_GAME_DESC=Options générales du jeu
-SING_OPTIONS_GAME_PLAYERS=Joueur(s)
-SING_OPTIONS_GAME_DIFFICULTY=Difficulté
SING_OPTIONS_GAME_LANGUAGE=Langue
+SING_OPTIONS_GAME_SONGMENU=Menu
SING_OPTIONS_GAME_TABS=Dossier
SING_OPTIONS_GAME_SORTING=Tri par
-SING_OPTIONS_GAME_DEBUG=Débogage
+SING_OPTIONS_GAME_SHOWSCORES=Montrer les scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activer gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Échiquier
+OPTION_VALUE_CAROUSEL=Carrousel
+OPTION_VALUE_SLOT_MACHINE=Machine à sous
+OPTION_VALUE_LIST=Liste
+OPTION_VALUE_MOSAIC=Tuile
+
+OPTION_VALUE_ON=Activé
+OPTION_VALUE_OFF=Désactivé
+
+OPTION_VALUE_EDITION=Édition
+OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_LANGUAGE=Langue
+OPTION_VALUE_FOLDER=Dossier
+OPTION_VALUE_TITLE=Titre
+OPTION_VALUE_ARTIST=Artiste
+OPTION_VALUE_ARTIST2=Artiste2
+OPTION_VALUE_YEAR=Année
+OPTION_VALUE_DECADE=Décennie
+OPTION_VALUE_PLAYLIST=Playlist
+
+OPTION_VALUE_WHEN_EXISTS=S'ils existent
-SING_OPTIONS_GRAPHICS_WHEREAMI=Options graphiques
-SING_OPTIONS_GRAPHICS_DESC=Paramètres des graphismes
-SING_OPTIONS_GRAPHICS_RESOLUTION=Résolution
SING_OPTIONS_GRAPHICS_FULLSCREEN=Plein écran
-SING_OPTIONS_GRAPHICS_DEPTH=Profondeur
+SING_OPTIONS_GRAPHICS_RESOLUTION=Résolution
+SING_OPTIONS_GRAPHICS_SCREENFADE=Fondu écran
+SING_OPTIONS_GRAPHICS_EFFECTSING=Effet de chant
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisation
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope
-SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de phrases
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Taille vidéo
-SING_OPTIONS_SOUND_WHEREAMI=Options du son
-SING_OPTIONS_SOUND_DESC=Paramètres du son
+OPTION_VALUE_BORDERLESS=Plein écran fenêtré
+
+OPTION_VALUE_WHENNOVIDEO=Si pas de vidéo
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Quand pas de vidéo et d'image
+
+OPTION_VALUE_HALF=Moitiée
+OPTION_VALUE_FULL_VID=Complète
+OPTION_VALUE_FULL_VID_BG=Complète (Fond + Vidéo)
+
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Entendre le micro
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Musique de fond
-SING_OPTIONS_SOUND_MIC_BOOST=Amplifier le micro
SING_OPTIONS_SOUND_CLICK_ASSIST=Clics d'aide
SING_OPTIONS_SOUND_BEAT_CLICK=Métronome
-SING_OPTIONS_SOUND_THRESHOLD=Suppression du bruit
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mode 2 joueurs
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
+SING_OPTIONS_SOUND_MUSICAUTOGAIN=Ajustement du volume
SING_OPTIONS_SOUND_PREVIEWVOLUME=Prévisualiser volume
SING_OPTIONS_SOUND_PREVIEWFADING=Prévisualiser fondu
-SING_OPTIONS_INPUT_WHEREAMI=Options Contrôles
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-SING_OPTIONS_INPUT_MOUSE=Souris
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+OPTION_VALUE_GAIN_SOFT=Doux
+OPTION_VALUE_GAIN_MEDIUM=Moyen
+OPTION_VALUE_GAIN_HARD=Fort
+
+OPTION_VALUE_AUTO=Automatique
+OPTION_VALUE_SEC=Seconde
+OPTION_VALUE_SECS=Secondes
-SING_OPTIONS_LYRICS_WHEREAMI=Options des paroles
-SING_OPTIONS_LYRICS_DESC=Paramètres des paroles
SING_OPTIONS_LYRICS_FONT=Caractères
SING_OPTIONS_LYRICS_EFFECT=Effet
-SING_OPTIONS_LYRICS_SOLMIZATION=Afficher gamme
SING_OPTIONS_LYRICS_NOTELINES=Barres
-SING_OPTIONS_THEMES_WHEREAMI=Options des thèmes
-SING_OPTIONS_THEMES_DESC=Paramètres des thèmes
+OPTION_VALUE_PLAIN=Stylisé
+OPTION_VALUE_OLINE1=Avec bord mince
+OPTION_VALUE_OLINE2=Avec bord épais
+
+OPTION_VALUE_SIMPLE=Syllabes
+OPTION_VALUE_ZOOM=Zoomer
+OPTION_VALUE_SLIDE=Glisser
+OPTION_VALUE_BALL=Balle
+OPTION_VALUE_SHIFT=Bond
+
SING_OPTIONS_THEMES_THEME=Thèmes
SING_OPTIONS_THEMES_SKIN=Aspect
SING_OPTIONS_THEMES_COLOR=Couleur
-SING_OPTIONS_RECORD_WHEREAMI=Options d'enregistrement
-SING_OPTIONS_RECORD_DESC=Paramètres des micros
-SING_OPTIONS_RECORD_CARD=Carte son
-SING_OPTIONS_RECORD_INPUT=Entrée
-SING_OPTIONS_RECORD_CHANNEL=Canal
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Options avancées
-SING_OPTIONS_ADVANCED_DESC=Paramètres avancés
-SING_OPTIONS_ADVANCED_EFFECTSING=Effet de chant
-SING_OPTIONS_ADVANCED_SCREENFADE=Fondu écran
-SING_OPTIONS_ADVANCED_LOADANIMATION=Charge animation
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Confirm. suppression
-SING_OPTIONS_ADVANCED_LINEBONUS=Bonus des phrases
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
+SING_OPTIONS_MICROPHONES_CARD=Carte son
+SING_OPTIONS_MICROPHONES_INPUT=Entrée
+SING_OPTIONS_MICROPHONES_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Suppression du bruit
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Amplifier le micro
+
+SING_OPTIONS_ADVANCED_DEBUG=Débogage
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscope
SING_OPTIONS_ADVANCED_ONSONGCLICK=Choix ap. chanson
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Demander avant de quitter
SING_OPTIONS_ADVANCED_PARTYPOPUP=Menu fête auto
+SING_OPTIONS_ADVANCED_SINGSCORES=Scores sur le chant
+SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
+
+OPTION_VALUE_ALL=Tout
+OPTION_VALUE_PLAYER=Joueur
+
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Appuyer sur "Insert" pour ajouter cet utilisateur au site...
+SING_OPTIONS_NETWORK_WEBSITE=Site Internet
+SING_OPTIONS_NETWORK_USERNAME=Utilisateur
+SING_OPTIONS_NETWORK_PASSWORD=Mot de passe
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Sauvergarder le nom
+SING_OPTIONS_NETWORK_AUTO_MODE=Automatique
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Joueur
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Envoi automatique (Facile)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Envoi automatique (Moyen)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Envoi automatique (Difficile)
+SING_OPTIONS_NETWORK_NO_DLL=Aucun plugin de scores compatible trouvé !
+SING_OPTIONS_NETWORK_DELETE_PLAYER=Voulez-vous vraiment supprimer l'utilisateur %0:s du site %1:s ?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Insérer
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Supprimer
+
+OPTION_PLAYER_1=Joueur 1
+OPTION_PLAYER_2=Joueur 2
+OPTION_PLAYER_3=Joueur 3
+OPTION_PLAYER_4=Joueur 4
+OPTION_PLAYER_5=Joueur 5
+OPTION_PLAYER_6=Joueur 6
+OPTION_ALL_PLAYERS=Tout
+OPTION_ALL_SCORES=Tout
+OPTION_VALUE_SAVE=Enregistrer
+OPTION_VALUE_SEND=Envoyer
-SING_EDIT=Éditeur
-SING_EDIT_MENU_DESCRIPTION=Créez vos propres chansons
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=remplissez les champs :
+MSG_INSERT_USER_ADD=Ajouter
+MSG_INSERT_USER_CANCEL=Annuler
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Exporter du texte depuis un fichier MIDI
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Retour
-SING_EDIT_BUTTON_CONVERT=Importer
-SING_EDIT_BUTTON_EXIT=Retour
+WEBSITE_NO_CONNECTION=Aucune connexion au site !
+WEBSITE_LOGIN_ERROR=Login incorrect !
+WEBSITE_BLANK_LOGIN=Il reste des champs non-remplis !
+WEBSITE_EXIST_USER=L'utilisateur existe déjà !
+WEBSITE_ERROR_SCORE=Erreur de score !
+WEBSITE_OK_SEND=Score envoyé !
+WEBSITE_ERROR_SCORE_DUPLICATED=Le score existe déjà !
+WEBSITE_ERROR_SONG=Chanson non trouvée !
+WEBSITE_SAVE_SCORE=Score sauvegardé !
+WEBSITE_NO_CONNECTION_SAVE=Pas de connexion au site ! Enregistrer tout de même l'utilisateur ?
+
+SONG_MENU_REFRESH_SCORES=mettre à jour les scores
+SONG_MENU_REFRESH_SCORES_TITLE=Mettre à jour
+SONG_MENU_REFRESH_SCORES_NO_WEB=Aucun site !
+SONG_MENU_REFRESH_SCORES_ONLINE=En ligne
+SONG_MENU_REFRESH_SCORES_FILE=Fichier
+SONG_MENU_REFRESH_SCORES_ALL_WEB=Tous les sites
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Toutes les chansons
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Cette chanson
+SONG_MENU_REFRESH_SCORES_REFRESH=Mettre à jour
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Erreur de connexion au site : %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=Fichier absent : '%0:s [Téléchargement des scores]'!
+
+
+SONG_SCORE_MAX=Meilleur :
+SONG_SCORE_MEDIA=Moyenne :
+
+SCORE_SEND_DESC=Envoyer le score
+SCORE_SEND=Envoyer
+SCORE_SEND_PLAYER=Joueur
+SCORE_SEND_OTHER_USER= Autre utilisateur
+SCORE_SAVE=Enregistrer
-SING_EDIT_NAVIGATE=Naviguer
-SING_EDIT_SELECT=Valider
-SING_EDIT_EXIT=Retour
+SCORE_DOWNLOAD_TITLE=Téléchargement
+SCORE_DOWNLOAD_SONG=Chanson:
+SCORE_DOWNLOAD_CREATE_LIST=Prépartion de la liste...
+SCORE_DOWNLOAD_RECEIVE_LIST=Téléchargement...
+SCORE_DOWNLOAD_CANCEL=Annuler
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=%0:d chansons(s) mise(s) à jour par internet !
+
+SING_OPTIONS_WEBCAM_ID=Caméra
+SING_OPTIONS_WEBCAM_RESOLUTION=Résolution
+SING_OPTIONS_WEBCAM_FPS=Images/secondes
+SING_OPTIONS_WEBCAM_FLIP=Inversion
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Luminosité
+SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_HUE=Teinte
+SING_OPTIONS_WEBCAM_EFFECT=Effet
+SING_OPTIONS_WEBCAM_PREVIEW=Aperçu
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Activer l'aperçu
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Desactiver l'aperçu
+SING_OPTIONS_WEBCAM_NO_WEBCAM=Aucune caméra trouvée!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Nuances de gris
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Noir et blanc
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Négatif
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Image binaire
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Etendre
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Suppression du bruit
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Bords
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Flou gaussien
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Egaliser
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Couper
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparence
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Ligne
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Propriété
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Couleur
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rouge
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Vert
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Bleu
+
+JUKEBOX_SONGOPTIONS_VIDEO=Paramètres vidéo
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Largeur
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Hauteur
+JUKEBOX_SONGOPTIONS_LYRIC=Options des paroles
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Taille
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
+
+OPTION_VALUE_TO_SING=Chantée
+OPTION_VALUE_ACTUAL=Supérieure
+OPTION_VALUE_NEXT=Inférieure
+OPTION_VALUE_OTHER=Autre
+OPTION_VALUE_FILL=Rempli
+OPTION_VALUE_OUTLINE=Bord
+OPTION_VALUE_BLUE=Bleu
+OPTION_VALUE_GREEN=Vert
+OPTION_VALUE_PINK=Rose
+OPTION_VALUE_RED=Rouge
+OPTION_VALUE_VIOLET=Violet
+OPTION_VALUE_ORANGE=Orange
+OPTION_VALUE_YELLOW=Jaune
+OPTION_VALUE_BROWN=Marron
+OPTION_VALUE_BLACK=Noir
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Gris
+OPTION_VALUE_WHITE=Blanc
+OPTION_VALUE_TURQUOISE=Turquoise
+OPTION_VALUE_SALMON=Saumon
+OPTION_VALUE_GREENYELLOW=Vert pomme
+OPTION_VALUE_LAVENDER=Lavande
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Vert canard
+OPTION_VALUE_ORCHID=Rose orchidée
+OPTION_VALUE_STEELBLUE=Bleu acier
+OPTION_VALUE_PLUM=Prune
+OPTION_VALUE_CHOCOLATE=Chocolat
+OPTION_VALUE_GOLD=Doré
+OPTION_VALUE_DARKBLUE=Bleu foncé
+OPTION_VALUE_SKY=Bleu ciel
+OPTION_VALUE_HARLEQUIN=Vert fluo
+OPTION_VALUE_CYAN=Cyan
+OPTION_VALUE_FLAME=Flamme
SING_LEGEND_SELECT=Valider
SING_LEGEND_NAVIGATE=Naviguer
SING_LEGEND_CONTINUE=Continuer
SING_LEGEND_ESC=Retour
-SING_PLAYER_DESC=Entrez le nom du/des joueur(s)
-SING_PLAYER_WHEREAMI=Nom du joueur
-SING_PLAYER_ENTER_NAME=Modifier
-
-SING_DIFFICULTY_DESC=Sélectionnez le niveau de difficulté
-SING_DIFFICULTY_WHEREAMI=Difficulté
-SING_DIFFICULTY_CONTINUE=Valider
-SING_EASY=Facile
-SING_MEDIUM=Moyen
-SING_HARD=Difficile
-
-SING_SONG_SELECTION_DESC=Choisissez une chanson
-SING_SONG_SELECTION_WHEREAMI=Sélection du titre
-SING_SONG_SELECTION_GOTO=Atteindre
SING_SONG_SELECTION=Choix de chansons
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Chanson
SING_SONGS_IN_CAT=Chansons
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Légende
+SING_SONG_SELECTION_LEGEND_VIDEO=Vidéo
+SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculé
+SING_SONG_SELECTION_LEGEND_DUET=Duo
-SING_TIME=Temps
SING_TOTAL=Total
SING_MODE=Mode chanter
SING_NOTES=Notes
@@ -250,8 +354,6 @@ IMPLODE_GLUE2= et
SONG_MENU_NAME_MAIN=Menu
SONG_MENU_PLAY=Chanter
SONG_MENU_CHANGEPLAYERS=Changer de joueurs
-SONG_MENU_EDIT=Éditeur
-SONG_MENU_MODI=Chanter un mode
SONG_MENU_CANCEL=Annuler
SONG_MENU_NAME_PLAYLIST=Menu
@@ -284,13 +386,6 @@ SONG_MENU_NAME_PARTY_JOKER=Utiliser Joker
SONG_JUMPTO_DESC=Rechercher
SONG_JUMPTO_TYPE_DESC=Recherche :
-SONG_JUMPTO_TYPE1=Tout
-SONG_JUMPTO_TYPE2=Titre
-SONG_JUMPTO_TYPE3=Artiste
-SONG_JUMPTO_SONGSFOUND=%d Chanson(s) trouvée(s)
-SONG_JUMPTO_NOSONGSFOUND=Aucune chanson trouvée
-SONG_JUMPTO_HELP=Entrez le texte à rechercher
-SONG_JUMPTO_CATTEXT=Recherche : %s
PARTY_MODE=Mode fête
PARTY_DIFFICULTY=Difficulté
@@ -308,25 +403,22 @@ PARTY_LEGEND_CONTINUE=Suivant
PARTY_OPTIONS_DESC=Paramètres du mode fête
PARTY_OPTIONS_WHEREAMI=Mode fête : Options
-PARTY_PLAYER_DESC=Entrez le nom des équipes et des joueurs
-PARTY_PLAYER_WHEREAMI=Mode fête : Équipes
PARTY_PLAYER_ENTER_NAME=Modifier
-
-PARTY_ROUNDS_DESC= Sélectionnez les modes
-PARTY_ROUNDS_WHEREAMI=Mode fête : Manches
PARTY_ROUNDS_LEGEND_CONTINUE=Commencer la fête
PARTY_ROUNDCOUNT=Nbre des manches
PARTY_SELECTMODE=Manche %d
-PARTY_ROUND_DESC=Joueurs suivants, à vos micros !
-PARTY_ROUND_WHEREAMI=Mode fête : Manche suivante
PARTY_ROUND_LEGEND_CONTINUE=Commencer la manche
PARTY_SONG_WHEREAMI=Mode fête : Choix de la chanson
PARTY_SONG_LEGEND_CONTINUE=Chanter
PARTY_SONG_MENU=Menu fête
+OPTION_VALUE_SING=Chanter
+OPTION_VALUE_SELECT_PLAYERS=Choix des joueurs
+OPTION_VALUE_OPEN_MENU=Ouvrir le menu
+
PARTY_SCORE_DESC=Score de la manche
PARTY_SCORE_WHEREAMI=Mode fête : Score
@@ -345,65 +437,63 @@ PARTY_SCORE_WINS=%s
PARTY_SCORE_WINS2=l'emporte !
MODE_RANDOM_NAME=Mode hasard
-;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
+MODE_RANDOM_DESC=Soyez prêts ! Le jeu choisira pour vous un mode au hasard !
MODE_HOLDTHELINE_NAME=Tenez la barre
-;TODO: MODE_HOLDTHELINE_DESC=Keep your rating above the line for the longest!
+MODE_HOLDTHELINE_DESC=Chantez juste le plus longtemps possible !
-;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
-;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
+MODE_HOLDTHELINEBLIND_NAME=Tenez la barre à l'aveugle
+MODE_HOLDTHELINEBLIND_DESC=Chantez juste le plus longtemps possible, mais sans les notes !
-;TODO: MODE_7000POINTS_NAME=Until 7000
-;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
+MODE_7000POINTS_NAME=Jusqu'à 7000
+MODE_7000POINTS_DESC=Le premier à 7000 Points !
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
-;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
+MODE_7000POINTSBLIND_NAME=7000 à l'aveugle
+MODE_7000POINTSBLIND_DESC=Le premier à 7000 points, mais sans les notes !
MODE_5000POINTS_NAME=Jusqu'à 5000
-;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
+MODE_5000POINTS_DESC=Le premier à 5000 Points !
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
-;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
+MODE_5000POINTSBLIND_NAME=5000 à l'aveugle
+MODE_5000POINTSBLIND_DESC=Le premier à 5000 points, mais sans les notes !
-;TODO: MODE_2000POINTS_NAME=Until 2000
-;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
+MODE_2000POINTS_NAME=Jusqu'à 2000
+MODE_2000POINTS_DESC=Le premier à 2000 Points !
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
-;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
+MODE_2000POINTSBLIND_NAME=2000 à l'aveugle
+MODE_2000POINTSBLIND_DESC=Le premier à 2000 points, mais sans les notes !
MODE_DUEL_NAME=Duel
-;TODO: MODE_DUEL_DESC=A 1v1 duel to get the highest score!
+MODE_DUEL_DESC=un duel à un contre un pour avoir le meilleur score !
-;TODO: MODE_TEAMDUEL_NAME=Team Duel
-;TODO: MODE_TEAMDUEL_DESC=Pass The Mic! Work together to get a higher score than the other team!
+MODE_TEAMDUEL_NAME=Match en équipes
+MODE_TEAMDUEL_DESC=Passez vous le micro ! Travaillez ensemble pour battre l'autre équipe !
MODE_BLIND_NAME=À l'aveugle
-;TODO: MODE_BLIND_DESC=A 1v1 duel, but with the notes hidden!
+MODE_BLIND_DESC=un duel à un contre un, mais sans les notes !
-;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
-;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
+MODE_BLINDTOTAL_NAME=Noir total !
+MODE_BLINDTOTAL_DESC=Un duel sans notes ni paroles. Seulement pour les courageux !
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
-;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
+MODE_1000BLIND_NAME = +1000 à l'aveugle
+MODE_1000BLIND_DESC = Gagnez 1000 points de plus, mais sans voir les notes !
-;TODO: MODE_DEAF_NAME = Deaf
-;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
+MODE_DEAF_NAME = Silencieux
+MODE_DEAF_DESC = Vou pensez connaitre la mélodie ? Pouvez vous chantez sans l'accompagnement ?
-;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
-;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
+MODE_BLINDLYRICS_NAME = Sans paroles
+MODE_BLINDLYRICS_DESC = Vous connaissez les paroles ? Chantez sans les voir !
-;TODO: MODE_500BLIND_NAME = +500 Blind
-;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
+MODE_500BLIND_NAME = +500 à l'aveugle
+MODE_500BLIND_DESC = Gagnez 500 points de plus, mais sans voir les notes !
-;TODO: MODE_SHORTSONG_NAME = Short Song
-;TODO: MODE_SHORTSONG_DESC = A fast-paced 1v1 duel over half the song!
+MODE_SHORTSONG_NAME = Chanson raccourcie
+MODE_SHORTSONG_DESC = Un duel rapide sur la moitié d'une chanson !
-;TODO: MODE_HARDCORE_NAME=Hardcore
-;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
+MODE_HARDCORE_NAME=Hardcore
+MODE_HARDCORE_DESC=Gagnez trois lignes d'avance sur votre adversaire !
STAT_MAIN=Statistiques
-STAT_MAIN_DESC=Général
-STAT_MAIN_WHEREAMI=Statistiques
STAT_OVERVIEW_INTRO=Statistiques d'%0:s \n Dernière réinitialisation le %1:.2d.%2:.2d.%3:d
STAT_OVERVIEW_SONG=Le jeu contient %0:d chansons dont %3:d avec vidéo.\n%1:d ont déjà été chantées une fois et %2:d pas encore. \n\n La chanson la plus chantée est %5:s de %4:s.
@@ -417,7 +507,7 @@ STAT_DETAIL_WHEREAMI=Statistiques détaillées
STAT_NEXT=Page suiv.
STAT_PREV=Page préc.
STAT_REVERSE=Inverser
-STAT_PAGE=Page %0:d de %1:d \n (%2:d entrées sur %3:d)
+STAT_PAGE=Page %0:d de %1:d \n Entrées %2:d sur %3:d
STAT_DESC_SCORES=Meilleurs Scores
STAT_DESC_SCORES_REVERSED=Pires scores
@@ -435,311 +525,103 @@ STAT_DESC_BANDS=Artistes favoris
STAT_DESC_BANDS_REVERSED=Artistes impopulaires
STAT_FORMAT_BANDS=%0:s \n Chansons chantées: %1:d
-SCREENSHOT_SAVED=Capture d'écran sauvegardée
-SCREENSHOT_FAILED=Impossible de sauvegarder la capture
-
-INFO_FILE_SAVED=Fichier sauvegardé
-ERROR_SAVE_FILE_FAILED=Impossible de sauvegarder le fichier
-ERROR_FILE_NOT_FOUND=Fichier introuvable
-
-ENCODING_ERROR_ASK_FOR_UTF8=Impossible de sauvegarder sous l'encodage actuel. Convertir en UTF-8 ?
-EDITOR_ERROR_NO_TRACK_SELECTED=Aucune piste n'est sélectionnée
-
-MSG_ERROR_TITLE=Erreur
-MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Confirmation
-MSG_QUIT_USDX=Quitter le jeu ?
-MSG_END_PARTY=Quitter la fête ?
-
-ERROR_NO_SONGS=Chansons introuvables
-ERROR_NO_PLUGINS=Plugins introuvables
-ERROR_NO_MODES_FOR_CURRENT_SETUP=Aucun mode n'est disponible pour les équipes/joueurs actuels.
-ERROR_CAN_NOT_START_PARTY= Une erreur s'est produite au démarrage du mode fête.
-ERROR_CORRUPT_SONG=Impossible de charger la chanson.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Chargement impossible : Fichier non trouvé
-ERROR_CORRUPT_SONG_NO_NOTES=Chargement impossible : Pas de partition trouvée
-ERROR_CORRUPT_SONG_NO_BREAKS=Chargement impossible : Saut de ligne introuvable
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Chargement impossible : Erreur analyseur à la ligne %0:d
-ERROR_NO_EDITOR=Éditeur introuvable
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Plusieurs micros sont attribués au joueur %d. Merci de vérifier vos options d'enregistrement
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Aucun micro n'est attribué au joueur %d. Merci de vérifier vos options d'enregistrement
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Automatique
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-OPTION_PLAYER_1=Jouer 1
-OPTION_PLAYER_2=Jouer 2
-OPTION_PLAYER_3=Jouer 3
-OPTION_PLAYER_4=Jouer 4
-OPTION_PLAYER_5=Jouer 5
-OPTION_PLAYER_6=Jouer 6
-OPTION_ALL_PLAYERS=Tout
-OPTION_ALL_SCORES=Tout
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Annuler
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-SCORE_DOWNLOAD_TITLE=Téléchargement
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-SCORE_DOWNLOAD_CREATE_LIST=Prépartion de la liste...
-SCORE_DOWNLOAD_RECEIVE_LIST=Téléchargement...
-SCORE_DOWNLOAD_CANCEL=Annuler
-SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
-;TODO: PARTY_SELECT_MODE=Mode
-;TODO: PARTY_MODE_CLASSIC=Classic
-;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
-;TODO: PARTY_MODE_CHALLENGE=Challenge
-;TODO: PARTY_MODE_TOURNAMENT=Tournament
-;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
-
-;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
-;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Nbre des manches
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
+PARTY_SELECT_MODE=Mode
+PARTY_MODE_CLASSIC=Classique
+PARTY_MODE_CLASSIC_FREE=Classique libre
+PARTY_MODE_CHALLENGE=Challenge
+PARTY_MODE_TOURNAMENT=Tournoi
+PARTY_MODE_JUKEBOX=Jukebox
+
+PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insérer le nombre et le nom des joueurs
+PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Nombre de joueurs
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Nombre des manches
+PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Finale
+PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Demi-finales
+PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quart de finales
+PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=8ème de finale
PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Joueurs suivants, à vos micros !
-;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
-;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-
-EDIT_TITLE=Titre:
-EDIT_ARTIST=Artiste:
-EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Fichier sauvegardé
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-INFO_EXIT=Quitter l'éditeur sans enregistrer ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
-;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
+PARTY_MODE_TOURNAMENT_WIN_DESC=résultat du tour
+PARTY_MODE_TOURNAMENT_CHAMPION=le champion est : %0:s !
+
+MSG_END_JUKEBOX=Voulez-vous quittez le Jukebox ?
JUKEBOX_RANDOM=Aléatoire
JUKEBOX_REPEAT=Répéter
JUKEBOX_FIND=Rechercher:
JUKEBOX_SORT=Trier:
JUKEBOX_SONGLIST=Liste de chansons
-;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
+SING_ERROR_DUET_MODE_PARTY = On ne peut pas jouer les duos en mode Fête !
-;TODO: SONG_MENU_SONG=Song
-;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
+SONG_MENU_SONG=Chanson
+SONG_MENU_MEDLEY=Medley
SONG_MENU_NAME_SONG=Menu
-;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
+SONG_MENU_NAME_MEDLEY=Menu des Medley
SONG_MENU_ADD_SONG=Ajouter la chanson
SONG_MENU_DELETE_SONG=Supprimer la chanson
-;TODO: SONG_MENU_START_MEDLEY=Sing!
-;TODO: SONG_MENU_START_5_MEDLEY=Sing %0:d Songs!
+SONG_MENU_START_MEDLEY=Chantez !
+SONG_MENU_START_5_MEDLEY=Chantez %0:d chansons !
-;TODO: SONG_MENU_NAME_SORTING=Sort Menu
-;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
-;TODO: SONG_MENU_SORTING_TABS_OFF=Tabs Off
+SONG_MENU_NAME_SORTING=Trier...
+SONG_MENU_SORTING_TABS_ON=Tabulations activées
+SONG_MENU_SORTING_TABS_OFF=Tabulations désactivées
SONG_MENU_SORTING_ALL=Tout
-;TODO: SONG_MENU_SORTING_DUET=Duets
-;TODO: SONG_MENU_SORTING_APPLY=Apply
+SONG_MENU_SORTING_DUET=Duos
+SONG_MENU_SORTING_APPLY=Appliquer
-SING_OPTIONS_WEBCAM=Caméra
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-SING_OPTIONS_WEBCAM_ID=Caméra
-SING_OPTIONS_WEBCAM_RESOLUTION=Résolution
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-SING_OPTIONS_WEBCAM_NO_WEBCAM=Aucune caméra trouvée!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Effet
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Luminosité
-SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Activer l'aperçu
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Desactiver l'aperçu
+PARTY_PLAYLIST_MANUAL=Sélection manuelle
+PARTY_MODE_JUKEBOX_NO_SONGS=La playlist est vide !
+SONG_MENU_OPEN_CATEGORY=Ouvrir la catégorie
+SONG_MENU_CLOSE_CATEGORY=Fermer la catégorie
+SONG_MENU_START_JUKEBOX=Démarrez le Jukebox !
+SONG_MENU_NAME_JUKEBOX=Menu Jukebox
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Nuances de gris
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Noir et blanc
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Négatif
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Suppression du bruit
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Flou gaussien
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
-;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
-;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
-;TODO: SONG_MENU_OPEN_CATEGORY=Open category
-;TODO: SONG_MENU_CLOSE_CATEGORY=Close category
-;TODO: SONG_MENU_START_JUKEBOX=Start Jukebox!
-;TODO: SONG_MENU_NAME_JUKEBOX=Menu Jukebox
-
-;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
-;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
+WEBSITE_EXIST_SONG=La chanson appartient au site : %0:s
+WEBSITE_NOT_EXIST_SONG=La chanson n'appartient à aucun site !
NAME_PLAYERS_COUNT=Nombre de joueurs
NAME_CURRENT_PLAYER=Joueur
-SING_OPTIONS_GAME_SONGMENU=Menu
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-OPTION_VALUE_LIST=Liste
-;TODO: OPTION_VALUE_MOSAIC=Tile
+JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Etirer
+JUKEBOX_SONGOPTIONS_VIDEO_CROP=Couper
+JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
+JUKEBOX_SONGOPTIONS_SAVE=Sauver
+JUKEBOX_SONGOPTIONS_CLOSE=Fermer
+JUKEBOX_SONGOPTIONS_DEFAULT=Défaut
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Sauvé !
-OPTION_VALUE_TO_SING=Chanter
-;TODO: OPTION_VALUE_ACTUAL=Actual
-OPTION_VALUE_NEXT=Suivant
-OPTION_VALUE_OTHER=Autre
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-OPTION_VALUE_GRAY=Gris
-OPTION_VALUE_WHITE=Blanc
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-OPTION_VALUE_SALMON=Saumon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
+JUKEBOX_MODE=Mode Jukebox
+JUKEBOX_OPTIONS_PLAYLIST=Playlist
+JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-JUKEBOX_SONGOPTIONS_VIDEO=Paramètres vidéo
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Taille
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Couleur
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rouge
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Vert
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Bleu
+ABOUT_MAIN=À propos...
+ABOUT_USDX_DEVELOPEDBY=Développé par
+ABOUT_CHECK_CHECKING=recherche de mises à jour...
+ABOUT_CHECK_AVAILABLE=Une nouvelle version est disponible
+ABOUT_CHECK_UPTODATE=WorldParty est à jour
+ABOUT_CHECK_CONNECTION=Pas de connexion internet
+ABOUT_OVERVIEW=Découvrez une nouvelle façon de chanter, seul, en couple ou entre amis. \n L'amusement est garanti.\n\nWorldParty est une fork de la version originale Ultrastar Deluxe 1.1 conçu et développé par l'équipe UltraStar España, il compte avec la plus grande communauté de karaoké.\n\n\nCe programme est gratuit et libre sous licence GPL. \n\n Visitez-nous pour plus d'informations.\n\nhttps://ultrastar-es.org
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-
-;TODO: JUKEBOX_SONGOPTIONS_SAVE=Save
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
-;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
-;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-
-SING_SONG_CREDITS=Crédits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
-;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
-JUKEBOX_OPTIONS_PLAYLIST=Playlist
-;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
+DEVELOPERS_TITLE=Développé par
+DEVELOPERS_OVERVIEW=Personnes qui ont contribué à ce projet:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visitez-nous pour plus d'informations.\n\nhttps://ultrastar-es.org
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Tout
-OPTION_VALUE_PLAYER=Joueur
+SCREENSHOT_SAVED=Capture d'écran sauvegardée
+SCREENSHOT_FAILED=Impossible de sauvegarder la capture
-SING_ABOUT=À propos
-SING_ABOUT_DESC=À propos Ultrastar Deluxe WorldParty
-ABOUT_MAIN=À propos...
-ABOUT_MAIN_DESC=Ultrastar Deluxe WorldParty
-ABOUT_MAIN_WHEREAMI=À propos...
-ABOUT_USDX_CREDITS=Crédits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+MSG_ERROR_TITLE=Erreur
+MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Confirmation
+MSG_QUIT_USDX=Quitter le jeu ?
+MSG_END_PARTY=Quitter la fête ?
+
+ERROR_NO_SONGS=Chansons introuvables
+ERROR_NO_PLUGINS=Plugins introuvables
+ERROR_LOADING_SONGS=Attendez que le chargement de toutes les chansons
+ERROR_CORRUPT_SONG=Impossible de charger la chanson.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Chargement impossible : Fichier non trouvé
+ERROR_CORRUPT_SONG_NO_NOTES=Chargement impossible : Pas de partition trouvée
+ERROR_CORRUPT_SONG_NO_BREAKS=Chargement impossible : Saut de ligne introuvable
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Chargement impossible : Erreur analyseur à la ligne %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Plusieurs micros sont attribués au joueur %d. Merci de vérifier vos options de microphone
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Aucun micro n'est attribué au joueur %d. Merci de vérifier vos options de microphone
\ No newline at end of file
diff --git a/game/languages/Galego.ini b/game/languages/Galego.ini
index 126a96ba..7b81f38b 100644
--- a/game/languages/Galego.ini
+++ b/game/languages/Galego.ini
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Título
OPTION_VALUE_ARTIST=Artista
OPTION_VALUE_TITLE2=Título2
OPTION_VALUE_ARTIST2=Artista2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Ano
+OPTION_VALUE_DECADE=Década
OPTION_VALUE_PLAYLIST=Listaxe
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maximizada
OPTION_VALUE_WHENNOVIDEO=Se non hai video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Cando non hai vídeo e imaxe
OPTION_VALUE_SMALL=Pequeno
OPTION_VALUE_BIG=Grande
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Cantar
OPTION_VALUE_SELECT_PLAYERS=Elixir Xogadores
OPTION_VALUE_OPEN_MENU=Abrir menú
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Cursor por hardware
-OPTION_VALUE_SOFTWARE_CURSOR=Cursor por software
-
SING_LOADING=Cargando...
+SING_LOADING_SONGS=Cargando cancións do cartafol %s
SING_CHOOSE_MODE=Elixe
SING_SING=Canta!
@@ -87,9 +83,6 @@ SING_TOOLS=Utilidades
SING_STATS=Estatística
SING_STATS_DESC=Ver estatísticas
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Crea a túa propia canción
-
SING_GAME_OPTIONS=Opcións
SING_GAME_OPTIONS_DESC=Cambia as opcións do xogo
@@ -103,29 +96,29 @@ SING_OPTIONS_WHEREAMI=Opcións
SING_OPTIONS_GAME=Xogo
SING_OPTIONS_GRAPHICS=Gráficos
SING_OPTIONS_SOUND=Son
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Letras
SING_OPTIONS_THEMES=Aparencia
-SING_OPTIONS_RECORD=Micrófonos
+SING_OPTIONS_MICROPHONES=Micrófonos
SING_OPTIONS_ADVANCED=Avanzado
SING_OPTIONS_EXIT=Volta
SING_OPTIONS_GAME_WHEREAMI=Opcións do xogo
SING_OPTIONS_GAME_DESC=Cambiar as preferencias xerais do xogo
-;TODO: SING_OPTIONS_GAME_PLAYERS=Players
+SING_OPTIONS_GAME_PLAYERS=Xogadores
SING_OPTIONS_GAME_DIFFICULTY=Dificultade
SING_OPTIONS_GAME_LANGUAGE=Idioma
SING_OPTIONS_GAME_TABS=Etiquetas
SING_OPTIONS_GAME_SORTING=Clasificar por
-SING_OPTIONS_GAME_DEBUG=Modo depuración
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activar o gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Opcións gráficas
SING_OPTIONS_GRAPHICS_DESC=Cambiar os axustes do video
SING_OPTIONS_GRAPHICS_RESOLUTION=Resolución
SING_OPTIONS_GRAPHICS_FULLSCREEN=Pantalla completa
-SING_OPTIONS_GRAPHICS_DEPTH=Profundidade de cor
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efectes de cantar
+SING_OPTIONS_GRAPHICS_SCREENFADE=Fos de pantalla
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animació càrrega
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualización
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscopio
SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de liña
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamaño do video
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Opcións de son
SING_OPTIONS_SOUND_DESC=Cambiar os axustes de audio
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Escoitar o micrófono
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Música de fondo
-SING_OPTIONS_SOUND_MIC_BOOST=Potenciar micrófono
SING_OPTIONS_SOUND_CLICK_ASSIST=Axuda de notas
SING_OPTIONS_SOUND_BEAT_CLICK=Clic en compases
-SING_OPTIONS_SOUND_THRESHOLD=Umbral do micro.
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo 2 xogadores
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Volume do adianto
SING_OPTIONS_SOUND_PREVIEWFADING=Desvanecemento
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Opcións de letras
SING_OPTIONS_LYRICS_DESC=Cambiar a forma na que se ven as cancións
SING_OPTIONS_LYRICS_FONT=Tipografía
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Pel
SING_OPTIONS_THEMES_COLOR=Cor
-SING_OPTIONS_RECORD_WHEREAMI=Opcións de micrófonos
-SING_OPTIONS_RECORD_DESC=Cambiar entradas de son
-SING_OPTIONS_RECORD_CARD=Dispositivo de son
-SING_OPTIONS_RECORD_INPUT=Entrada
-SING_OPTIONS_RECORD_CHANNEL=Canle
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opcións de micrófonos
+SING_OPTIONS_MICROPHONES_DESC=Cambiar entradas de son
+SING_OPTIONS_MICROPHONES_CARD=Dispositivo de son
+SING_OPTIONS_MICROPHONES_INPUT=Entrada
+SING_OPTIONS_MICROPHONES_CHANNEL=Canle
+SING_OPTIONS_MICROPHONES_THRESHOLD=Umbral do micro.
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Potenciar micrófono
SING_OPTIONS_ADVANCED_WHEREAMI=Opcións avanzadas
SING_OPTIONS_ADVANCED_DESC=Opcións avanzadas
-SING_OPTIONS_ADVANCED_EFFECTSING=Efectos ó cantar
-SING_OPTIONS_ADVANCED_SCREENFADE=Desvanecemento
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animación de carga
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscil·loscopi
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Preguntar ó borrar
SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de liña
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Ó seleccionar canción
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto menú de festa
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Crear a túa propia canción
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importar texto desde arquivo MIDI
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Volta
-SING_EDIT_BUTTON_CONVERT=Importar
-SING_EDIT_BUTTON_EXIT=Volta
-
-SING_EDIT_NAVIGATE=Navegar
-SING_EDIT_SELECT=Seleccionar
-SING_EDIT_EXIT=Volta
-
SING_LEGEND_SELECT=Seleccionar
SING_LEGEND_NAVIGATE=Navegar
SING_LEGEND_CONTINUE=Proseguir
SING_LEGEND_ESC=Volta
-SING_PLAYER_DESC=Nome dos xogadores
-SING_PLAYER_WHEREAMI=Nome dos xogadores
-SING_PLAYER_ENTER_NAME=Escribe o nome
+SING_PLAYER_TITLE=Perfís
+SING_PLAYER_READY=Xogadores listos para cantar
+SING_PLAYER_COUNT=Número de xogadores
+SING_PLAYER_EDIT=Personaliza un xogador
+SING_PLAYER_NAME=Escribe o teu nome
+SING_PLAYER_COLOR=Escolla unha cor
+SING_PLAYER_LEVEL=Elixe un nivel
+SING_PLAYER_AVATAR=Selecciona o teu avatar
SING_DIFFICULTY_DESC=Selecciona a dificultade
SING_DIFFICULTY_WHEREAMI=Dificultade
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Ir a...
SING_SONG_SELECTION=Selección de canción
SING_SONG_SELECTION_MENU=Menú
SING_SONG_SELECTION_PLAYLIST=Listaxe
+SING_SONG_IN_CAT=Canción
SING_SONGS_IN_CAT=Cancións
PLAYLIST_CATTEXT=Listaxe: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Lenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Vídeo
+SING_SONG_SELECTION_LEGEND_MEDLEY=Versión curta
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Versión curta calculada
+SING_SONG_SELECTION_LEGEND_DUET=Dueto
-;TODO: SING_TIME=TIME
SING_TOTAL=Total
SING_MODE=Só
SING_NOTES=Notas
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= e
SONG_MENU_NAME_MAIN=Menú cancións
SONG_MENU_PLAY=Cantar
SONG_MENU_CHANGEPLAYERS=Elixir xogadores
-SONG_MENU_EDIT=Editar
SONG_MENU_MODI=Cantar unha Modi
SONG_MENU_CANCEL=Anular
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Estatísticas detalladas
STAT_NEXT=Seguinte
STAT_PREV=Anterior
STAT_REVERSE=Invertilo orde
-STAT_PAGE=Páxina %0:d de %1:d \n (%2:d ítems dun total de %3:d)
+STAT_PAGE=Páxina %0:d de %1:d \n Rexistros %2:d de %3:d
STAT_DESC_SCORES=Puntación
STAT_DESC_SCORES_REVERSED=Peores puntacións
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Non se puido gardar
ERROR_FILE_NOT_FOUND=Non se encontrou o arquivo
ENCODING_ERROR_ASK_FOR_UTF8=Non se poden gardar os cambios na codificación actual. Converter a UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Sen pista seleccionada
MSG_ERROR_TITLE=Erro
MSG_INFO_TITLE=Información
@@ -465,7 +447,6 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Imposible cargar a canción: Arquivo non atopa
ERROR_CORRUPT_SONG_NO_NOTES=Imposible cargar a canción: Non se atopan as notas
ERROR_CORRUPT_SONG_NO_BREAKS=Imposible cargar a canción: Non se atopan interrupcións de liña
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Imposible cargar a canción: Erro durante o parsing da liña %0:d
-ERROR_NO_EDITOR=Esta función non está dispoñible en Linux/Mac
ERROR_PLAYER_DEVICE_ASSIGNMENT=Asignaronse máis dun micrófono ó xogador %d. Comproba as opcións de micrófonos.
ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Ó xogador %d non se lle asignou ningún micrófono. Comproba as opcións de micrófonos.
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Xogadores seguintes para os microfonos
PARTY_MODE_TOURNAMENT_WIN_DESC=Resultados da rolda
PARTY_MODE_TOURNAMENT_CHAMPION=O campeón é: %0:s!
-EDIT_TITLE=Título:
-EDIT_ARTIST=Artista:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Carátula
-EDIT_BACKGROUND=Background:
-
-EDIT_START=Inicio:
-EDIT_DURATION=Duración
-EDIT_TONE=Ton
-EDIT_LYRIC=Letra:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Volume do audio:
-EDIT_VOLUME_MIDI=Volume do midi:
-EDIT_VOLUME_CLICK=Volume do click:
-INFO_UNDO=Desfacer a operación
-
-INFO_FILE_SAVED=Arquivo gardado
-INFO_TIME_FIXED=Tempos correxidos
-INFO_CAPITALIZE=Capitalización correxida
-INFO_EXIT=Desea saír do editor sen gardar?
-INFO_SONG_RELOADED=Canción Reaberta
-INFO_DIVIDED_BPM=Dividir BPM
-INFO_MULTIPLIED_BPM=Multiplicar BPM
-INFO_PLAY_SONG=Play Música
-INFO_PLAY_SENTENCE=Play Frase
-INFO_CURRENT_LINE=Liña:
-INFO_CURRENT_NOTE=Nota:
-
INFO_MIDI_CHANNEL_OFF= Canle %0:s desactivado!
INFO_MIDI_CHANNEL_RESET= Todos os canles activos!
@@ -609,8 +560,6 @@ SING_ERROR_DUET_MODE_PARTY = Dueto! Non se pode xogar no modo festa!
SONG_MENU_SONG=Canción
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Ordear
-SONG_MENU_EXTRA=Extras
SONG_MENU_NAME_SONG=Menu Canción
SONG_MENU_NAME_MEDLEY=Menu Medley
@@ -667,11 +616,11 @@ NAME_PLAYERS_COUNT=Nº de xogadores
NAME_CURRENT_PLAYER=Xogador
SING_OPTIONS_GAME_SONGMENU=Menú cancións
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
+OPTION_VALUE_ROULETTE=Roleta
+OPTION_VALUE_CHESSBOARD=Tabuleiro de xadrez
+OPTION_VALUE_CAROUSEL=Carrusel
+OPTION_VALUE_SLOT_MACHINE=Máquina tragamonedas
+ OPTION_VALUE_LIST=Lista
;TODO: OPTION_VALUE_MOSAIC=Tile
SING_OPTIONS_JUKEBOX=Jukebox
@@ -679,9 +628,9 @@ SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Cantar
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
+OPTION_VALUE_ACTUAL=Superior
+OPTION_VALUE_NEXT=Inferior
+OPTION_VALUE_OTHER=Outro
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
;TODO: OPTION_VALUE_GRAY=Gray
@@ -710,7 +659,7 @@ OPTION_VALUE_TO_SING=Cantar
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparencia
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Cor
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -727,9 +676,9 @@ JUKEBOX_SONGOPTIONS_SAVE=Gardar
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
+SING_SONG_CREDITS=Créditos
SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
+SING_JUKEBOX_DESC=Escoitar as miñas cancións
;TODO: JUKEBOX_MODE=Jukebox Mode
;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
@@ -741,10 +690,15 @@ JUKEBOX_OPTIONS_PLAYLIST_MODE=Modo
OPTION_VALUE_ALL=Todo
OPTION_VALUE_PLAYER=Xogador
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+SING_ABOUT=Acerca de
+SING_ABOUT_DESC=Acerca de Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Acerca de...
+ABOUT_USDX_DEVELOPEDBY=Desenvolvido por
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Descubre unha nova forma de cantar, só, en parella ou cos amigos. \n A diversión está garantida.\n\nWorldParty é un fork da versión orixinal Ultrastar Deluxe 1.1 deseñado e desenvolvido polo equipo UltraStar España, conta coa maior comunidade de karaoke.\n\n\nEste programa é gratuíto e libre baixo a licenza GPL. \n\n Visita connosco para obter máis información.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Desenvolvido por
+DEVELOPERS_OVERVIEW=Persoas que contribuíron a este proxecto:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visita connosco para obter máis información.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/G\303\240idhlig.ini" "b/game/languages/G\303\240idhlig.ini"
index d97e75f4..861315a3 100644
--- "a/game/languages/G\303\240idhlig.ini"
+++ "b/game/languages/G\303\240idhlig.ini"
@@ -1,220 +1,318 @@
[Text]
LANGUAGE=Gàidhlig
-OPTION_VALUE_EASY=Furasta
-OPTION_VALUE_MEDIUM=Meadhanach
-OPTION_VALUE_HARD=Doirbh
-
-OPTION_VALUE_ON=Air
-OPTION_VALUE_OFF=Dheth
-
-OPTION_VALUE_EDITION=Deasachadh
-OPTION_VALUE_GENRE=Gnè
-OPTION_VALUE_LANGUAGE=Cànan
-OPTION_VALUE_FOLDER=Pasgan
-OPTION_VALUE_TITLE=Tiotal
-OPTION_VALUE_ARTIST=Neach-ciùil
-OPTION_VALUE_TITLE2=Tiotal 2
-OPTION_VALUE_ARTIST2=Neach-ciùil 2
-OPTION_VALUE_YEAR=Bliadhna
-OPTION_VALUE_DECADE=Deichead
-OPTION_VALUE_PLAYLIST=Liosta-chluich
-
-OPTION_VALUE_BORDERLESS=Gun iomall
-
-OPTION_VALUE_WHENNOVIDEO=Mur eil video ann
-OPTION_VALUE_WHENNOVIDEOANDIMAGE=Mur eil video no dealbh ann
-
-OPTION_VALUE_SMALL=Beag
-OPTION_VALUE_BIG=Mòr
-
-OPTION_VALUE_HALF=Leth-mheud
-OPTION_VALUE_FULL_VID=Làn-sgrìn (video)
-OPTION_VALUE_FULL_VID_BG=Làn-sgrìn (cùlaibh ⁊ video)
-
-OPTION_VALUE_GAIN_SOFT=Bog
-OPTION_VALUE_GAIN_MEDIUM=Meadhanach
-OPTION_VALUE_GAIN_HARD=Cruaidh
-
-OPTION_VALUE_AUTO=Fèin-obrachail
-OPTION_VALUE_SEC=Diog
-OPTION_VALUE_SECS=diog(an)
-
-OPTION_VALUE_PLAIN=Lom
-OPTION_VALUE_OLINE1=Oir-loidhne 1
-OPTION_VALUE_OLINE2=Oir-loidhne 2
-
-OPTION_VALUE_SIMPLE=Simplidh
-OPTION_VALUE_ZOOM=Sùm
-OPTION_VALUE_SLIDE=Lìonadh
-OPTION_VALUE_BALL=Bàla
-OPTION_VALUE_SHIFT=Leum
-
-OPTION_VALUE_EURO=Eòrpach
-OPTION_VALUE_JAPAN=Seapanach
-OPTION_VALUE_AMERICAN=Aimeireaganach
-
-OPTION_VALUE_BLUE=Gorm
-OPTION_VALUE_GREEN=Uaine
-OPTION_VALUE_PINK=Pinc
-OPTION_VALUE_RED=Dearg
-OPTION_VALUE_VIOLET=Purpaidh
-OPTION_VALUE_ORANGE=Orainds
-OPTION_VALUE_YELLOW=Buidhe
-OPTION_VALUE_BROWN=Donn
-OPTION_VALUE_BLACK=Dubh
-
-OPTION_VALUE_SING=Seinn
-OPTION_VALUE_SELECT_PLAYERS=Tagh cluicheadairean
-OPTION_VALUE_OPEN_MENU=Fosgail an clàr-taice
-
-OPTION_VALUE_SYSTEM_CURSOR=Air [cùrsair an t-siostaim]
-OPTION_VALUE_GAME_CURSOR=Air [cùrsair a’ gheama]
-OPTION_VALUE_HARDWARE_CURSOR=Cùrsair bathair-chruaidh
-OPTION_VALUE_SOFTWARE_CURSOR=Cùrsair bathair-bhog
-
SING_LOADING=’Ga luchdadh…
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
-SING_CHOOSE_MODE=Tagh am modh
SING_SING=Seinn
SING_SING_DESC=Geama luath: seinn ’nad aonar no òran-càraid
SING_MULTI=Cèilidh
SING_MULTI_DESC=Seinn sa mhodh-chèilidh
-SING_TOOLS=Innealan
+SING_JUKEBOX=Inneal-chlàr
+SING_JUKEBOX_DESC=Èist ris a’ chruinneachadh agam
SING_STATS=Stadastaireachd
SING_STATS_DESC=Seall an stadastaireachd
-SING_EDITOR=Deasaiche
-SING_EDITOR_DESC=Cruthaich òran agad fhèin
-
SING_GAME_OPTIONS=Roghainnean a’ gheama
SING_GAME_OPTIONS_DESC=Atharraich roghainnean a’ gheama
SING_EXIT=Fàg an-seo
SING_EXIT_DESC=Fàg an geama
+SING_ABOUT=Mu dhèidhinn
+SING_ABOUT_DESC=Mu Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Pròifil
+SING_PLAYER_READY=Luchd-cluiche deiseil airson seinn
+SING_PLAYER_COUNT=Àireamh de chluicheadairean
+SING_PLAYER_EDIT=Dèan gnàthachadh air cluicheadair
+SING_PLAYER_NAME=Sgrìobh do ainm
+SING_PLAYER_COLOR=Tagh dath
+SING_PLAYER_LEVEL=Tagh ìre
+SING_PLAYER_AVATAR=Tagh do avatar
+
+OPTION_VALUE_EASY=Furasta
+OPTION_VALUE_MEDIUM=Meadhanach
+OPTION_VALUE_HARD=Doirbh
+
SING_OPTIONS=Roghainnean
-SING_OPTIONS_DESC=Atharraich na roghainnean
-SING_OPTIONS_WHEREAMI=Roghainnean
SING_OPTIONS_GAME=Geama
SING_OPTIONS_GRAPHICS=Grafaigeachd
SING_OPTIONS_SOUND=Fuaim
-SING_OPTIONS_INPUT=Ion-chur
SING_OPTIONS_LYRICS=Faclan
SING_OPTIONS_THEMES=Ùrlaran
-SING_OPTIONS_RECORD=Clàradh
+SING_OPTIONS_MICROPHONES=Clàradh
SING_OPTIONS_ADVANCED=Adhartach
+SING_OPTIONS_NETWORK=Eadar-lìon
+SING_OPTIONS_WEBCAM=Camara-lìn
+SING_OPTIONS_JUKEBOX=Inneal-chlàr
SING_OPTIONS_EXIT=Air ais
-SING_OPTIONS_GAME_WHEREAMI=Roghainnean a’ gheama
-SING_OPTIONS_GAME_DESC=Roghainnean coitcheann a’ gheama
-SING_OPTIONS_GAME_PLAYERS=Cluicheadairean
-SING_OPTIONS_GAME_DIFFICULTY=Duilgheadas
SING_OPTIONS_GAME_LANGUAGE=Cànan
+SING_OPTIONS_GAME_SONGMENU=Clàr-taice nan òran
SING_OPTIONS_GAME_TABS=Tabaichean
SING_OPTIONS_GAME_SORTING=Seòrsachadh
-SING_OPTIONS_GAME_DEBUG=Dì-bhugachadh
+SING_OPTIONS_GAME_SHOWSCORES=Seall na sgòran
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Gnìomhaich gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Clàr-taileisg
+OPTION_VALUE_CAROUSEL=Timcheallan
+OPTION_VALUE_SLOT_MACHINE=Inneal-cluiche
+OPTION_VALUE_LIST=Liosta
+OPTION_VALUE_MOSAIC=Tiotal
+
+OPTION_VALUE_ON=Air
+OPTION_VALUE_OFF=Dheth
+
+OPTION_VALUE_EDITION=Deasachadh
+OPTION_VALUE_GENRE=Gnè
+OPTION_VALUE_LANGUAGE=Cànan
+OPTION_VALUE_FOLDER=Pasgan
+OPTION_VALUE_TITLE=Tiotal
+OPTION_VALUE_ARTIST=Neach-ciùil
+OPTION_VALUE_ARTIST2=Neach-ciùil 2
+OPTION_VALUE_YEAR=Bliadhna
+OPTION_VALUE_DECADE=Deichead
+OPTION_VALUE_PLAYLIST=Liosta-chluich
+
+OPTION_VALUE_WHEN_EXISTS=Nuair a bhios gin ann
-SING_OPTIONS_GRAPHICS_WHEREAMI=Roghainnean na grafaigeachd
-SING_OPTIONS_GRAPHICS_DESC=Roghainnean na grafaigeachd
-SING_OPTIONS_GRAPHICS_RESOLUTION=Dùmhlachd-bhreacaidh
SING_OPTIONS_GRAPHICS_FULLSCREEN=Làn-sgrìn
-SING_OPTIONS_GRAPHICS_DEPTH=Doimhne
+SING_OPTIONS_GRAPHICS_RESOLUTION=Dùmhlachd-bhreacaidh
+SING_OPTIONS_GRAPHICS_SCREENFADE=Crìonadh na sgrìn
+SING_OPTIONS_GRAPHICS_EFFECTSING=Èifeachdan seinne
SING_OPTIONS_GRAPHICS_VISUALIZER=Fir chlis
-;TODO: SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscope
-SING_OPTIONS_GRAPHICS_LINEBONUS=Duais loidhne
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Meud an fhilm
-SING_OPTIONS_SOUND_WHEREAMI=Roghainnean fuaime
-SING_OPTIONS_SOUND_DESC=Roghainnean fuaime
+OPTION_VALUE_BORDERLESS=Gun iomall
+
+OPTION_VALUE_WHENNOVIDEO=Mur eil video ann
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Mur eil video no dealbh ann
+
+OPTION_VALUE_HALF=Leth-mheud
+OPTION_VALUE_FULL_VID=Làn-sgrìn (video)
+OPTION_VALUE_FULL_VID_BG=Làn-sgrìn (cùlaibh ⁊ video)
+
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Cluich a’ mhicreofon
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Ceòl a’ chùlaibh
-SING_OPTIONS_SOUND_MIC_BOOST=Meudachadh a’ mhic
SING_OPTIONS_SOUND_CLICK_ASSIST=Cuidiche cliog
SING_OPTIONS_SOUND_BEAT_CLICK=Cliog nam buillean
-SING_OPTIONS_SOUND_THRESHOLD=Stairsneach
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modh dà-chluicheadair
SING_OPTIONS_SOUND_MUSICAUTOGAIN=Meudachadh a’ chiùil
SING_OPTIONS_SOUND_PREVIEWVOLUME=Ro-sheall an àirde
SING_OPTIONS_SOUND_PREVIEWFADING=Ro-sheall an crìonadh
-SING_OPTIONS_INPUT_WHEREAMI=Roghainnean an ion-chuir
-SING_OPTIONS_INPUT_DESC=Roghainnean an ion-chuir
-SING_OPTIONS_INPUT_MOUSE=Luchag
-SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Uidheaman-smachd
+OPTION_VALUE_GAIN_SOFT=Bog
+OPTION_VALUE_GAIN_MEDIUM=Meadhanach
+OPTION_VALUE_GAIN_HARD=Cruaidh
+
+OPTION_VALUE_AUTO=Fèin-obrachail
+OPTION_VALUE_SEC=Diog
+OPTION_VALUE_SECS=diog(an)
-SING_OPTIONS_LYRICS_WHEREAMI=Roghainnean nam faclan
-SING_OPTIONS_LYRICS_DESC=Roghainnean nam faclan
SING_OPTIONS_LYRICS_FONT=Cruth-clò
SING_OPTIONS_LYRICS_EFFECT=Èifeachd
-SING_OPTIONS_LYRICS_SOLMIZATION=Canntaireachd
SING_OPTIONS_LYRICS_NOTELINES=Clàran
-SING_OPTIONS_THEMES_WHEREAMI=Roghainnean nan ùrlaran
-SING_OPTIONS_THEMES_DESC=Roghainnean nan ùrlaran ’s nan craicnean
+;TODO: OPTION_VALUE_PLAIN=stylized
+;TODO: OPTION_VALUE_OLINE1=with thin edge
+;TODO: OPTION_VALUE_OLINE2=with thick edge
+
+OPTION_VALUE_SIMPLE=Simplidh
+OPTION_VALUE_ZOOM=Sùm
+OPTION_VALUE_SLIDE=Lìonadh
+OPTION_VALUE_BALL=Bàla
+OPTION_VALUE_SHIFT=Leum
+
SING_OPTIONS_THEMES_THEME=Ùrlar
SING_OPTIONS_THEMES_SKIN=Craiceann
SING_OPTIONS_THEMES_COLOR=Dath
-SING_OPTIONS_RECORD_WHEREAMI=Roghainnean a’ chlàraidh
-SING_OPTIONS_RECORD_DESC=Roghainnean a’ mhicreofon
-SING_OPTIONS_RECORD_CARD=Cairt fuaime
-SING_OPTIONS_RECORD_INPUT=Ion-chur
-SING_OPTIONS_RECORD_CHANNEL=Seanail
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Roghainnean adhartach
-SING_OPTIONS_ADVANCED_DESC=Roghainnean adhartach
-SING_OPTIONS_ADVANCED_EFFECTSING=Èifeachdan seinne
-SING_OPTIONS_ADVANCED_SCREENFADE=Crìonadh na sgrìn
-SING_OPTIONS_ADVANCED_LOADANIMATION=Luchdaich beòthachadh
+SING_OPTIONS_MICROPHONES_CARD=Cairt fuaime
+SING_OPTIONS_MICROPHONES_INPUT=Ion-chur
+SING_OPTIONS_MICROPHONES_CHANNEL=Seanail
+SING_OPTIONS_MICROPHONES_THRESHOLD=Stairsneach
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Meudachadh a’ mhic
+
+SING_OPTIONS_ADVANCED_DEBUG=Dì-bhugachadh
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscope
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Ceistean dìonaidh
-SING_OPTIONS_ADVANCED_LINEBONUS=Duais loidhne
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Às dèidh òrain tagh
SING_OPTIONS_ADVANCED_PARTYPOPUP=Fèin-chlàr-cèilidh
+SING_OPTIONS_ADVANCED_TOPSCORES=Na sgòran as àirde
+SING_OPTIONS_ADVANCED_SINGSCORES=Sgòran seinn
+
+OPTION_VALUE_ALL=Na h-uile
+OPTION_VALUE_PLAYER=Cluicheadair
+
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Brùth air an iuchair “Insert” gus an cleachdaiche a chur ris an lìon seo…
+SING_OPTIONS_NETWORK_WEBSITE=Làrach-lìn
+SING_OPTIONS_NETWORK_USERNAME=Ainm-cleachdaiche
+SING_OPTIONS_NETWORK_PASSWORD=Facal-faire
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Cuir a-null an t-ainm
+SING_OPTIONS_NETWORK_AUTO_MODE=Fèin-obrachail
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Cluicheadair
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Cuir gu fèin-obrachail (furasta)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Cuir gu fèin-obrachail (meadhanach)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Cuir gu fèin-obrachail (doirbh)
+SING_OPTIONS_NETWORK_NO_DLL=Cha deach clàr curaidh co-chòrdail a lorg!
+SING_OPTIONS_NETWORK_DELETE_PLAYER=A bheil thu airson an cleachdaiche %0:s air an làrach-lìn %1:s a sguabadh ás?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Cuir a-steach
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Sguab às
+
+OPTION_PLAYER_1=Cluicheadair 1
+OPTION_PLAYER_2=Cluicheadair 2
+OPTION_PLAYER_3=Cluicheadair 3
+OPTION_PLAYER_4=Cluicheadair 4
+OPTION_PLAYER_5=Cluicheadair 5
+OPTION_PLAYER_6=Cluicheadair 6
+OPTION_ALL_PLAYERS=Na h-uile
+OPTION_ALL_SCORES=Na h-uile
+OPTION_VALUE_SAVE=Sàbhail
+OPTION_VALUE_SEND=Cuir a-null
+
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Lìon na raointean:
+MSG_INSERT_USER_ADD=Cuir ris
+MSG_INSERT_USER_CANCEL=Sguir dheth
+
+WEBSITE_NO_CONNECTION=Chan eil ceangal dhan làrach-lìn ann!
+WEBSITE_LOGIN_ERROR=Chan eil an clàradh a-steach mar bu chòir!
+WEBSITE_BLANK_LOGIN=Cha raon falamh ann!
+WEBSITE_EXIST_USER=Tha an cleachdaiche seo ann mar-thà!
+WEBSITE_ERROR_SCORE=Mearachd an sgòir!
+WEBSITE_OK_SEND=Chaidh an sgòr a chur a-null!
+WEBSITE_ERROR_SCORE_DUPLICATED=Tha an sgòr seo ann mar-thà!
+WEBSITE_ERROR_SONG=Cha deach a t-òran a lorg!
+WEBSITE_SAVE_SCORE=Chaidh an sgòr a shàbhaladh!
+WEBSITE_NO_CONNECTION_SAVE=Chan eil ceangal dhan làrach-lìn ann! A bheil thu airson an chleachdaiche a shàbhaladh co-dhiù?
+
+SONG_MENU_REFRESH_SCORES=Ùraich na sgòran
+SONG_MENU_REFRESH_SCORES_TITLE=Ùraich
+SONG_MENU_REFRESH_SCORES_NO_WEB=Chan eil làrach-lìn ann!
+SONG_MENU_REFRESH_SCORES_ONLINE=Air loidhne
+SONG_MENU_REFRESH_SCORES_FILE=Faidhle
+SONG_MENU_REFRESH_SCORES_ALL_WEB=A h-uile làrach-lìn
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=A h-uile òran
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=An t-òran seo
+SONG_MENU_REFRESH_SCORES_REFRESH=Ùraich
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Mearachd leis a’ cheangal dhan làrach-lìn: %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=Cha deach am faidhle a lorg: “%0:s [Download Scores]”!
-SING_EDIT=Deasaiche
-SING_EDIT_MENU_DESCRIPTION=Cruthaich òran agad fhèin
+SONG_SCORE_MAX=As fearr:
+SONG_SCORE_MEDIA=Cuibheasach:
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Ion-phortaich teacsa o fhaidhle MIDI
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Air ais
-SING_EDIT_BUTTON_CONVERT=Ion-phortaich
-SING_EDIT_BUTTON_EXIT=Air ais
+SCORE_SEND_DESC=Cuir a-null an sgòr
+SCORE_SEND=Cuir a-null
+SCORE_SEND_PLAYER=Cluicheadair
+SCORE_SEND_OTHER_USER=Ainm-cleachdaiche eile
+SCORE_SAVE=Sàbhail
+
+SCORE_DOWNLOAD_TITLE=Luchdadh a-nuas
+SCORE_DOWNLOAD_SONG=Òran:
+SCORE_DOWNLOAD_CREATE_LIST=Ag ullachadh na liosta…
+SCORE_DOWNLOAD_RECEIVE_LIST=’Ga luchdadh a-nuas…
+SCORE_DOWNLOAD_CANCEL=Sguir dheth
+SCORE_DOWNLOAD_OK=Ceart ma-thà
+SCORE_DOWNLOAD_SONG_UPDATE=Chaidh %0:d òra(i)n atharrachadh leis an lìon!
-SING_EDIT_NAVIGATE=Seòl
-SING_EDIT_SELECT=Tagh
-SING_EDIT_EXIT=Air ais
+SING_OPTIONS_WEBCAM_ID=Camara-lìn
+SING_OPTIONS_WEBCAM_RESOLUTION=Dùmhlachd-bhreacaidh
+SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FLIP=Thoir flip
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Soilleireachd
+SING_OPTIONS_WEBCAM_SATURATION=Sàthachd
+SING_OPTIONS_WEBCAM_HUE=Tuar
+SING_OPTIONS_WEBCAM_EFFECT=Èifeachd
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Cuir an ro-shealladh an comas
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Cuir an ro-shealladh à comas
+SING_OPTIONS_WEBCAM_NO_WEBCAM=cha deach camara-lìn a lorg!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Àbhaisteach
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Liath-sgèile
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Dubh ⁊ geal
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Neagataibh
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Dealbh bìnearaidh
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Sgaoil
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Stairsneach
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Oirean
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Sgleò Gaussach
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Co-chothromaichte
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Bleith
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Follaiseachd
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Loidhne
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Cruth
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Dath
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Dearg
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Uaine
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Gorm
+
+JUKEBOX_SONGOPTIONS_VIDEO=Roghainnean video
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Co-mheas deilbh
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Leud
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Àirde
+JUKEBOX_SONGOPTIONS_LYRIC=Roghainnean nam faclan
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Meud
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Suidheachadh
+
+OPTION_VALUE_TO_SING=Seinn
+OPTION_VALUE_ACTUAL=Ann an da-rìribh
+OPTION_VALUE_NEXT=Air adhart
+OPTION_VALUE_OTHER=Eile
+OPTION_VALUE_FILL=Lìon
+OPTION_VALUE_OUTLINE=Oir-loidhne
+OPTION_VALUE_BLUE=Gorm
+OPTION_VALUE_GREEN=Uaine
+OPTION_VALUE_PINK=Pinc
+OPTION_VALUE_RED=Dearg
+OPTION_VALUE_VIOLET=Purpaidh
+OPTION_VALUE_ORANGE=Orainds
+OPTION_VALUE_YELLOW=Buidhe
+OPTION_VALUE_BROWN=Donn
+OPTION_VALUE_BLACK=Dubh
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Liath
+OPTION_VALUE_WHITE=Geal
+OPTION_VALUE_TURQUOISE=Tuirc-ghorm
+OPTION_VALUE_SALMON=Dath a’ bhradain
+OPTION_VALUE_GREENYELLOW=Uaine-buidhe
+OPTION_VALUE_LAVENDER=Dath an lus-liath
+OPTION_VALUE_BEIGE=Bèis
+OPTION_VALUE_TEAL=Dath a’ chrann-lacha
+OPTION_VALUE_ORCHID=Dath na mogairle
+OPTION_VALUE_STEELBLUE=Gorm na stàilinne
+OPTION_VALUE_PLUM=Dath a’ phlumais
+OPTION_VALUE_CHOCOLATE=Donn an teòclaid
+OPTION_VALUE_GOLD=Dath an òir
+OPTION_VALUE_DARKBLUE=Dorch-ghorm
+OPTION_VALUE_SKY=Gorm an speura
+OPTION_VALUE_HARLEQUIN=Cleasaiche-fanaid
+OPTION_VALUE_CYAN=Saidhean
+OPTION_VALUE_FLAME=Lasair
SING_LEGEND_SELECT=Tagh
SING_LEGEND_NAVIGATE=Seòl
SING_LEGEND_CONTINUE=Air adhart
SING_LEGEND_ESC=Air ais
-SING_PLAYER_DESC=Cuir a-steach ainmean nan cluicheadairean
-SING_PLAYER_WHEREAMI=Ainmean nan cluicheadairean
-SING_PLAYER_ENTER_NAME=Cuir a-steach ainm
-
-SING_DIFFICULTY_DESC=Tagh an duilgheadas
-SING_DIFFICULTY_WHEREAMI=Duilgheadas
-SING_DIFFICULTY_CONTINUE=Gu taghadh an òrain
-SING_EASY=Furasta
-SING_MEDIUM=Meadhanach
-SING_HARD=Doirbh
-
-SING_SONG_SELECTION_DESC=Tagh an t-òran agad
-SING_SONG_SELECTION_WHEREAMI=Taghadh an òrain
-SING_SONG_SELECTION_GOTO=Rach gu …
SING_SONG_SELECTION=Taghadh an òrain
SING_SONG_SELECTION_MENU=Clàr-taice
SING_SONG_SELECTION_PLAYLIST=Liosta-chluich
+SING_SONG_IN_CAT=Òran
SING_SONGS_IN_CAT=Òrain
PLAYLIST_CATTEXT=Liosta-chluich: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Sgeulachd
+SING_SONG_SELECTION_LEGEND_VIDEO=Bhidio
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
-SING_TIME=ÙINE
SING_TOTAL=Iomlan
SING_MODE=Seinn ’nad aonar
SING_NOTES=Pongan
@@ -255,8 +353,6 @@ IMPLODE_GLUE2=’s
SONG_MENU_NAME_MAIN=Clàr-taice an òrain
SONG_MENU_PLAY=Seinn
SONG_MENU_CHANGEPLAYERS=Cluicheadairean eile
-SONG_MENU_EDIT=Deasaich
-SONG_MENU_MODI=Seinn modh
SONG_MENU_CANCEL=Sguir dheth
SONG_MENU_NAME_PLAYLIST=Clàr-taice
@@ -289,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Cleachd amadan
SONG_JUMPTO_DESC=Lorg òran
SONG_JUMPTO_TYPE_DESC=Lorg:
-SONG_JUMPTO_TYPE1=Na h-uile
-SONG_JUMPTO_TYPE2=Tiotal
-SONG_JUMPTO_TYPE3=Neach-ciùil
-SONG_JUMPTO_SONGSFOUND=Chaidh %d òra(i)n a lorg
-SONG_JUMPTO_NOSONGSFOUND=Cha deach òran a lorg
-SONG_JUMPTO_HELP=Sgrìobh an teacsa ri lorg
-SONG_JUMPTO_CATTEXT=Lorg: %s
PARTY_MODE=Modh cèilidh
PARTY_DIFFICULTY=Duilgheadas
@@ -313,25 +402,22 @@ PARTY_LEGEND_CONTINUE=Air adhart
PARTY_OPTIONS_DESC=Roghainnean aig a’ gheama chèilidh
PARTY_OPTIONS_WHEREAMI=Roghainnean cèilidh
-PARTY_PLAYER_DESC=Cuir a-steach ainmean nan cluicheadairean ’s nan sgiobaidhean!
-PARTY_PLAYER_WHEREAMI=Ainmean na cèilidh
PARTY_PLAYER_ENTER_NAME=Sgrìobh ainmean
-
-PARTY_ROUNDS_DESC=Tagh na modhan a tha thu airson cluich
-PARTY_ROUNDS_WHEREAMI=Cuairtean na cèilidh
PARTY_ROUNDS_LEGEND_CONTINUE=Tòisich air geama cèilidh
PARTY_ROUNDCOUNT=Cuairtean
PARTY_SELECTMODE=Cuairt %d
-PARTY_ROUND_DESC=Na h-ath-chluicheadairean dhan mhicreofon
-PARTY_ROUND_WHEREAMI=Ath-chuairt na cèilidh
PARTY_ROUND_LEGEND_CONTINUE=Tòisich a’ chuairt
PARTY_SONG_WHEREAMI=Tagh òrain na cèilidh
PARTY_SONG_LEGEND_CONTINUE=Seinn
PARTY_SONG_MENU=Clàr-taice
+OPTION_VALUE_SING=Seinn
+OPTION_VALUE_SELECT_PLAYERS=Tagh cluicheadairean
+OPTION_VALUE_OPEN_MENU=Fosgail an clàr-taice
+
PARTY_SCORE_DESC=Sgòr na cuairte mu dheireadh
PARTY_SCORE_WHEREAMI=Puingean na cèilidh
@@ -407,8 +493,6 @@ MODE_HARDCORE_NAME=Gaisgich
MODE_HARDCORE_DESC=Strì airsona bhith trì loidhnichean air thoiseach a’ cho-fharpaisich!
STAT_MAIN=Stadastaireachd
-STAT_MAIN_DESC=Coitcheann
-STAT_MAIN_WHEREAMI=Stadastaireachd
STAT_OVERVIEW_INTRO=Stadastaireachd %0:s. \nAn t-ath-shuidheachadh mu dheireadh aig %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d òrain (%3:d le video), %1:d dhiubh air an cluich roimhe is %2:d gun chluich fhathast.\n Is %5:s le %4:s an t-òran as fhèillmhoire.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Stadastaireachd
STAT_NEXT=An ath-dhuilleag
STAT_PREV=An duilleag roimhpe
STAT_REVERSE=Òrdugh contrarra
-STAT_PAGE=Duilleag %0:d à %1:d\n(innteart %2:d à %3:d)
+STAT_PAGE=Duilleag %0:d à %1:d \n Innteart %2:d à %3:d
STAT_DESC_SCORES=Sgòran àrda
STAT_DESC_SCORES_REVERSED=Sgòran ìosal
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Còmhlanan fèillmhor
STAT_DESC_BANDS_REVERSED=Còmhlanan nach do chòrd
STAT_FORMAT_BANDS=%0:s \nChaidh a sheinn %1:d turas/tursan
-SCREENSHOT_SAVED=Chaidh an glacadh-sgrìn a shàbhaladh
-SCREENSHOT_FAILED=Cha b’ urrainn dhuinn an glacadh-sgrìn a shàbhaladh
-
-INFO_FILE_SAVED=Chaidh am faidhle a shàbhaladh
-ERROR_SAVE_FILE_FAILED=Cha b’ urrainn dhuinn am faidhle a shàbhaladh
-ERROR_FILE_NOT_FOUND=Cha deach am faidhle a lorg
-
-ENCODING_ERROR_ASK_FOR_UTF8=Cha ghabh na h-atharraichean a shàbhaladh leis a’ chòdachadh seo. A bheil thu airson iompachadh gu UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Cha deach traca a thaghadh
-
-MSG_ERROR_TITLE=Mearachd
-MSG_INFO_TITLE=Fiosrachadh
-MSG_QUESTION_TITLE=Ceist
-MSG_QUIT_USDX=A bheil thu airson UltraStar fhàgail?
-MSG_END_PARTY=A bheil thu airson am modh cèilidh fhàgail?
-
-ERROR_NO_SONGS=Cha deach òran a luchdadh
-ERROR_NO_PLUGINS=Cha deach plugan a luchdadh
-ERROR_NO_MODES_FOR_CURRENT_SETUP=Chan eil modh ri làimh airson an roghainn de chluicheadair/sgioba seo
-ERROR_CAN_NOT_START_PARTY=Thachair mearachd le tòiseachadh a’ gheama chèilidh
-ERROR_CORRUPT_SONG=Cha b’ urrainn dhuinn an t-òran a luchdadh.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach am faidhle a lorg
-ERROR_CORRUPT_SONG_NO_NOTES=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach pong a lorg
-ERROR_CORRUPT_SONG_NO_BREAKS=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach brisidhean loidhne a lorg
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Cha b’ urrainn dhuinn an t-òran a luchdadh: Mearachd e parsadh na loidhne %0:d
-ERROR_NO_EDITOR=Chan eil an gleus seo ri làimh san tionndadh seo.
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Chaidh iomadh micreofon a shònrachadh dha chluicheadair %d. Feuch an toir thu sùil air na roghainnean clàraidh agad
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Cha deach micreofon a shònrachadh dha chluicheadair %d. Feuch an toir thu sùil air na roghainnean clàraidh agad
-
-SING_OPTIONS_NETWORK=Eadar-lìon
-SING_OPTIONS_NETWORK_WHEREAMI=Roghainnean an eadar-lìn
-SING_OPTIONS_NETWORK_DESC=Roghainnean coitcheann an eadar-lìn
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Brùth air an iuchair “Insert” gus an cleachdaiche a chur ris an lìon seo…
-SING_OPTIONS_NETWORK_WEBSITE=Làrach-lìn
-SING_OPTIONS_NETWORK_USERNAME=Ainm-cleachdaiche
-SING_OPTIONS_NETWORK_PASSWORD=Facal-faire
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Cuir a-null an t-ainm
-SING_OPTIONS_NETWORK_AUTO_MODE=Fèin-obrachail
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Cluicheadair
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Cuir gu fèin-obrachail (furasta)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Cuir gu fèin-obrachail (meadhanach)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Cuir gu fèin-obrachail (doirbh)
-SING_OPTIONS_NETWORK_NO_DLL=Cha deach clàr curaidh co-chòrdail a lorg!
-SING_OPTIONS_NETWORK_DELETE_PLAYER=A bheil thu airson an cleachdaiche %0:s air an làrach-lìn %1:s a sguabadh ás?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Cuir a-steach
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Sguab às
-
-OPTION_PLAYER_1=Cluicheadair 1
-OPTION_PLAYER_2=Cluicheadair 2
-OPTION_PLAYER_3=Cluicheadair 3
-OPTION_PLAYER_4=Cluicheadair 4
-OPTION_PLAYER_5=Cluicheadair 5
-OPTION_PLAYER_6=Cluicheadair 6
-OPTION_ALL_PLAYERS=Na h-uile
-OPTION_ALL_SCORES=Na h-uile
-OPTION_VALUE_SAVE=Sàbhail
-OPTION_VALUE_SEND=Cuir a-null
-
-MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC=Lìon na raointean:
-MSG_INSERT_USER_ADD=Cuir ris
-MSG_INSERT_USER_CANCEL=Sguir dheth
-
-WEBSITE_NO_CONNECTION=Chan eil ceangal dhan làrach-lìn ann!
-WEBSITE_LOGIN_ERROR=Chan eil an clàradh a-steach mar bu chòir!
-WEBSITE_BLANK_LOGIN=Cha raon falamh ann!
-WEBSITE_EXIST_USER=Tha an cleachdaiche seo ann mar-thà!
-WEBSITE_ERROR_SCORE=Mearachd an sgòir!
-WEBSITE_OK_SEND=Chaidh an sgòr a chur a-null!
-WEBSITE_ERROR_SCORE_DUPLICATED=Tha an sgòr seo ann mar-thà!
-WEBSITE_ERROR_SONG=Cha deach a t-òran a lorg!
-WEBSITE_SAVE_SCORE=Chaidh an sgòr a shàbhaladh!
-WEBSITE_NO_CONNECTION_SAVE=Chan eil ceangal dhan làrach-lìn ann! A bheil thu airson an chleachdaiche a shàbhaladh co-dhiù?
-
-SONG_MENU_REFRESH_SCORES=Ùraich na sgòran
-SONG_MENU_REFRESH_SCORES_TITLE=Ùraich
-SONG_MENU_REFRESH_SCORES_NO_WEB=Chan eil làrach-lìn ann!
-SONG_MENU_REFRESH_SCORES_ONLINE=Air loidhne
-SONG_MENU_REFRESH_SCORES_FILE=Faidhle
-SONG_MENU_REFRESH_SCORES_ALL_WEB=A h-uile làrach-lìn
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=A h-uile òran
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=An t-òran seo
-SONG_MENU_REFRESH_SCORES_REFRESH=Ùraich
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Mearachd leis a’ cheangal dhan làrach-lìn: %0:s!
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=Cha deach am faidhle a lorg: “%0:s [Download Scores]”!
-
-SONG_SCORE_MAX=As fearr:
-SONG_SCORE_MEDIA=Cuibheasach:
-
-SCORE_SEND_DESC=Cuir a-null an sgòr
-SCORE_SEND=Cuir a-null
-SCORE_SEND_PLAYER=Cluicheadair
-SCORE_SEND_OTHER_USER=Ainm-cleachdaiche eile
-SCORE_SAVE=Sàbhail
-
-SCORE_DOWNLOAD_TITLE=Luchdadh a-nuas
-SCORE_DOWNLOAD_SONG=Òran:
-SCORE_DOWNLOAD_CREATE_LIST=Ag ullachadh na liosta…
-SCORE_DOWNLOAD_RECEIVE_LIST=’Ga luchdadh a-nuas…
-SCORE_DOWNLOAD_CANCEL=Sguir dheth
-SCORE_DOWNLOAD_OK=Ceart ma-thà
-SCORE_DOWNLOAD_SONG_UPDATE=Chaidh %0:d òra(i)n atharrachadh leis an lìon!
-
-SING_OPTIONS_GAME_SHOWSCORES=Seall na sgòran
-OPTION_VALUE_WHEN_EXISTS=Nuair a bhios gin ann
-
PARTY_SELECT_MODE=Modh
PARTY_MODE_CLASSIC=Clasaigeach
PARTY_MODE_CLASSIC_FREE=Saor ’s clasaigeach
PARTY_MODE_CHALLENGE=Dùbhlan
PARTY_MODE_TOURNAMENT=Co-fharpais
PARTY_MODE_JUKEBOX=Inneal-chlàr
-PARTY_MODE_NOT_AVAILABLE=Chan eil seo ri fhaighinn!
PARTY_MODE_TOURNAMENT_PLAYER_DESC=Cuir a-steach àireamh is ainm a’ chluicheadair
PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Co mheud cluicheadair
@@ -565,39 +542,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Na h-ath-chluicheadairean dhan mhicreofon
PARTY_MODE_TOURNAMENT_WIN_DESC=Toradh na cuairte
PARTY_MODE_TOURNAMENT_CHAMPION=Bhuannaich %0:s!
-EDIT_TITLE=Tiotal:
-EDIT_ARTIST=Neach-ciùil:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=Beàrn:
-EDIT_COVER=Còmhdachadh:
-EDIT_BACKGROUND=Cùlaibh:
-
-EDIT_START=Toiseach:
-EDIT_DURATION=Faide:
-EDIT_TONE=Pong:
-EDIT_LYRIC=Faclan:
-EDIT_VIDEOGAP=Beàrn a' video:
-EDIT_VOLUME_AUDIO=Àirde na fuaime:
-EDIT_VOLUME_MIDI=Àirde MIDI:
-EDIT_VOLUME_CLICK=Àirde a’ chliog:
-INFO_UNDO=Neo-dhèan an gnìomh mu dheireadh
-
-INFO_FILE_SAVED=Chaidh am faidhle a shàbhaladh
-INFO_TIME_FIXED=Chaidh na tìmeachaidhean a cheartachadh
-INFO_CAPITALIZE=Chaidh na faclan mòra is beaga a cheartachadh
-INFO_EXIT=A bheil thu airson an deasaiche fhàgail gun a bhith ’ga shàbhaladh?
-INFO_SONG_RELOADED=Chaidh an t-òran ath-luchdadh
-INFO_DIVIDED_BPM=BPM roinnte
-INFO_MULTIPLIED_BPM=BPM iomadaichte
-INFO_PLAY_SONG=Cluich an t-òran
-INFO_PLAY_SENTENCE=Cluich an seantans
-INFO_CURRENT_LINE=Loidhne:
-INFO_CURRENT_NOTE=An aire:
-
-INFO_MIDI_CHANNEL_OFF= Seanail %0:s dheth!
-INFO_MIDI_CHANNEL_RESET=Tha gach seanail air!
-
MSG_END_JUKEBOX=A bheil thu airson modh an inneil-chlàr fhàgail?
JUKEBOX_RANDOM=Air thuaiream
JUKEBOX_REPEAT=Ath-chluich
@@ -609,8 +553,6 @@ SING_ERROR_DUET_MODE_PARTY =Seo òran-càraid! Cha ghabh a chluich sa mhodh chè
SONG_MENU_SONG=Òran
SONG_MENU_MEDLEY=Measgachadh
-SONG_MENU_SORTING=Seòrsaich
-SONG_MENU_EXTRA=Roghainnean eile
SONG_MENU_NAME_SONG=Clàr-taice nan òran
SONG_MENU_NAME_MEDLEY=Clàr-taice a' mheasgachaidh
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Na h-uile
SONG_MENU_SORTING_DUET=Òrain-chàraid
SONG_MENU_SORTING_APPLY=Cuir an sàs
-SING_OPTIONS_WEBCAM=Camara-lìn
-SING_OPTIONS_WEBCAM_DESC=Roghainnean a’ chamara-lìn
-SING_OPTIONS_WEBCAM_WHEREAMI=Roghainnean a’ chamara-lìn
-SING_OPTIONS_WEBCAM_ID=Camara-lìn
-SING_OPTIONS_WEBCAM_RESOLUTION=Dùmhlachd-bhreacaidh
-SING_OPTIONS_WEBCAM_FPS=FPS
-SING_OPTIONS_WEBCAM_NO_WEBCAM=cha deach camara-lìn a lorg!
-SING_OPTIONS_WEBCAM_FLIP=Thoir flip
-SING_OPTIONS_WEBCAM_EFFECT=Èifeachd
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Soilleireachd
-SING_OPTIONS_WEBCAM_SATURATION=Sàthachd
-SING_OPTIONS_WEBCAM_HUE=Tuar
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Cuir an ro-shealladh an comas
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Cuir an ro-shealladh à comas
-
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Àbhaisteach
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Liath-sgèile
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Dubh ⁊ geal
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Neagataibh
-SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Dealbh bìnearaidh
-SING_OPTIONS_WEBCAM_EFFECT_DILATE=Sgaoil
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Stairsneach
-SING_OPTIONS_WEBCAM_EFFECT_EDGES=Oirean
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Sgleò Gaussach
-SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Co-chothromaichte
-SING_OPTIONS_WEBCAM_EFFECT_ERODE=Bleith
-
PARTY_PLAYLIST_MANUAL=Taghadh a làimh
PARTY_MODE_JUKEBOX_NO_SONGS=Tha an liosta-chluich falamh!
SONG_MENU_OPEN_CATEGORY=Fosgail roinn-seòrsa
@@ -666,58 +581,6 @@ WEBSITE_NOT_EXIST_SONG=Chan eil an t-òran a’ buntainn ri làrach-lìn sam bit
NAME_PLAYERS_COUNT=Co mheud cluicheadair
NAME_CURRENT_PLAYER=Cluicheadair
-SING_OPTIONS_GAME_SONGMENU=Clàr-taice nan òran
-OPTION_VALUE_ROULETTE=Roulette
-OPTION_VALUE_CHESSBOARD=Clàr-taileisg
-OPTION_VALUE_CAROUSEL=Timcheallan
-OPTION_VALUE_SLOT_MACHINE=Inneal-cluiche
-OPTION_VALUE_LIST=Liosta
-OPTION_VALUE_MOSAIC=Tiotal
-
-SING_OPTIONS_JUKEBOX=Inneal-chlàr
-SING_OPTIONS_JUKEBOX_DESC=Bun-roghainnean an inneil-chlàr
-SING_OPTIONS_JUKEBOX_WHEREAMI=Roghainnean an inneil-chlàr
-
-OPTION_VALUE_TO_SING=Seinn
-OPTION_VALUE_ACTUAL=Ann an da-rìribh
-OPTION_VALUE_NEXT=Air adhart
-OPTION_VALUE_OTHER=Eile
-OPTION_VALUE_FILL=Lìon
-OPTION_VALUE_OUTLINE=Oir-loidhne
-OPTION_VALUE_GRAY=Liath
-OPTION_VALUE_WHITE=Geal
-OPTION_VALUE_TURQUOISE=Tuirc-ghorm
-OPTION_VALUE_SALMON=Dath a’ bhradain
-OPTION_VALUE_GREENYELLOW=Uaine-buidhe
-OPTION_VALUE_LAVENDER=Dath an lus-liath
-OPTION_VALUE_BEIGE=Bèis
-OPTION_VALUE_TEAL=Dath a’ chrann-lacha
-OPTION_VALUE_ORCHID=Dath na mogairle
-OPTION_VALUE_STEELBLUE=Gorm na stàilinne
-OPTION_VALUE_PLUM=Dath a’ phlumais
-OPTION_VALUE_CHOCOLATE=Donn an teòclaid
-OPTION_VALUE_GOLD=Dath an òir
-OPTION_VALUE_DARKBLUE=Dorch-ghorm
-OPTION_VALUE_SKY=Gorm an speura
-OPTION_VALUE_HARLEQUIN=Cleasaiche-fanaid
-OPTION_VALUE_CYAN=Saidhean
-OPTION_VALUE_FLAME=Lasair
-
-JUKEBOX_SONGOPTIONS_VIDEO=Roghainnean video
-JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Co-mheas deilbh
-JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Leud
-JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Àirde
-JUKEBOX_SONGOPTIONS_LYRIC=Roghainnean nam faclan
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Meud
-JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Suidheachadh
-JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Dath
-JUKEBOX_SONGOPTIONS_LYRIC_LINE=Loidhne
-JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Cruth
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Dearg
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Uaine
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Gorm
-
JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Sìn
JUKEBOX_SONGOPTIONS_VIDEO_CROP=Bearr
JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=Bogsa-litrichean
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_CLOSE=Dùin
JUKEBOX_SONGOPTIONS_DEFAULT=Bun-roghainn
JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Chaidh a shàbhaladh!
-SING_SONG_CREDITS=Urram
-SING_JUKEBOX=Inneal-chlàr
-SING_JUKEBOX_DESC=Èist ris a’ chruinneachadh agam
JUKEBOX_MODE=Modh an inneil-chlàr
-JUKEBOX_OPTIONS_DESC=Roghainnean na liosta-cluich
-JUKEBOX_OPTIONS_WHEREAMI=Roghainnean an inneil-chlàr
JUKEBOX_OPTIONS_PLAYLIST=Liosta-chluich
JUKEBOX_OPTIONS_PLAYLIST_MODE=Modh
-SING_OPTIONS_ADVANCED_SINGSCORES=Sgòran seinn
-SING_OPTIONS_ADVANCED_TOPSCORES=Na sgòran as àirde
-OPTION_VALUE_ALL=Na h-uile
-OPTION_VALUE_PLAYER=Cluicheadair
-
-SING_ABOUT=Mu dhèidhinn
-SING_ABOUT_DESC=Mu Ultrastar Deluxe
ABOUT_MAIN=Mu dhèidhinn…
-ABOUT_MAIN_DESC=Ultrastar Deluxe
-ABOUT_MAIN_WHEREAMI=Mu dhèidhinn…
-ABOUT_USDX_CREDITS=Urram
-ABOUT_OVERVIEW=’S e geama karaoke saor is OpenSource airson PC a th’ ann an UltraStar Deluxe. Tha cluiche a’ gheama coltach ris a’ bhathar choimeirsealta SingStar™ le Sony Computer Entertainment nach fhaighear ach air Playstation®. Co-dhiù, leigidh UltraStar Deluxe leis an luchd-cleachdaidh na h-òrain aca fhèin a chruthachadh agus a’ seinn air a’ PC aca, rud nach gabh dèanamh le SingStar™.\nOn a dh’fhoillsich sinn am bun-tùs, ’s urrainn dhut an geama a ghnàthachadh gu tur a-rèir do mhiann, d’ ùidhean is nam feumalachdan agad.\nGu sònraichte, faodaidh tu am bathar atharrachadh mar a thogras tu.\n\nCruthaich na h-ùrlaran agad fhèin no luchdaich a-nuas susbaint on choimhearsnachd, can plugain, òrain shaora no bloighean còd airson gleusan leudaichte.\nSa mhodh chèilidh, ’s urrainn do suas ri dusan cluicheadair na h-òrain as fhearr leibh a sheinn còmhla feuch cò gheibh barrachd puingean na càch, a-rèir gleus a’ ghutha agus ruitheam na seinne.
+ABOUT_USDX_DEVELOPEDBY=Leasaichte le
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Leasaichte le
+DEVELOPERS_OVERVIEW=Daoine a tha air cur ris a 'phròiseact seo:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Tadhail oirnne airson barrachd fiosrachaidh.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Chaidh an glacadh-sgrìn a shàbhaladh
+SCREENSHOT_FAILED=Cha b’ urrainn dhuinn an glacadh-sgrìn a shàbhaladh
+
+MSG_ERROR_TITLE=Mearachd
+MSG_INFO_TITLE=Fiosrachadh
+MSG_QUESTION_TITLE=Ceist
+MSG_QUIT_USDX=A bheil thu airson UltraStar fhàgail?
+MSG_END_PARTY=A bheil thu airson am modh cèilidh fhàgail?
+
+ERROR_NO_SONGS=Cha deach òran a luchdadh
+ERROR_NO_PLUGINS=Cha deach plugan a luchdadh
+ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Cha b’ urrainn dhuinn an t-òran a luchdadh.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach am faidhle a lorg
+ERROR_CORRUPT_SONG_NO_NOTES=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach pong a lorg
+ERROR_CORRUPT_SONG_NO_BREAKS=Cha b’ urrainn dhuinn an t-òran a luchdadh: Cha deach brisidhean loidhne a lorg
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Cha b’ urrainn dhuinn an t-òran a luchdadh: Mearachd e parsadh na loidhne %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Chaidh iomadh micreofon a shònrachadh dha chluicheadair %d. Thoir sùil air na roghainnean microfòn agad
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Cha deach micreofon a shònrachadh dha chluicheadair %d. Thoir sùil air na roghainnean microfòn agad
\ No newline at end of file
diff --git a/game/languages/Hrvatski.ini b/game/languages/Hrvatski.ini
index ff911529..f71e9240 100644
--- a/game/languages/Hrvatski.ini
+++ b/game/languages/Hrvatski.ini
@@ -5,25 +5,25 @@ OPTION_VALUE_EASY=Lako
OPTION_VALUE_MEDIUM=Srednje
OPTION_VALUE_HARD=Teško
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+OPTION_VALUE_ON=Na
+OPTION_VALUE_OFF=Od
-;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_EDITION=Izdanje
+OPTION_VALUE_GENRE=Žanr
OPTION_VALUE_LANGUAGE=Jezik
OPTION_VALUE_FOLDER=Folder
OPTION_VALUE_TITLE=Naslov
OPTION_VALUE_ARTIST=Izvođač
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_TITLE2=Naslov2
+OPTION_VALUE_ARTIST2=Izvođač2
+OPTION_VALUE_YEAR=Godina
+OPTION_VALUE_DECADE=Desetljeće
OPTION_VALUE_PLAYLIST=Playliste
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maksimizirati
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Kada nema videozapisa
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Kada nema videozapisa i slika
;TODO: OPTION_VALUE_SMALL=Small
;TODO: OPTION_VALUE_BIG=Big
@@ -40,9 +40,9 @@ OPTION_VALUE_PLAYLIST=Playliste
;TODO: OPTION_VALUE_SEC=Second
;TODO: OPTION_VALUE_SECS=Seconds
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+;TODO: OPTION_VALUE_PLAIN=Stylized
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
;TODO: OPTION_VALUE_SIMPLE=Simple
;TODO: OPTION_VALUE_ZOOM=Zoom
@@ -54,176 +54,160 @@ OPTION_VALUE_PLAYLIST=Playliste
;TODO: OPTION_VALUE_JAPAN=Japan
;TODO: OPTION_VALUE_AMERICAN=American
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
+OPTION_VALUE_BLUE=Plava
+OPTION_VALUE_GREEN=Zelena
+OPTION_VALUE_PINK=Ružičasta
+OPTION_VALUE_RED=Crvena
+OPTION_VALUE_VIOLET=Ljubičasta
;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
+OPTION_VALUE_YELLOW=Žuta boja
+OPTION_VALUE_BROWN=Smeđ
+OPTION_VALUE_BLACK=Crno
-OPTION_VALUE_SING=pjevaj
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
+OPTION_VALUE_SING=Pjevaj
+OPTION_VALUE_SELECT_PLAYERS=Odaberite Igrači
+OPTION_VALUE_OPEN_MENU=Otvorite izbornik
SING_LOADING=Učitavanje...
+SING_LOADING_SONGS=Učitavanje pjesama u mapi %s
SING_CHOOSE_MODE=Izaberi način igre
-SING_SING=pjevaj
-SING_SING_DESC=brza igra: pjevaj solo ili duet
-
-SING_MULTI=party
-SING_MULTI_DESC=pjevaj u party mode-u
+SING_SING=Pjevaj
+SING_SING_DESC=Brza igra: pjevaj solo ili duet
-SING_TOOLS=alati
+SING_MULTI=Party
+SING_MULTI_DESC=Pjevaj u party mode-u
-SING_STATS=statistika
-SING_STATS_DESC=pogledaj statistiku
+SING_TOOLS=Alati
-SING_EDITOR=editor
-SING_EDITOR_DESC=napravi svoje pjesme
+SING_STATS=Statistika
+SING_STATS_DESC=Pogledaj statistiku
-SING_GAME_OPTIONS=opcije igre
-SING_GAME_OPTIONS_DESC=promijeni postavke
+SING_GAME_OPTIONS=Opcije igre
+SING_GAME_OPTIONS_DESC=Promijeni postavke
-SING_EXIT=izlaz
-SING_EXIT_DESC=izlaz iz igre
+SING_EXIT=Izlaz
+SING_EXIT_DESC=Izlaz iz igre
-SING_OPTIONS=opcije
-SING_OPTIONS_DESC=promijeni postavke
+SING_OPTIONS=Opcije
+SING_OPTIONS_DESC=Promijeni postavke
SING_OPTIONS_WHEREAMI=Opcije
-SING_OPTIONS_GAME=igra
-SING_OPTIONS_GRAPHICS=video
-SING_OPTIONS_SOUND=audio
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=tekstovi
-SING_OPTIONS_THEMES=teme
-SING_OPTIONS_RECORD=snimanje
-SING_OPTIONS_ADVANCED=ostalo
-SING_OPTIONS_EXIT=natrag
+SING_OPTIONS_GAME=Igra
+SING_OPTIONS_GRAPHICS=Video
+SING_OPTIONS_SOUND=Audio
+SING_OPTIONS_LYRICS=Tekstovi
+SING_OPTIONS_THEMES=Teme
+SING_OPTIONS_MICROPHONES=Snimanje
+SING_OPTIONS_ADVANCED=Ostalo
+SING_OPTIONS_EXIT=Natrag
SING_OPTIONS_GAME_WHEREAMI=Opcije Igre
-SING_OPTIONS_GAME_DESC=osnovne opcije igre
+SING_OPTIONS_GAME_DESC=Osnovne opcije igre
SING_OPTIONS_GAME_PLAYERS=Br. igrača
SING_OPTIONS_GAME_DIFFICULTY=Težina
SING_OPTIONS_GAME_LANGUAGE=Jezik
SING_OPTIONS_GAME_TABS=Tabovi
SING_OPTIONS_GAME_SORTING=Sortiranje
-SING_OPTIONS_GAME_DEBUG=Debug
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivirajte gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Opcije Videa
-SING_OPTIONS_GRAPHICS_DESC=video opcije
+SING_OPTIONS_GRAPHICS_DESC=Video opcije
SING_OPTIONS_GRAPHICS_RESOLUTION=Rezolucija
SING_OPTIONS_GRAPHICS_FULLSCREEN=Cijeli ekran
-SING_OPTIONS_GRAPHICS_DEPTH=Dubina boja
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efekti kod pjevanja
+SING_OPTIONS_GRAPHICS_SCREENFADE=Fade-out ekrana
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Anim. tijekom učit.
SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizacije
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop
SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus linije
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Veličina videa
SING_OPTIONS_SOUND_WHEREAMI=Opcije Zvuka
-SING_OPTIONS_SOUND_DESC=postavke zvuka
+SING_OPTIONS_SOUND_DESC=Postavke zvuka
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Pozadinska glazba
-SING_OPTIONS_SOUND_MIC_BOOST=Mic boost
SING_OPTIONS_SOUND_CLICK_ASSIST=Pomoć klikovima
SING_OPTIONS_SOUND_BEAT_CLICK=Klik na udarce
-SING_OPTIONS_SOUND_THRESHOLD=Threshold
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Igra za dva igrača
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Glasnoća prikaza
SING_OPTIONS_SOUND_PREVIEWFADING=Fade-in vrijeme
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Opcije Tekstova
-SING_OPTIONS_LYRICS_DESC=postavke tekstova
+SING_OPTIONS_LYRICS_DESC=Postavke tekstova
SING_OPTIONS_LYRICS_FONT=Font
SING_OPTIONS_LYRICS_EFFECT=Efekt
SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacija
SING_OPTIONS_LYRICS_NOTELINES=Crtovlje
SING_OPTIONS_THEMES_WHEREAMI=Opcije Tema
-SING_OPTIONS_THEMES_DESC=postavke tema i skinova
+SING_OPTIONS_THEMES_DESC=Postavke tema i skinova
SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Boja
-SING_OPTIONS_RECORD_WHEREAMI=Opcije Snimanja
-SING_OPTIONS_RECORD_DESC=postavke mikrofona
-SING_OPTIONS_RECORD_CARD=Zv. kartica
-SING_OPTIONS_RECORD_INPUT=Ulaz
-SING_OPTIONS_RECORD_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opcije Snimanja
+SING_OPTIONS_MICROPHONES_DESC=Postavke mikrofona
+SING_OPTIONS_MICROPHONES_CARD=Zv. kartica
+SING_OPTIONS_MICROPHONES_INPUT=Ulaz
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Threshold
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mic boost
SING_OPTIONS_ADVANCED_WHEREAMI=Ostale Opcije
-SING_OPTIONS_ADVANCED_DESC=ostale postavke
-SING_OPTIONS_ADVANCED_EFFECTSING=Efekti kod pjevanja
-SING_OPTIONS_ADVANCED_SCREENFADE=Fade-out ekrana
-SING_OPTIONS_ADVANCED_LOADANIMATION=Anim. tijekom učit.
+SING_OPTIONS_ADVANCED_DESC=Ostale postavke
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sigurn. pitanja
SING_OPTIONS_ADVANCED_LINEBONUS=Bonus linije
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Nakon pjesme
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto party meni
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=napravi svoje pjesme
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Učitaj tekst iz midi datoteke
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=natrag
-SING_EDIT_BUTTON_CONVERT=Učitaj
-SING_EDIT_BUTTON_EXIT=natrag
-
-SING_EDIT_NAVIGATE=upravljanje
-SING_EDIT_SELECT=odaberi
-SING_EDIT_EXIT=natrag
-
-SING_LEGEND_SELECT=odaberi
-SING_LEGEND_NAVIGATE=navigacija
-SING_LEGEND_CONTINUE=nastavi
-SING_LEGEND_ESC=natrag
-
-SING_PLAYER_DESC=unesi ime igrača
-SING_PLAYER_WHEREAMI=Imena igrača
-SING_PLAYER_ENTER_NAME=unesi ime
-
-SING_DIFFICULTY_DESC=odaberi težinu
+SING_LEGEND_SELECT=Odaberi
+SING_LEGEND_NAVIGATE=Navigacija
+SING_LEGEND_CONTINUE=Nastavi
+SING_LEGEND_ESC=Natrag
+
+SING_PLAYER_TITLE=Profili
+SING_PLAYER_READY=Igrači spremni za pjevanje
+SING_PLAYER_COUNT=Broj igrača
+SING_PLAYER_EDIT=Prilagodite igrač
+SING_PLAYER_NAME=Napisati svoje ime
+SING_PLAYER_COLOR=Odaberite boju
+SING_PLAYER_LEVEL=Odaberite razinu
+SING_PLAYER_AVATAR=Odaberite svoj avatar
+
+SING_DIFFICULTY_DESC=Odaberi težinu
SING_DIFFICULTY_WHEREAMI=Težina
-SING_DIFFICULTY_CONTINUE=odabir pjesme
+SING_DIFFICULTY_CONTINUE=Odabir pjesme
SING_EASY=Lako
SING_MEDIUM=Srednje
SING_HARD=Teško
-SING_SONG_SELECTION_DESC=odaberi pjesmu
+SING_SONG_SELECTION_DESC=Odaberi pjesmu
SING_SONG_SELECTION_WHEREAMI=Odabir Pjesme
-SING_SONG_SELECTION_GOTO=idi na ..
-SING_SONG_SELECTION=odabir pjesme
-SING_SONG_SELECTION_MENU=meni
-SING_SONG_SELECTION_PLAYLIST=playlista
+SING_SONG_SELECTION_GOTO=Idi na ..
+SING_SONG_SELECTION=Odabir pjesme
+SING_SONG_SELECTION_MENU=Meni
+SING_SONG_SELECTION_PLAYLIST=Playlista
+SING_SONG_IN_CAT=Pjesma
SING_SONGS_IN_CAT=Pjesme
PLAYLIST_CATTEXT=Playlista: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=ukupno
-SING_MODE=pjevaj solo
-SING_NOTES=note
-SING_GOLDEN_NOTES=zlatne note
-SING_PHRASE_BONUS=bonus
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
+
+SING_TOTAL=Ukupno
+SING_MODE=Pjevaj solo
+SING_NOTES=Note
+SING_GOLDEN_NOTES=Zlatne note
+SING_PHRASE_BONUS=Bonus
SING_MENU=Glavni Meni
-SONG_SCORE=bodovi
+SONG_SCORE=Bodovi
SONG_SCORE_WHEREAMI=Rezultat
SING_SCORE_TONE_DEAF=Bez sluha
@@ -235,19 +219,19 @@ SING_SCORE_LEAD_SINGER=Vodeći pjevač
SING_SCORE_SUPERSTAR=Superstar
SING_SCORE_ULTRASTAR=Ultrastar
-SING_TOP_5_CHARTS=top 5 Igrača
-SING_TOP_5_CHARTS_WHEREAMI=top 5
-SING_TOP_5_CHARTS_CONTINUE=odabir pjesme
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=switch difficulty
+SING_TOP_5_CHARTS=Top 5 Igrača
+SING_TOP_5_CHARTS_WHEREAMI=Top 5
+SING_TOP_5_CHARTS_CONTINUE=Odabir pjesme
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=izvanredno!
-POPUP_AWESOME=predivno!
-POPUP_GREAT=odlično!
-POPUP_GOOD=dobro!
-POPUP_NOTBAD=nije loše!
-POPUP_BAD=loše!
-POPUP_POOR=jadno!
-POPUP_AWFUL=grozno!
+POPUP_PERFECT=Izvanredno!
+POPUP_AWESOME=Predivno!
+POPUP_GREAT=Odlično!
+POPUP_GOOD=Dobro!
+POPUP_NOTBAD=Nije loše!
+POPUP_BAD=Loše!
+POPUP_POOR=Jadno!
+POPUP_AWFUL=Grozno!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= i
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= i
SONG_MENU_NAME_MAIN=Kolekcija pjesama
SONG_MENU_PLAY=Pjevaj
SONG_MENU_CHANGEPLAYERS=Promijeni igrače
-SONG_MENU_EDIT=Uredi
SONG_MENU_MODI=Pjevaj Modi
SONG_MENU_CANCEL=Poništi
@@ -264,8 +247,8 @@ SONG_MENU_PLAYLIST_ADD=Dodaj Pjesmu
SONG_MENU_PLAYLIST_DEL=Izbriši Pjesmu
SONG_MENU_NAME_PLAYLIST_ADD=Dodaj Pjesmu
-SONG_MENU_PLAYLIST_ADD_NEW=na novu playlistu
-SONG_MENU_PLAYLIST_ADD_EXISTING=na postojeću playlistu
+SONG_MENU_PLAYLIST_ADD_NEW=Na novu playlistu
+SONG_MENU_PLAYLIST_ADD_EXISTING=Na postojeću playlistu
SONG_MENU_PLAYLIST_NOEXISTING=Nema playlisti.
SONG_MENU_NAME_PLAYLIST_NEW=Nova Playlista
@@ -277,17 +260,17 @@ SONG_MENU_YES=Da
SONG_MENU_NO=Ne
SONG_MENU_NAME_PLAYLIST_LOAD=Otvori Playlistu
-SONG_MENU_PLAYLIST_LOAD=otvori
-SONG_MENU_PLAYLIST_DELCURRENT=obriši trenutnu Playlistu
+SONG_MENU_PLAYLIST_LOAD=Otvori
+SONG_MENU_PLAYLIST_DELCURRENT=Obriši trenutnu Playlistu
SONG_MENU_NAME_PLAYLIST_DEL=Stvarno obrisati?
SONG_MENU_NAME_PARTY_MAIN=Party Meni
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=iskoristi joker
+SONG_MENU_NAME_PARTY_JOKER=Iskoristi joker
-SONG_JUMPTO_DESC=pretraži pjesme
+SONG_JUMPTO_DESC=Pretraži pjesme
SONG_JUMPTO_TYPE_DESC=Traži :
SONG_JUMPTO_TYPE1=Sve
SONG_JUMPTO_TYPE2=Naslov
@@ -297,7 +280,7 @@ SONG_JUMPTO_NOSONGSFOUND=Niti jedna pjesma nije pronađena.
SONG_JUMPTO_HELP=Unesi tekst koji želiš tražiti.
SONG_JUMPTO_CATTEXT=Traži: %s
-PARTY_MODE=party mod
+PARTY_MODE=Party mod
PARTY_DIFFICULTY=Težina
PARTY_PLAYLIST=Playlist Mod
PARTY_PLAYLIST_ALL=Sve pjesme
@@ -308,46 +291,46 @@ PARTY_TEAMS_PLAYER1=Br. Igrača - Tim1
PARTY_TEAMS_PLAYER2=Br. Igrača - Tim2
PARTY_TEAMS_PLAYER3=Br. Igrača - Tim3
-PARTY_LEGEND_CONTINUE=nastavi
+PARTY_LEGEND_CONTINUE=Nastavi
-PARTY_OPTIONS_DESC=postavke za party igru
+PARTY_OPTIONS_DESC=Postavke za party igru
PARTY_OPTIONS_WHEREAMI=Party Opcije
-PARTY_PLAYER_DESC=unesi imena timova i igrača!
+PARTY_PLAYER_DESC=Unesi imena timova i igrača!
PARTY_PLAYER_WHEREAMI=Party Imena
-PARTY_PLAYER_ENTER_NAME=unesi imena
+PARTY_PLAYER_ENTER_NAME=Unesi imena
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
+PARTY_ROUNDS_DESC=Odaberite koji način rada želite reproducirati
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=započni party-igru
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDS_LEGEND_CONTINUE=Započni party-igru
+PARTY_ROUNDCOUNT=Broj krugova
+PARTY_SELECTMODE=Krug %d
-PARTY_ROUND_DESC=sljed. igrači za mikr.
+PARTY_ROUND_DESC=Sljed. igrači za mikr.
PARTY_ROUND_WHEREAMI=Party Sljed runda
-PARTY_ROUND_LEGEND_CONTINUE=započni rundu
+PARTY_ROUND_LEGEND_CONTINUE=Započni rundu
PARTY_SONG_WHEREAMI=Party Odabir pjesme
-PARTY_SONG_LEGEND_CONTINUE=pjevaj
-PARTY_SONG_MENU=party meni
+PARTY_SONG_LEGEND_CONTINUE=Pjevaj
+PARTY_SONG_MENU=Party meni
-PARTY_SCORE_DESC=bodovi zadnje runde
+PARTY_SCORE_DESC=Bodovi zadnje runde
PARTY_SCORE_WHEREAMI=Party Bodovi
-PARTY_WIN_DESC=pobjednik party igre
+PARTY_WIN_DESC=Pobjednik party igre
PARTY_WIN_WHEREAMI=Party Pobjednik
-PARTY_WIN_LEGEND_CONTINUE=natrag na glavni meni
+PARTY_WIN_LEGEND_CONTINUE=Natrag na glavni meni
PARTY_ROUND=Runda
PARTY_ROUND_WINNER=Pobjednik
-PARTY_NOTPLAYEDYET=nije još odigr.
-PARTY_NOBODY=nitko ni
+PARTY_NOTPLAYEDYET=Nije još odigr.
+PARTY_NOBODY=Nitko ni
NEXT_ROUND=Sljed. runda:
PARTY_DISMISSED=Izbacen!
PARTY_SCORE_WINS=%s je
-PARTY_SCORE_WINS2=pobijedio!
+PARTY_SCORE_WINS2=Pobijedio!
;TODO: MODE_RANDOM_NAME=Random Mode
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Detaljna statistika
STAT_NEXT=Sljed. strana
STAT_PREV=Preth. strana
STAT_REVERSE=Obrnuti redoslijed
-STAT_PAGE=Strana %0:d od %1:d\n (%2:d od %3:d unosa)
+STAT_PAGE=Strana %0:d od %1:d \n Unosa %2:d od %3:d
STAT_DESC_SCORES=HighScores
STAT_DESC_SCORES_REVERSED=LowScores
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx otpjevano
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Greška
;TODO: MSG_INFO_TITLE=Information
@@ -465,38 +447,37 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Pjesma se ne može učitati: Datoteka nije na
ERROR_CORRUPT_SONG_NO_NOTES=Pjesma se ne može učitati: Nije nađena niti jedna nota
ERROR_CORRUPT_SONG_NO_BREAKS=Pjesma se ne može učitati: Nije nađen niti jedan 'linebreak'
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Pjesma se ne može učitati: Greška u obradi linije %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Igrač %d je dodijeljen više mikrofona. Provjerite opcije mikrofona
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Igrač %d nije dodijeljen mikrofonu. Provjerite opcije mikrofona
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Internet opcije
;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Korisničko ime
+SING_OPTIONS_NETWORK_PASSWORD=Lozinka
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Igrač
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Izbrisati
+
+OPTION_PLAYER_1=Igrač 1
+OPTION_PLAYER_2=Igrač 2
+OPTION_PLAYER_3=Igrač 3
+OPTION_PLAYER_4=Igrač 4
+OPTION_PLAYER_5=Igrač 5
+OPTION_PLAYER_6=Igrač 6
OPTION_ALL_PLAYERS=Sve
OPTION_ALL_SCORES=Sve
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
+OPTION_VALUE_SAVE=Uštedjeti
+OPTION_VALUE_SEND=Poslati
;TODO: MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
@@ -526,12 +507,12 @@ MSG_INSERT_USER_CANCEL=Poništi
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-;TODO: SONG_SCORE_MAX=Best:
+SONG_SCORE_MAX=Najbolje:
;TODO: SONG_SCORE_MEDIA=Average:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Igrač
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
@@ -561,39 +542,10 @@ SCORE_DOWNLOAD_CANCEL=Poništi
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=sljed. igrači za mikr.
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Sljed. igrači za mikr.
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +561,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=sljed. igrači za mikr.
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Playliste
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -638,6 +588,7 @@ SING_OPTIONS_WEBCAM_EFFECT=Efekt
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,24 +614,24 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Threshold
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Broj igrača
+NAME_CURRENT_PLAYER=Igrač
SING_OPTIONS_GAME_SONGMENU=Playliste
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
+OPTION_VALUE_ROULETTE=Roulet
+OPTION_VALUE_CHESSBOARD=šahovska tabla
+OPTION_VALUE_CAROUSEL=Karusel
+OPTION_VALUE_SLOT_MACHINE=Automat za kockanje
;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_MOSAIC=Pločica
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-OPTION_VALUE_TO_SING=pjevaj
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_TO_SING=Pjevaj
+OPTION_VALUE_ACTUAL=Gornji
+;TODO: OPTION_VALUE_NEXT=Dno
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
@@ -710,13 +661,13 @@ OPTION_VALUE_TO_SING=pjevaj
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Prozirnost
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Boja
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Crta
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Crvena
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zelena
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Plava
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -727,7 +678,7 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Boja
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
+SING_SONG_CREDITS=Krediti
;TODO: SING_JUKEBOX=Jukebox
;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
@@ -739,12 +690,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Playliste
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Sve
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Igrač
+
+SING_ABOUT=Oko
+SING_ABOUT_DESC=Oko Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Oko...
+ABOUT_USDX_DEVELOPEDBY=Razvijen od
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Otkrijte novi način pjevanja, sam, u paru ili s prijateljima. \n Zabava je zajamčena.\n\nWorldParty je fork izvorne verzije Ultrastar Deluxe 1.1 dizajniran i razvijen od strane UltraStar España tima, to broji s najvećom karaoke zajednice.\n\n\nOvaj je program besplatan i libre pod GPL licencom. \n\n Posjetite nas za više informacija.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Razvijen od
+DEVELOPERS_OVERVIEW=Ljudi koji su pridonijeli ovom projektu:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Posjetite nas za više informacija.\n\nhttps://ultrastar-es.org
diff --git a/game/languages/Italiano.ini b/game/languages/Italiano.ini
index e72e8b87..3706c8df 100644
--- a/game/languages/Italiano.ini
+++ b/game/languages/Italiano.ini
@@ -1,48 +1,126 @@
[Text]
LANGUAGE=Italiano
+SING_LOADING=Caricamento...
+SING_LOADING_SONGS=Caricamento di canzoni dalla cartella %s
+
+SING_SING=Canta
+SING_SING_DESC=Gara veloce: Solista o duetto
+
+SING_MULTI=Modalità party
+SING_MULTI_DESC=Canta in modalità party
+
+SING_JUKEBOX=Jukebox
+SING_JUKEBOX_DESC=Ascolta le mie canzoni
+
+SING_STATS=Statistiche
+SING_STATS_DESC=Guarda le statistiche
+
+SING_GAME_OPTIONS=Impostazioni
+SING_GAME_OPTIONS_DESC=Cambia le impostazioni del gioco
+
+SING_EXIT=Esci
+SING_EXIT_DESC=Esci da Ultrastar
+
+SING_ABOUT=Sul gioco
+SING_ABOUT_DESC=A proposito di Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profili
+SING_PLAYER_READY=Giocatori pronti a cantare
+SING_PLAYER_COUNT=Numero di giocatori
+SING_PLAYER_EDIT=Personalizza un giocatore
+SING_PLAYER_NAME=Scrivi il tuo nome
+SING_PLAYER_COLOR=Scegli un colore
+SING_PLAYER_LEVEL=Scegli un livello
+SING_PLAYER_AVATAR=Seleziona il tuo avatar
+
OPTION_VALUE_EASY=Facile
OPTION_VALUE_MEDIUM=Media
OPTION_VALUE_HARD=Difficile
-OPTION_VALUE_ON=Si
-OPTION_VALUE_OFF=No
+SING_OPTIONS=Impostazioni
+
+SING_OPTIONS_GAME=Generali
+SING_OPTIONS_GRAPHICS=Grafica
+SING_OPTIONS_SOUND=Audio
+SING_OPTIONS_LYRICS=Testi
+SING_OPTIONS_THEMES=Temi
+SING_OPTIONS_MICROPHONES=Microfono
+SING_OPTIONS_ADVANCED=Avanzate
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_JUKEBOX=Jukebox
+SING_OPTIONS_EXIT=Indietro
+
+SING_OPTIONS_GAME_LANGUAGE=Lingua
+SING_OPTIONS_GAME_SONGMENU=Menu Canzone
+SING_OPTIONS_GAME_TABS=Schede
+SING_OPTIONS_GAME_SORTING=Organizza per
+SING_OPTIONS_GAME_SHOWSCORES=Mostra punteggi
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Attiva il gamepad
+
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Scacchiera
+OPTION_VALUE_CAROUSEL=Giostra
+OPTION_VALUE_SLOT_MACHINE=Slot Machine
+OPTION_VALUE_LIST=Lista
+OPTION_VALUE_MOSAIC=Piastrella
+
+OPTION_VALUE_ON=On
+OPTION_VALUE_OFF=Off
OPTION_VALUE_EDITION=Edizione
OPTION_VALUE_GENRE=Genere
OPTION_VALUE_LANGUAGE=Lingua
-OPTION_VALUE_FOLDER=Folder
+OPTION_VALUE_FOLDER=Cartella
OPTION_VALUE_TITLE=Titolo
OPTION_VALUE_ARTIST=Artista
-OPTION_VALUE_TITLE2=Titolo2
OPTION_VALUE_ARTIST2=Artista2
OPTION_VALUE_YEAR=Anno
OPTION_VALUE_DECADE=Decennio
OPTION_VALUE_PLAYLIST=Playlist
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_WHEN_EXISTS=Quando già esistente
+
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Schermo intero
+SING_OPTIONS_GRAPHICS_RESOLUTION=Risoluzione
+SING_OPTIONS_GRAPHICS_SCREENFADE=Dissolvenza dello schermo
+SING_OPTIONS_GRAPHICS_EFFECTSING=Effetti del canto
+SING_OPTIONS_GRAPHICS_VISUALIZER=Visualizzazioni
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Dimensioni video
-OPTION_VALUE_WHENNOVIDEO=Quando non c'è videl
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_BORDERLESS=Senza bordi
-OPTION_VALUE_SMALL=Piccolo
-OPTION_VALUE_BIG=Grande
+OPTION_VALUE_WHENNOVIDEO=Quando non c'è video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Quando non c'è video ne immagine
OPTION_VALUE_HALF=Metà
OPTION_VALUE_FULL_VID=Pieno (Solo video)
OPTION_VALUE_FULL_VID_BG=Full (sia BG che Video)
-;TODO: OPTION_VALUE_GAIN_SOFT=Soft
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Ascolta il microfono
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Musica di sottofondo
+SING_OPTIONS_SOUND_CLICK_ASSIST=Finestre di assistenza
+SING_OPTIONS_SOUND_BEAT_CLICK=Attiva il metronomo
+SING_OPTIONS_SOUND_MUSICAUTOGAIN=Volume
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Volume Anteprima
+SING_OPTIONS_SOUND_PREVIEWFADING=Dissolvenza anteprima
+
+OPTION_VALUE_GAIN_SOFT=Leggero
+OPTION_VALUE_GAIN_MEDIUM=Medio
+OPTION_VALUE_GAIN_HARD=Forte
OPTION_VALUE_AUTO=Auto
OPTION_VALUE_SEC=Secondo
OPTION_VALUE_SECS=Secondi
-OPTION_VALUE_PLAIN=Piatto
-OPTION_VALUE_OLINE1=Linea1
-OPTION_VALUE_OLINE2=Linea2
+SING_OPTIONS_LYRICS_FONT=Carattere
+SING_OPTIONS_LYRICS_EFFECT=Effetti
+SING_OPTIONS_LYRICS_NOTELINES=Pentagramma
+
+OPTION_VALUE_PLAIN=Stilizzato
+OPTION_VALUE_OLINE1=Con bordo sottile
+OPTION_VALUE_OLINE2=Con bordo grosso
OPTION_VALUE_SIMPLE=Semplice
OPTION_VALUE_ZOOM=Zoom
@@ -50,166 +128,190 @@ OPTION_VALUE_SLIDE=Scorrimento
OPTION_VALUE_BALL=Ball
OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
-
-OPTION_VALUE_BLUE=Blu
-OPTION_VALUE_GREEN=Verde
-OPTION_VALUE_PINK=Rosa
-OPTION_VALUE_RED=Rosso
-OPTION_VALUE_VIOLET=Viola
-OPTION_VALUE_ORANGE=Arancione
-OPTION_VALUE_YELLOW=Giallo
-OPTION_VALUE_BROWN=Marrone
-OPTION_VALUE_BLACK=Nero
-
-OPTION_VALUE_SING=Canta
-OPTION_VALUE_SELECT_PLAYERS=Seleziona giocatore
-OPTION_VALUE_OPEN_MENU=Apri il Menu
-
-
-
-SING_LOADING=Caricamento...
-
-SING_CHOOSE_MODE=Scegli la modalità
-SING_SING=Canta
-SING_SING_DESC=Gara veloce: canta da solo o duetta
-
-SING_MULTI=Modalità party
-SING_MULTI_DESC=Canta in modalità party
-
-SING_TOOLS=Strumenti
-
-SING_STATS=Statistiche
-SING_STATS_DESC=Guarda le statistiche
+SING_OPTIONS_THEMES_THEME=Temi
+SING_OPTIONS_THEMES_SKIN=Skin
+SING_OPTIONS_THEMES_COLOR=Colori
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Crea la tua canzone
+SING_OPTIONS_MICROPHONES_CARD=Scheda Audio
+SING_OPTIONS_MICROPHONES_INPUT=Input
+SING_OPTIONS_MICROPHONES_CHANNEL=Canale
+SING_OPTIONS_MICROPHONES_THRESHOLD=Limite
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Amplifica suono mic.
-SING_GAME_OPTIONS=Impostazioni di gioco
-SING_GAME_OPTIONS_DESC=Cambia le impostazioni di gioco
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscopio
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Dopo canzone selezzionata
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Domande di sicurezza
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Menu Party automatico
+SING_OPTIONS_ADVANCED_TOPSCORES=Migliori risultati
+SING_OPTIONS_ADVANCED_SINGSCORES=Punteggi sul canto
-SING_EXIT=Esci
-SING_EXIT_DESC=Esci da Ultrastar
+OPTION_VALUE_ALL=Tutti i giocatori
+OPTION_VALUE_PLAYER=Giocatore
-SING_OPTIONS=Impostazioni
-SING_OPTIONS_DESC=Cambia impostazioni
-SING_OPTIONS_WHEREAMI=Impostazioni
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Premi il tasto "Ins" per aggiungere un giocatore a questa rete...
+SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Nome utente
+SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Invia Nome
+SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Riproduttore
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Punteggio (Facile)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Punteggio (Medio)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Punteggio (Difficile)
+SING_OPTIONS_NETWORK_NO_DLL=Non ci sono DLL compatibili con Ultrastar...
+SING_OPTIONS_NETWORK_DELETE_PLAYER= Sei sicuro di voler cancellare l'utente %0:s dal sito %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Inserisci
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Cancella
-SING_OPTIONS_GAME=Generali
-SING_OPTIONS_GRAPHICS=Grafica
-SING_OPTIONS_SOUND=Audio
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=Testi
-SING_OPTIONS_THEMES=Temi
-SING_OPTIONS_RECORD=Microfono
-SING_OPTIONS_ADVANCED=Avanzate
-SING_OPTIONS_EXIT=Indietro
+OPTION_PLAYER_1=Giocatore 1
+OPTION_PLAYER_2=Giocatore 2
+OPTION_PLAYER_3=Giocatore 3
+OPTION_PLAYER_4=Giocatore 4
+OPTION_PLAYER_5=Giocatore 5
+OPTION_PLAYER_6=Giocatore 6
+OPTION_ALL_PLAYERS=Tutti i giocatori
+OPTION_ALL_SCORES=Tutti i punteggi
+OPTION_VALUE_SAVE=Salva
+OPTION_VALUE_SEND=Invia
-SING_OPTIONS_GAME_WHEREAMI=Impostazioni Gioco
-SING_OPTIONS_GAME_DESC=Impostazioni generali di gioco
-SING_OPTIONS_GAME_PLAYERS=Giocatori
-SING_OPTIONS_GAME_DIFFICULTY=Difficoltà
-SING_OPTIONS_GAME_LANGUAGE=Lingua
-SING_OPTIONS_GAME_TABS=Schede
-SING_OPTIONS_GAME_SORTING=Ordinamento
-SING_OPTIONS_GAME_DEBUG=Debug
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Riempi il campo:
+MSG_INSERT_USER_ADD=Aggiungi
+MSG_INSERT_USER_CANCEL=Anulla
-SING_OPTIONS_GRAPHICS_WHEREAMI=Impostazioni Grafica
-SING_OPTIONS_GRAPHICS_DESC=Modifica le impostazioni grafiche
-SING_OPTIONS_GRAPHICS_RESOLUTION=Risoluzione
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Schermo intero
-SING_OPTIONS_GRAPHICS_DEPTH=Profondità
-SING_OPTIONS_GRAPHICS_VISUALIZER=Visualizzazioni
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscopio
-SING_OPTIONS_GRAPHICS_LINEBONUS=Linee Bonus
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Grandezza video
+WEBSITE_NO_CONNECTION=Impossibile connettersi al sito!
+WEBSITE_LOGIN_ERROR=Errore di Login!
+WEBSITE_BLANK_LOGIN=Ci sono campi vuoti!
+WEBSITE_EXIST_USER=Utente già esistente!
+WEBSITE_ERROR_SCORE=Errore nel punteggio!
+WEBSITE_OK_SEND=Punteggio inviato con successo!
+WEBSITE_ERROR_SCORE_DUPLICATED=Punteggio già esistente!
+WEBSITE_ERROR_SONG=Canzone non trovata!
+WEBSITE_SAVE_SCORE=Punteggio salvato con successo!
+WEBSITE_NO_CONNECTION_SAVE=Nessuna connessione al sito! Salvare comunque l'utente?
-SING_OPTIONS_SOUND_WHEREAMI=Impostazioni Audio
-SING_OPTIONS_SOUND_DESC=Modifica le impostazioni Audio
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Ascolta microfono
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Musica di sottofondo
-SING_OPTIONS_SOUND_MIC_BOOST=Preampificaz.
-SING_OPTIONS_SOUND_CLICK_ASSIST=Finestre di assistenza
-SING_OPTIONS_SOUND_BEAT_CLICK=Click di Beat
-SING_OPTIONS_SOUND_THRESHOLD=Soglia
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modalità due giocatori
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Volume Anteprima
-SING_OPTIONS_SOUND_PREVIEWFADING=Dissolvenza ant.
+SONG_MENU_REFRESH_SCORES=Aggiorna punteggi
+SONG_MENU_REFRESH_SCORES_TITLE=Aggiorna
+SONG_MENU_REFRESH_SCORES_NO_WEB=Non ci sono siti!
+SONG_MENU_REFRESH_SCORES_ONLINE=Online
+SONG_MENU_REFRESH_SCORES_FILE=File
+SONG_MENU_REFRESH_SCORES_ALL_WEB=Tutti i siti
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Tutte le canzoni
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Questa canzone
+SONG_MENU_REFRESH_SCORES_REFRESH=Aggiorna
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Errore nella connessione al sito: %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=File non trovato: '%0:s [Download punteggi]'!
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+SONG_SCORE_MAX=Migliore:
+SONG_SCORE_MEDIA=Media:
-SING_OPTIONS_LYRICS_WHEREAMI=Impostazioni Testi
-SING_OPTIONS_LYRICS_DESC=Modifica le impostazioni dei testi in gioco
-SING_OPTIONS_LYRICS_FONT=Carattere
-SING_OPTIONS_LYRICS_EFFECT=Effetti
-SING_OPTIONS_LYRICS_SOLMIZATION=Solfeggio
-SING_OPTIONS_LYRICS_NOTELINES=Pentagramma
+SCORE_SEND_DESC=Invia punteggio
+SCORE_SEND=Invia
+SCORE_SEND_PLAYER=Giocatore
+SCORE_SEND_OTHER_USER=Altro Username
+SCORE_SAVE=Salva
-SING_OPTIONS_THEMES_WHEREAMI=Impostazioni Temi
-SING_OPTIONS_THEMES_DESC=scegli temi e skin
-SING_OPTIONS_THEMES_THEME=Temi
-SING_OPTIONS_THEMES_SKIN=Skin
-SING_OPTIONS_THEMES_COLOR=Colore
-
-SING_OPTIONS_RECORD_WHEREAMI=Impostazioni microfono
-SING_OPTIONS_RECORD_DESC=Modifica le impostazioni del microfono
-SING_OPTIONS_RECORD_CARD=Scheda Audio
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Canale
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Impostazioni Avanzate
-SING_OPTIONS_ADVANCED_DESC=Modifica ulteriori impostazioni
-SING_OPTIONS_ADVANCED_EFFECTSING=Effetti del canto
-SING_OPTIONS_ADVANCED_SCREENFADE=Dissolvenza dello schermo
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animazione caricamento
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Domande di sicurezza
-SING_OPTIONS_ADVANCED_LINEBONUS=Linee Bonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=Finita vai a
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Menu Party automatico
+SCORE_DOWNLOAD_TITLE=Download
+SCORE_DOWNLOAD_SONG=Canzone:
+SCORE_DOWNLOAD_CREATE_LIST=Preparando la lista...
+SCORE_DOWNLOAD_RECEIVE_LIST=Download in corso...
+SCORE_DOWNLOAD_CANCEL=Annulla
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=%0:d Canzone(i) cambiata(e) dal sito!
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=crea la tua canzone
+SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Risoluzione
+SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FLIP=Flip
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Luminosità
+SING_OPTIONS_WEBCAM_SATURATION=Saturazione
+SING_OPTIONS_WEBCAM_HUE=Tonalità
+SING_OPTIONS_WEBCAM_EFFECT=Effetti
+SING_OPTIONS_WEBCAM_PREVIEW=Attiva l'anteprima
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Abilta Anteprima
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disabilita Anteprima
+SING_OPTIONS_WEBCAM_NO_WEBCAM=Webcam non trovata!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normale
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Scala di grigi
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Nero e bianco
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negativo
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Immagine binaria
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilatato
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Limite
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Bordi
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Sfocatura gaussiana
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalizzato
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erodere
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Trasparenza
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Linea
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Proprietà
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Colore
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rosso
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Verde
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blu
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importa testo dal file midi
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Indietro
-SING_EDIT_BUTTON_CONVERT=Importa
-SING_EDIT_BUTTON_EXIT=Indietro
+JUKEBOX_SONGOPTIONS_VIDEO=Opzioni video
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspetto
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Larghezza
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Altezza
+JUKEBOX_SONGOPTIONS_LYRIC=Opzioni testo
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Dimensione
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Posizione
-SING_EDIT_NAVIGATE=Spostati
-SING_EDIT_SELECT=Seleziona
-SING_EDIT_EXIT=Indietro
+OPTION_VALUE_TO_SING=Inizia la sfida!
+OPTION_VALUE_ACTUAL=Attuale
+OPTION_VALUE_NEXT=Seguente
+OPTION_VALUE_OTHER=Altro
+OPTION_VALUE_FILL=Riempire
+OPTION_VALUE_OUTLINE=Contorno
+OPTION_VALUE_BLUE=Blu
+OPTION_VALUE_GREEN=Verde
+OPTION_VALUE_PINK=Rosa
+OPTION_VALUE_RED=Rosso
+OPTION_VALUE_VIOLET=Viola
+OPTION_VALUE_ORANGE=Arancione
+OPTION_VALUE_YELLOW=Giallo
+OPTION_VALUE_BROWN=Marrone
+OPTION_VALUE_BLACK=Nero
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Grigio
+OPTION_VALUE_WHITE=Bianco
+OPTION_VALUE_TURQUOISE=Turchese
+OPTION_VALUE_SALMON=Salmone
+OPTION_VALUE_GREENYELLOW=Verde giallo
+OPTION_VALUE_LAVENDER=Lavanda
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Verde acqua
+OPTION_VALUE_ORCHID=Orchidea
+OPTION_VALUE_STEELBLUE=Blu acciaio
+OPTION_VALUE_PLUM=Prugna
+OPTION_VALUE_CHOCOLATE=Cioccolato
+OPTION_VALUE_GOLD=Oro
+OPTION_VALUE_DARKBLUE=Blu scuro
+OPTION_VALUE_SKY=Celeste
+OPTION_VALUE_HARLEQUIN=Arlecchino
+OPTION_VALUE_CYAN=Ciano
+OPTION_VALUE_FLAME=Fiamma
SING_LEGEND_SELECT=Seleziona
SING_LEGEND_NAVIGATE=Naviga
SING_LEGEND_CONTINUE=Continua
SING_LEGEND_ESC=Indietro
-SING_PLAYER_DESC=Inserisci i nomi dei giocatori
-SING_PLAYER_WHEREAMI=Nomi giocatori
-SING_PLAYER_ENTER_NAME=Inserisci nome
-
-SING_DIFFICULTY_DESC=Seleziona la difficoltà
-SING_DIFFICULTY_WHEREAMI=Difficoltà
-SING_DIFFICULTY_CONTINUE=Scegli
-SING_EASY=Facile
-SING_MEDIUM=Media
-SING_HARD=Difficile
-
-SING_SONG_SELECTION_DESC=scegli la tua canzone
-SING_SONG_SELECTION_WHEREAMI=Selezione canzone
-SING_SONG_SELECTION_GOTO=vai a ..
SING_SONG_SELECTION=Brano
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONGS_IN_CAT=Canzone
SING_SONGS_IN_CAT=Canzoni
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Leggenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+SING_SONG_SELECTION_LEGEND_MEDLEY=Versione breve
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Versione breve calcolata
+SING_SONG_SELECTION_LEGEND_DUET=Duetto
SING_TOTAL=Punteggio
SING_MODE=Canta
@@ -223,7 +325,7 @@ SONG_SCORE=Punteggio
SONG_SCORE_WHEREAMI=Punti
SING_SCORE_TONE_DEAF=Muto
-SING_SCORE_AMATEUR=Alle prime armi
+SING_SCORE_AMATEUR=Principiante
SING_SCORE_WANNABE=Aspirante cantante
SING_SCORE_HOPEFUL=Promessa della musica
SING_SCORE_RISING_STAR=Stella Nascente
@@ -231,7 +333,7 @@ SING_SCORE_LEAD_SINGER=Cantante professionista
SING_SCORE_SUPERSTAR=Superstar mondiale!
SING_SCORE_ULTRASTAR=Campione di Ultrastar!
-SING_TOP_5_CHARTS=Punteggi
+SING_TOP_5_CHARTS=Punteggio primi 5 Giocatori
SING_TOP_5_CHARTS_WHEREAMI=Migliori 5
SING_TOP_5_CHARTS_CONTINUE=Continua
SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Cambia difficoltà
@@ -251,8 +353,6 @@ IMPLODE_GLUE2= e
SONG_MENU_NAME_MAIN=Menu canzone
SONG_MENU_PLAY=Canta
SONG_MENU_CHANGEPLAYERS=Cambia giocatori
-SONG_MENU_EDIT=Modifica
-SONG_MENU_MODI=Canta modifiche
SONG_MENU_CANCEL=Annulla
SONG_MENU_NAME_PLAYLIST=Menu Canzone
@@ -269,14 +369,14 @@ SONG_MENU_PLAYLIST_NEW_CREATE=Crea
SONG_MENU_PLAYLIST_NEW_UNNAMED=Senza Nome
SONG_MENU_NAME_PLAYLIST_DELITEM=Vuoi davvero eliminare?
-SONG_MENU_YES=Sì
+SONG_MENU_YES=Si
SONG_MENU_NO=No
SONG_MENU_NAME_PLAYLIST_LOAD=Apri Playlist
SONG_MENU_PLAYLIST_LOAD=Apri
SONG_MENU_PLAYLIST_DELCURRENT=Elimina Playlist corrente
-SONG_MENU_NAME_PLAYLIST_DEL=Elimina Playlist?
+SONG_MENU_NAME_PLAYLIST_DEL=Eliminare Playlist?
SONG_MENU_NAME_PARTY_MAIN=Menu Party
SONG_MENU_JOKER=Jolly
@@ -285,13 +385,6 @@ SONG_MENU_NAME_PARTY_JOKER=Gioca il jolly
SONG_JUMPTO_DESC=Cerca Canzone
SONG_JUMPTO_TYPE_DESC=Cerca per:
-SONG_JUMPTO_TYPE1=Tutto
-SONG_JUMPTO_TYPE2=Titolo
-SONG_JUMPTO_TYPE3=Artista
-SONG_JUMPTO_SONGSFOUND=%d Canzone(i) trovata(e)
-SONG_JUMPTO_NOSONGSFOUND=Nessuna Canzone trovata
-SONG_JUMPTO_HELP=Scrivi il Testo da cercare:
-SONG_JUMPTO_CATTEXT=Cerca per: %s
PARTY_MODE=Modalità party
PARTY_DIFFICULTY=Difficoltà
@@ -309,106 +402,101 @@ PARTY_LEGEND_CONTINUE=Continua
PARTY_OPTIONS_DESC=Scegli le impostazioni per il party
PARTY_OPTIONS_WHEREAMI=Impostazioni Party
-PARTY_PLAYER_DESC=Scegli il numero e i nomi delle squadre
-PARTY_PLAYER_WHEREAMI=Nomi squadre
PARTY_PLAYER_ENTER_NAME=Inserisci nomi
-
-PARTY_ROUNDS_DESC=Scegli le regole del gioco!
-PARTY_ROUNDS_WHEREAMI=Numero di sfide
PARTY_ROUNDS_LEGEND_CONTINUE=Incomincia il party!
PARTY_ROUNDCOUNT=Numero di sfide
PARTY_SELECTMODE=Sfida %d
-PARTY_ROUND_DESC=I prossimi che si sfideranno sono
-PARTY_ROUND_WHEREAMI=Prossima sfida
-PARTY_ROUND_LEGEND_CONTINUE=incomincia la sfida
+PARTY_ROUND_LEGEND_CONTINUE=Incomincia la sfida
PARTY_SONG_WHEREAMI=Seleziona la canzone
PARTY_SONG_LEGEND_CONTINUE=Inizia la sfida!
PARTY_SONG_MENU=Menu sfida
-PARTY_SCORE_DESC=PUNTEGGIO SFIDA
+OPTION_VALUE_SING=Canta
+OPTION_VALUE_SELECT_PLAYERS=Seleziona giocatore
+OPTION_VALUE_OPEN_MENU=Apri il Menu
+
+PARTY_SCORE_DESC=Punteggio Sfida
PARTY_SCORE_WHEREAMI=Punti
-PARTY_WIN_DESC=CLASSIFICA FINALE
+PARTY_WIN_DESC=Classifica Finale
PARTY_WIN_WHEREAMI=Vincitori
PARTY_WIN_LEGEND_CONTINUE=Torna al menu principale
PARTY_ROUND=Sfida
PARTY_ROUND_WINNER=Vincitore
-PARTY_NOTPLAYEDYET=Non ancora disputata
+PARTY_NOTPLAYEDYET=Non ancora giocata
PARTY_NOBODY=Pareggio
NEXT_ROUND=Prossima sfida:
PARTY_DISMISSED=Respinto!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=vince!
+PARTY_SCORE_WINS2=Vincitore!
MODE_RANDOM_NAME=Casuale
-;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
+MODE_RANDOM_DESC=Tieniti forte! Il gioco selezionerà una modalità per te a caso!
-MODE_HOLDTHELINE_NAME=Attenzione alla linea!
-;TODO: MODE_HOLDTHELINE_DESC=Keep your rating above the line for the longest!
+MODE_HOLDTHELINE_NAME=Mantieni la linea!
+MODE_HOLDTHELINE_DESC=Mantieni i tuoi valori al di sopra della line il massimo tempo possibile.
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
-;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
+MODE_HOLDTHELINEBLIND_DESC=Mantieni i tuoi valori al di sopra della linea il massimo tempo possibile, ma con le note nascoste.
-;TODO: MODE_7000POINTS_NAME=Until 7000
-;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
+MODE_7000POINTS_NAME=Fino a 7000
+MODE_7000POINTS_DESC=Arriva a 7000 Punti!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
-;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
+MODE_7000POINTSBLIND_NAME=7000 ciechi
+MODE_7000POINTSBLIND_DESC=Fino a 7000 points senza vedere le note!
MODE_5000POINTS_NAME=Fino a 5000!
-;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
+MODE_5000POINTS_DESC=Arriva a 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
-;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
+MODE_5000POINTSBLIND_NAME=5000 ciechi
+MODE_5000POINTSBLIND_DESC=Arriva a 5000 points senza vedere le note!
-;TODO: MODE_2000POINTS_NAME=Until 2000
-;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
+MODE_2000POINTS_NAME=Fino a 2000
+MODE_2000POINTS_DESC=Arriva a 2000 Punti!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
-;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
+MODE_2000POINTSBLIND_NAME=2000 ciechi
+MODE_2000POINTSBLIND_DESC=Arriva a 2000 punti senza vedere le note!
MODE_DUEL_NAME=Duello
-;TODO: MODE_DUEL_DESC=A 1v1 duel to get the highest score!
+MODE_DUEL_DESC=Un duello 1vs1 per ottenere il miglior punteggio!
-;TODO: MODE_TEAMDUEL_NAME=Team Duel
-;TODO: MODE_TEAMDUEL_DESC=Pass The Mic! Work together to get a higher score than the other team!
+MODE_TEAMDUEL_NAME=Squadra Duello
+MODE_TEAMDUEL_DESC=Passa il microfono! Lavorate insieme per ottenere un punteggio maggiore che la squadra avversaria!
-MODE_BLIND_NAME=Modalità ceca
-;TODO: MODE_BLIND_DESC=A 1v1 duel, but with the notes hidden!
+MODE_BLIND_NAME=Modalità cieca
+MODE_BLIND_DESC=Duello 1vs1 con le note nascoste!
-;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
-;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
+MODE_BLINDTOTAL_NAME=Oscurità totale!
+MODE_BLINDTOTAL_DESC=Duello con le note e testo nascosto. Solo per i più coraggiosi.
MODE_1000BLIND_NAME =+1000 cieco
-;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
+MODE_1000BLIND_DESC =Ottieni un vantaggio di più di 1000 punti, ma senza vedere le note!
-;TODO: MODE_DEAF_NAME = Deaf
-;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
+MODE_DEAF_NAME =Sordo
+MODE_DEAF_DESC = Credi di conoscere le note? Puoi cantare senza accompagnamenti?
-;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
-;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
+MODE_BLINDLYRICS_NAME =Senza testo
+MODE_BLINDLYRICS_DESC =Credi di conoscere il testo? Canta con il testo nascosto!
MODE_500BLIND_NAME =+500 cieco
-;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
+MODE_500BLIND_DESC =Ottieni un vantaggio di più di 500 punti senza vedere le note!
-MODE_SHORTSONG_NAME =Gara breve
-;TODO: MODE_SHORTSONG_DESC = A fast-paced 1v1 duel over half the song!
+MODE_SHORTSONG_NAME =Canzone corta
+MODE_SHORTSONG_DESC =Duello 1vs1 fino metà canzone!
MODE_HARDCORE_NAME=Hardcore
-;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
+MODE_HARDCORE_DESC=Vince chi ottenga 3 linee di vantaggio!
STAT_MAIN=Statistiche
-STAT_MAIN_DESC=Generale
-STAT_MAIN_WHEREAMI=Statistiche
-STAT_OVERVIEW_INTRO=%0:s Statistiche. \n Ultimo Azzeramento a %2:.2d.%1:.2d.%3:d
+STAT_OVERVIEW_INTRO=%0:s Statistiche. \n Ultimo Reset a %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Canzoni presenti(%3:d con Video), delle quali %1:d sono state già cantate e %2:d non lo sono ancora state.\n La Canzone più popolare è %5:s di %4:s.
-STAT_OVERVIEW_PLAYER=Dall'ultimo Azzeramente c'è/ci sono stato/i %0:d Giocatore/i differente/i.\n Il miglior giocatore è %1:s con un Punteggio medio di %2:d Punti.\n %3:s ha fatto il Punteggio più alto con %4:d Punti.
+STAT_OVERVIEW_PLAYER=Dall'ultimo Reset c'è/ci sono stato/i %0:d Giocatore/i differente/i.\n Il miglior giocatore è %1:s con un Punteggio medio di %2:d Punti.\n %3:s ha fatto il Punteggio più alto con %4:d Punti.
STAT_FORMAT_DATE=%1:.2d.%0:.2d.%2:d
@@ -418,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Dettagli Statistiche
STAT_NEXT=Prossima Pagina
STAT_PREV=Pagina Precedente
STAT_REVERSE=Ordine Inverso
-STAT_PAGE=Pagina %0:d di %1:d Pagine\n (%2:d di %3:d Inserimenti)
+STAT_PAGE=Pagina %0:d di %1:d \n Inserimenti %2:d di %3:d
STAT_DESC_SCORES=Punteggi alti
STAT_DESC_SCORES_REVERSED=Punteggi bassi
@@ -428,127 +516,20 @@ STAT_DESC_SINGERS=Cantanti migliori
STAT_DESC_SINGERS_REVERSED=Cantanti peggiori
STAT_FORMAT_SINGERS=%0:s \n Punteggio medio: %1:d
-STAT_DESC_SONGS=La Canzone più popolare
-STAT_DESC_SONGS_REVERSED=La Canzone meno popolare
+STAT_DESC_SONGS=Canzoni più popolari
+STAT_DESC_SONGS_REVERSED=Canzoni meno popolari
STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx Cantate
STAT_DESC_BANDS=Gli artisti più popolari
STAT_DESC_BANDS_REVERSED=Gli artisti meno popolari
STAT_FORMAT_BANDS=%0:s \n %1:dx cantate
-SCREENSHOT_SAVED=Screenshot salvato!
-SCREENSHOT_FAILED=Impossibile salvato lo screenshot!
-
-INFO_FILE_SAVED=Salvataggio eseguito!
-ERROR_SAVE_FILE_FAILED=Impossibile salvare!
-ERROR_FILE_NOT_FOUND=File non trovato
-
-ENCODING_ERROR_ASK_FOR_UTF8=Impossibile salvare le modifiche nella codifica attuale. Converti in UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Nessun file selezionato
-
-MSG_ERROR_TITLE=Errore
-MSG_INFO_TITLE=Informazione
-MSG_QUESTION_TITLE=Domanda
-MSG_QUIT_USDX=Vuoi davvero uscire da UltraStar?
-MSG_END_PARTY=Vuoi davvero terminare la Modalità Party?
-
-ERROR_NO_SONGS=Nessuna Canzone caricata!
-ERROR_NO_PLUGINS=Nessun Plugin caricato!
-ERROR_NO_MODES_FOR_CURRENT_SETUP=Nessuna modalità disponibile
-ERROR_CAN_NOT_START_PARTY=Si è verificato un errore avviando il party
-ERROR_CORRUPT_SONG=La canzone non è stata caricata.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Impossibile aprire la canzone: controllare il file .txt!
-ERROR_CORRUPT_SONG_NO_NOTES=Impossibile aprire la canzone: nessuna nota trovata nel .txt!
-ERROR_CORRUPT_SONG_NO_BREAKS=Impossibile aprire la canzone: nessuna pausa trovata, correggere il file .txt!
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Impossibile aprire la canzone: errore durante l'interpretazione della linea %0:d
-ERROR_NO_EDITOR=Questa funzione non è disponibile su Linux o Mac!
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Il giocatore %d è assegnato a più microfoni. Selezionare un canale libero!
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Il giocatore %d non è assegnato ad un microfono. Selezionare un canale nelle opzioni del microfono.
-
-SING_OPTIONS_NETWORK=Internet
-SING_OPTIONS_NETWORK_WHEREAMI=Impostazioni Internet
-SING_OPTIONS_NETWORK_DESC=Impostazioni generali
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Premi il tasto "Ins" per aggiungere un giocatore a questa rete...
-SING_OPTIONS_NETWORK_WEBSITE=Website SING_OPTIONS_NETWORK_USERNAME=Username SING_OPTIONS_NETWORK_PASSWORD=Password
-SING_OPTIONS_NETWORK_USERNAME=Nome utente
-SING_OPTIONS_NETWORK_PASSWORD=Parola d'ordine
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Invia Nome
-SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Riproduci
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Punteggio (Facile)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Punteggio (Medio)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Punteggio (Difficile)
-SING_OPTIONS_NETWORK_NO_DLL=Non ci sono DLL compatibili con Ultrastar Deluxe...
-SING_OPTIONS_NETWORK_DELETE_PLAYER= Sei sicuro di voler cancellare il giocatore %0:s del sito %1:s?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Inserisci
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Cancella
-
-OPTION_PLAYER_1=Giocatore 1
-OPTION_PLAYER_2=Giocatore 2
-OPTION_PLAYER_3=Giocatore 3
-OPTION_PLAYER_4=Giocatore 4
-OPTION_PLAYER_5=Giocatore 5
-OPTION_PLAYER_6=Giocatore 6
-OPTION_ALL_PLAYERS=Tutti i giocatori
-OPTION_ALL_SCORES=Tutti i punteggi
-OPTION_VALUE_SAVE=Salva
-OPTION_VALUE_SEND=Invia
-
-MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC=Riempi il campo:
-MSG_INSERT_USER_ADD=Aggiungi
-MSG_INSERT_USER_CANCEL=Cancella
-
-WEBSITE_NO_CONNECTION=Impossibile connettersi al sito!
-WEBSITE_LOGIN_ERROR=Login fallito!
-WEBSITE_BLANK_LOGIN=Ci sono campi vuoti!
-WEBSITE_EXIST_USER=Giocatore già esistente!
-WEBSITE_ERROR_SCORE=Errore nel punteggio!
-WEBSITE_OK_SEND=Punteggio inviato con successo!
-WEBSITE_ERROR_SCORE_DUPLICATED=Punteggio già esistente!
-WEBSITE_ERROR_SONG=Canzone non trovata!
-WEBSITE_SAVE_SCORE=Punteggio salvato con successo!
-WEBSITE_NO_CONNECTION_SAVE=Nessuna connessione al sito! Salvare comunque il giocatore?
-
-SONG_MENU_REFRESH_SCORES=Aggiorna punteggi
-SONG_MENU_REFRESH_SCORES_TITLE=Aggiorna
-SONG_MENU_REFRESH_SCORES_NO_WEB=Non ci sono siti!
-SONG_MENU_REFRESH_SCORES_ONLINE=Online
-SONG_MENU_REFRESH_SCORES_FILE=File
-SONG_MENU_REFRESH_SCORES_ALL_WEB=Tutti i siti
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=Tutte le canzoni
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=Questa canzone
-SONG_MENU_REFRESH_SCORES_REFRESH=Aggiorna
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Errore nella connessione al sito: %0:s!
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=File non trovato: '%0:s [Download punteggi]'!
-
-SONG_SCORE_MAX=Migliore:
-SONG_SCORE_MEDIA=Media:
-
-SCORE_SEND_DESC=Invia punteggio
-SCORE_SEND=Invia
-SCORE_SEND_PLAYER=Giocatore
-SCORE_SEND_OTHER_USER=Altro Username
-SCORE_SAVE=Salva
-
-SCORE_DOWNLOAD_TITLE=Download
-SCORE_DOWNLOAD_SONG=Canzone:
-SCORE_DOWNLOAD_CREATE_LIST=Sto preparando la lista...
-SCORE_DOWNLOAD_RECEIVE_LIST=Download in corso...
-SCORE_DOWNLOAD_CANCEL=Annulla
-SCORE_DOWNLOAD_OK=OK
-SCORE_DOWNLOAD_SONG_UPDATE=%0:d Canzone(i) cambiata(e) dal sito!
-
-SING_OPTIONS_GAME_SHOWSCORES=Mostra punteggi
-OPTION_VALUE_WHEN_EXISTS=Quando già esistente
-
PARTY_SELECT_MODE=Modalità
PARTY_MODE_CLASSIC=Classica
PARTY_MODE_CLASSIC_FREE=Classica libera
PARTY_MODE_CHALLENGE=Sfida
PARTY_MODE_TOURNAMENT=Torneo
PARTY_MODE_JUKEBOX=Jukebox
-PARTY_MODE_NOT_AVAILABLE=Non disponibile!
PARTY_MODE_TOURNAMENT_PLAYER_DESC=Scegli il numero e i nomi dei giocatori
PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Numero di giocatori
@@ -558,46 +539,13 @@ PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinali
PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarti di finale
PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Ottavi di finale
PARTY_MODE_TOURNAMENT_ROUNDS_DESC=I prossimi che si sfideranno sono
-PARTY_MODE_TOURNAMENT_WIN_DESC=CLASSIFICA FINALE
+PARTY_MODE_TOURNAMENT_WIN_DESC=Risultati classifica
PARTY_MODE_TOURNAMENT_CHAMPION=Il campione è: %0:s!
-EDIT_TITLE=Titolo:
-EDIT_ARTIST=Artista:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Copertina:
-EDIT_BACKGROUND=Sfondo:
-
-EDIT_START=Inizio:
-EDIT_DURATION=Durata:
-EDIT_TONE=Tono:
-EDIT_LYRIC=Testo:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Volume audio:
-EDIT_VOLUME_MIDI=Volume midi:
-EDIT_VOLUME_CLICK=Volume Click:
-INFO_UNDO=Annulla ultima operazione
-
-INFO_FILE_SAVED=Salvataggio eseguito!
-INFO_TIME_FIXED=Timing corretto
-INFO_CAPITALIZE=Maiuscole corrette
-INFO_EXIT=Vuoi uscire dall'editor senza salvare?
-INFO_SONG_RELOADED=Canzone ricaricata
-INFO_DIVIDED_BPM=Dimezzati i BPM
-INFO_MULTIPLIED_BPM=Raddoppiati i BPM
-INFO_PLAY_SONG=Esegui brano
-INFO_PLAY_SENTENCE=Esegui la frase
-INFO_CURRENT_LINE=Linea:
-INFO_CURRENT_NOTE=Nota:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
MSG_END_JUKEBOX=Vuoi uscire dalla modalità Jukebox?
JUKEBOX_RANDOM=Casuale
JUKEBOX_REPEAT=Ripeti
-JUKEBOX_FIND=Trova
+JUKEBOX_FIND=Trova:
JUKEBOX_SORT=Genere:
JUKEBOX_SONGLIST=Lista delle canzoni
@@ -605,8 +553,6 @@ SING_ERROR_DUET_MODE_PARTY = Duetto! Non disponibile in modalità Party!
SONG_MENU_SONG=Brano
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Genere
-SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menu canzoni
SONG_MENU_NAME_MEDLEY=Menu Medley
@@ -622,125 +568,59 @@ SONG_MENU_SORTING_ALL=Tutte
SONG_MENU_SORTING_DUET=Duetti
SONG_MENU_SORTING_APPLY=Applica
-SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Risoluzione
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Effetti
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Soglia
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
-;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
-;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
-;TODO: SONG_MENU_OPEN_CATEGORY=Open category
-;TODO: SONG_MENU_CLOSE_CATEGORY=Close category
-;TODO: SONG_MENU_START_JUKEBOX=Start Jukebox!
-;TODO: SONG_MENU_NAME_JUKEBOX=Menu Jukebox
-
-;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
-;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
+PARTY_PLAYLIST_MANUAL=Selezione manuale
+PARTY_MODE_JUKEBOX_NO_SONGS=Playlist vuota!
+SONG_MENU_OPEN_CATEGORY=Categoria aperta
+SONG_MENU_CLOSE_CATEGORY=Chiudi categoria
+SONG_MENU_START_JUKEBOX=Inizia Jukebox!
+SONG_MENU_NAME_JUKEBOX=Menu Jukebox
+
+WEBSITE_EXIST_SONG=La canzone appartiene al sito web: %0:s
+WEBSITE_NOT_EXIST_SONG=La canzone non appartiene a nessun sito web!
NAME_PLAYERS_COUNT=Numero di giocatori
NAME_CURRENT_PLAYER=Giocatore
-SING_OPTIONS_GAME_SONGMENU=Menu Canzone
-OPTION_VALUE_ROULETTE=Roulette
-OPTION_VALUE_CHESSBOARD=Scacchiera
-OPTION_VALUE_CAROUSEL=Giostra
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-OPTION_VALUE_LIST=Lista
-OPTION_VALUE_MOSAIC=Piastrella
-
-SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Inizia la sfida!
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Colore
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rosso
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Verde
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blu
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
+JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Allungare
+JUKEBOX_SONGOPTIONS_VIDEO_CROP=Ritagliare
+JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
JUKEBOX_SONGOPTIONS_SAVE=Salva
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
-;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
-;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
+JUKEBOX_SONGOPTIONS_CLOSE=Esci
+JUKEBOX_SONGOPTIONS_DEFAULT=Predefinito
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Salvato!
-;TODO: SING_SONG_CREDITS=Credits
-SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
-;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
+JUKEBOX_MODE=Modalità Jukebox
JUKEBOX_OPTIONS_PLAYLIST=Playlist
JUKEBOX_OPTIONS_PLAYLIST_MODE=Modalità
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Tutti i giocatori
-OPTION_VALUE_PLAYER=Giocatore
+ABOUT_MAIN=Sul gioco
+ABOUT_USDX_DEVELOPEDBY=Sviluppato da
+ABOUT_CHECK_CHECKING=Verifica nuovi aggiornamenti...
+ABOUT_CHECK_AVAILABLE=C'è una nuova versione disponibile
+ABOUT_CHECK_UPTODATE=WorldParty è stato aggiornato
+ABOUT_CHECK_CONNECTION=Non c'è connessione a Internet
+ABOUT_OVERVIEW=Scopri un nuovo modo di cantare, da solo, in coppia o con gli amici. \n Il divertimento è garantito.\n\nWorldParty è un modifica della versione originale Ultrastar Deluxe 1.1 progettato e sviluppato dal team UltraStar España, conta con la più grande comunità di karaoke.\n\n\nQuesto programma è gratuito e libero sotto licenza GPL. \n\n Visitaci per maggiori informazioni.\n\nhttps://ultrastar-es.org
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+DEVELOPERS_TITLE=Sviluppato da
+DEVELOPERS_OVERVIEW=Persone che hanno contribuito a questo progetto:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visitaci per maggiori informazioni.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Screenshot salvato!
+SCREENSHOT_FAILED=Impossibile salvare lo screenshot!
+
+MSG_ERROR_TITLE=Errore
+MSG_INFO_TITLE=Informazione
+MSG_QUESTION_TITLE=Domanda
+MSG_QUIT_USDX=Vuoi davvero uscire da UltraStar?
+MSG_END_PARTY=Vuoi davvero terminare la Modalità Party?
+
+ERROR_NO_SONGS=Nessuna Canzone caricata!
+ERROR_NO_PLUGINS=Nessun Plugin caricato!
+ERROR_LOADING_SONGS=Attendi la fine del caricamento di tutte le canzoni
+ERROR_CORRUPT_SONG=La canzone non è stata caricata.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Impossibile aprire la canzone: file non trovato, correggere il file .txt!
+ERROR_CORRUPT_SONG_NO_NOTES=Impossibile aprire la canzone: note non trovate, correggere il file .txt!
+ERROR_CORRUPT_SONG_NO_BREAKS=Impossibile aprire la canzone: nessuna pausa trovata, correggere il file .txt!
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Impossibile aprire la canzone: errore durante l'interpretazione della linea %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Il giocatore %d è assegnato a più microfoni. Per favore, selezionare un canale libero!
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Il giocatore %d non è assegnato ad un microfono. Per favore, selezionare un canale nelle opzioni del microfono.
\ No newline at end of file
diff --git a/game/languages/Language.new b/game/languages/Language.new
index 1cd9dccc..42be1bb6 100644
--- a/game/languages/Language.new
+++ b/game/languages/Language.new
@@ -75,9 +75,6 @@ TODO: LANGUAGE=Language
;TODO: SING_STATS=stats
;TODO: SING_STATS_DESC=view the statistics
-;TODO: SING_EDITOR=editor
-;TODO: SING_EDITOR_DESC=create your own song
-
;TODO: SING_GAME_OPTIONS=game options
;TODO: SING_GAME_OPTIONS_DESC=change game settings
@@ -157,18 +154,6 @@ TODO: LANGUAGE=Language
;TODO: SING_OPTIONS_ADVANCED_ONSONGCLICK=after Song Select
;TODO: SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
-;TODO: SING_EDIT=Editor
-;TODO: SING_EDIT_MENU_DESCRIPTION=create your own song
-
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Import text from midi file
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_EXIT=back
-;TODO: SING_EDIT_BUTTON_CONVERT=Import
-;TODO: SING_EDIT_BUTTON_EXIT=back
-
-;TODO: SING_EDIT_NAVIGATE=navigate
-;TODO: SING_EDIT_SELECT=select
-;TODO: SING_EDIT_EXIT=back
-
;TODO: SING_LEGEND_SELECT=select
;TODO: SING_LEGEND_NAVIGATE=navigate
;TODO: SING_LEGEND_CONTINUE=continue
@@ -235,7 +220,6 @@ TODO: LANGUAGE=Language
;TODO: SONG_MENU_NAME_MAIN=song menu
;TODO: SONG_MENU_PLAY=Sing
;TODO: SONG_MENU_CHANGEPLAYERS=Change Players
-;TODO: SONG_MENU_EDIT=Edit
;TODO: SONG_MENU_MODI=Sing a Modi
;TODO: SONG_MENU_CANCEL=Cancel
@@ -391,11 +375,10 @@ TODO: LANGUAGE=Language
;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
;TODO: INFO_FILE_SAVED=File saved
-;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
+;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
;TODO: MSG_ERROR_TITLE=Error
;TODO: MSG_INFO_TITLE=Information
@@ -412,6 +395,5 @@ TODO: LANGUAGE=Language
;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
diff --git "a/game/languages/Lietuvi\305\263.ini" "b/game/languages/Lietuvi\305\263.ini"
index c80388c6..c39a57be 100644
--- "a/game/languages/Lietuvi\305\263.ini"
+++ "b/game/languages/Lietuvi\305\263.ini"
@@ -19,18 +19,18 @@ OPTION_VALUE_ARTIST2=Menininkas2
OPTION_VALUE_YEAR=Metai
OPTION_VALUE_DECADE=Dešimtmetis
OPTION_VALUE_PLAYLIST=Grojaraštis
-//------------------------------------------------------------------
+
OPTION_VALUE_BORDERLESS=Be sienų
-OPTION_VALUE_WHENNOVIDEO=When No Video
-OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Kai nėra vaizdo įrašo
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Kai nėra vaizdo ir fono
OPTION_VALUE_SMALL=Mažas
OPTION_VALUE_BIG=Didelis
-OPTION_VALUE_HALF=Half
-OPTION_VALUE_FULL_VID=Full (Video)
-OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+OPTION_VALUE_HALF=Pusė
+OPTION_VALUE_FULL_VID=Pilnas (Video)
+OPTION_VALUE_FULL_VID_BG=Pilnas (BG & Video)
OPTION_VALUE_GAIN_SOFT=Minkštas
OPTION_VALUE_GAIN_MEDIUM=Vidutinis
@@ -41,8 +41,8 @@ OPTION_VALUE_SEC=Antra
OPTION_VALUE_SECS=Sekundes
OPTION_VALUE_PLAIN=Stilizuotas
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_OLINE1=Su plonu kraštu
+OPTION_VALUE_OLINE2=Su storu kraštu
OPTION_VALUE_SIMPLE=Paprasta
OPTION_VALUE_ZOOM=Priartinti
@@ -68,8 +68,8 @@ OPTION_VALUE_SING=Dainuoti
OPTION_VALUE_SELECT_PLAYERS=Pasirinkite žaidėjus
OPTION_VALUE_OPEN_MENU=Atidarykite meniu
-
SING_LOADING=Kraunasi...
+SING_LOADING_SONGS=Įkeliamos dainos iš aplanko %s
SING_CHOOSE_MODE=Pasirinkite režimą
SING_SING=Dainuoti
@@ -89,81 +89,79 @@ SING_GAME_OPTIONS_DESC=Keisti žaidimo nustatymus
SING_EXIT=Išeiti
SING_EXIT_DESC=Baigti žaidimą
-SING_OPTIONS=Options
-SING_OPTIONS_DESC=Change settings
-SING_OPTIONS_WHEREAMI=Options
-
-SING_OPTIONS_GAME=Game
-SING_OPTIONS_GRAPHICS=Graphics
-SING_OPTIONS_SOUND=Sound
-SING_OPTIONS_LYRICS=Lyrics
-SING_OPTIONS_THEMES=Themes
-SING_OPTIONS_RECORD=Record
-SING_OPTIONS_ADVANCED=Advanced
-SING_OPTIONS_EXIT=Back
-
-SING_OPTIONS_GAME_WHEREAMI=Options Game
-SING_OPTIONS_GAME_DESC=General game settings
-SING_OPTIONS_GAME_PLAYERS=Players
-SING_OPTIONS_GAME_DIFFICULTY=Difficulty
-SING_OPTIONS_GAME_LANGUAGE=Language
-SING_OPTIONS_GAME_TABS=Tabs
-SING_OPTIONS_GAME_SORTING=Sorting
-SING_OPTIONS_GAME_JOYPAD_SUPPORT=Controller support
-
-SING_OPTIONS_GRAPHICS_WHEREAMI=Options Graphics
-SING_OPTIONS_GRAPHICS_DESC=Graphic settings
-SING_OPTIONS_GRAPHICS_RESOLUTION=Resolution
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen
-SING_OPTIONS_GRAPHICS_EFFECTSING=Sing Effects
-SING_OPTIONS_GRAPHICS_SCREENFADE=Screen Fading
-SING_OPTIONS_GRAPHICS_LOADANIMATION=Load Animation
-SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_LINEBONUS=Line Bonus
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Movie size
-
-SING_OPTIONS_SOUND_WHEREAMI=Options Sound
-SING_OPTIONS_SOUND_DESC=Sound settings
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Mic boost
-SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist
-SING_OPTIONS_SOUND_BEAT_CLICK=Beat click
-SING_OPTIONS_SOUND_THRESHOLD=Threshold
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Two players mode
-SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview Volume
-SING_OPTIONS_SOUND_PREVIEWFADING=Preview Fading
-
-SING_OPTIONS_LYRICS_WHEREAMI=Options Lyrics
-SING_OPTIONS_LYRICS_DESC=Lyrics settings
-SING_OPTIONS_LYRICS_FONT=Font
-SING_OPTIONS_LYRICS_EFFECT=Effect
-SING_OPTIONS_LYRICS_SOLMIZATION=Solmization
-SING_OPTIONS_LYRICS_NOTELINES=Staves
-
-SING_OPTIONS_THEMES_WHEREAMI=Options Themes
-SING_OPTIONS_THEMES_DESC=Theme and Skin settings
-SING_OPTIONS_THEMES_THEME=Theme
-SING_OPTIONS_THEMES_SKIN=Skin
-SING_OPTIONS_THEMES_COLOR=Color
-
-SING_OPTIONS_RECORD_WHEREAMI=Options Record
-SING_OPTIONS_RECORD_DESC=Microphone settings
-SING_OPTIONS_RECORD_CARD=Soundcard
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Channel
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Options Advanced
-SING_OPTIONS_ADVANCED_DESC=Advanced settings
-
-SING_OPTIONS_ADVANCED_DEBUG=Debug
-SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscope
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Safety Questions
-SING_OPTIONS_ADVANCED_LINEBONUS=Line Bonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=After Song Select
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
+SING_OPTIONS=Galimybės
+SING_OPTIONS_DESC=Pakeisti nustatymus
+SING_OPTIONS_WHEREAMI=Galimybės
+
+SING_OPTIONS_GAME=Žaidimas
+SING_OPTIONS_GRAPHICS=Grafika
+SING_OPTIONS_SOUND=Garsas
+SING_OPTIONS_LYRICS=Dainos žodžiai
+SING_OPTIONS_THEMES=Temos
+SING_OPTIONS_MICROPHONES=Įrašyti
+SING_OPTIONS_ADVANCED=Išplėstinė
+SING_OPTIONS_EXIT=Atgal
+
+SING_OPTIONS_GAME_WHEREAMI=Parinkčių žaidimas
+SING_OPTIONS_GAME_DESC=Bendrieji žaidimo parametrai
+SING_OPTIONS_GAME_PLAYERS=Žaidėjai
+SING_OPTIONS_GAME_DIFFICULTY=Sunkumas
+SING_OPTIONS_GAME_LANGUAGE=Kalba
+SING_OPTIONS_GAME_TABS=Skirtukai
+SING_OPTIONS_GAME_SORTING=Rūšiavimas
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Kontrolieriaus palaikymas
+
+SING_OPTIONS_GRAPHICS_WHEREAMI=Parinktys Grafika
+SING_OPTIONS_GRAPHICS_DESC=Grafiniai nustatymai
+SING_OPTIONS_GRAPHICS_RESOLUTION=Rezoliucija
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Visas ekranas
+;TODO: SING_OPTIONS_GRAPHICS_EFFECTSING=Sing Effects
+SING_OPTIONS_GRAPHICS_SCREENFADE=Ekrano blukimas
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Įkelti animaciją
+SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizacija
+SING_OPTIONS_GRAPHICS_LINEBONUS=Linijos premija
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmo dydis
+
+SING_OPTIONS_SOUND_WHEREAMI=Funkcijos Garsas
+SING_OPTIONS_SOUND_DESC=Garso nustatymai
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofono atkūrimas
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Fonine muzika
+SING_OPTIONS_SOUND_CLICK_ASSIST=Spustelėkite padėti
+SING_OPTIONS_SOUND_BEAT_CLICK=Mušti spustelėkite
+SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Du žaidėjų režimai
+SING_OPTIONS_SOUND_MUSICAUTOGAIN=Muzikos priaugimas
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Peržiūrėti tomas
+SING_OPTIONS_SOUND_PREVIEWFADING=Peržiūra išblukimas
+
+SING_OPTIONS_LYRICS_WHEREAMI=Pasirinkimai Lyrics
+;TODO: SING_OPTIONS_LYRICS_DESC=Lyrics settings
+SING_OPTIONS_LYRICS_FONT=Šriftas
+SING_OPTIONS_LYRICS_EFFECT=Efektas
+SING_OPTIONS_LYRICS_SOLMIZATION=Solminacija
+SING_OPTIONS_LYRICS_NOTELINES=Poliai
+
+SING_OPTIONS_THEMES_WHEREAMI=Parinktys Temos
+SING_OPTIONS_THEMES_DESC=Temos ir odos nustatymai
+SING_OPTIONS_THEMES_THEME=Tema
+SING_OPTIONS_THEMES_SKIN=Odos
+SING_OPTIONS_THEMES_COLOR=Spalva
+
+SING_OPTIONS_MICROPHONES_WHEREAMI=Parinktys Įrašas
+SING_OPTIONS_MICROPHONES_DESC=Mikrofono nustatymai
+SING_OPTIONS_MICROPHONES_CARD=Garso plokštė
+SING_OPTIONS_MICROPHONES_INPUT=Įvestis
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanalas
+SING_OPTIONS_MICROPHONES_THRESHOLD=Slenkstis
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikrobangų krosnelė
+
+SING_OPTIONS_ADVANCED_WHEREAMI=Pasirinktys Išplėstinė
+SING_OPTIONS_ADVANCED_DESC=Pažangūs nustatymai
+SING_OPTIONS_ADVANCED_DEBUG=Derinti
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskopas
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Saugos klausimai
+SING_OPTIONS_ADVANCED_LINEBONUS=Linijos premija
+;TODO: SING_OPTIONS_ADVANCED_ONSONGCLICK=After song select
+;TODO: SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
SING_LEGEND_SELECT=Pasirinkite
@@ -180,51 +178,52 @@ SING_PLAYER_COLOR=Pasirinkite spalvą
SING_PLAYER_LEVEL=Pasirinkite lygį
SING_PLAYER_AVATAR=Pasirinkite savo avatarą
-SING_DIFFICULTY_DESC=Select difficulty
-SING_DIFFICULTY_WHEREAMI=Difficulty
-SING_DIFFICULTY_CONTINUE=To song selection
-SING_EASY=Easy
-SING_MEDIUM=Medium
-SING_HARD=Hard
-
-SING_SONG_SELECTION_DESC=Choose your song
-SING_SONG_SELECTION_WHEREAMI=Song Selection
-SING_SONG_SELECTION_GOTO=Go to ..
-SING_SONG_SELECTION=Song selection
-SING_SONG_SELECTION_MENU=Menu
-SING_SONG_SELECTION_PLAYLIST=Playlist
-SING_SONGS_IN_CAT=Songs
-PLAYLIST_CATTEXT=Playlist: %s
-SING_SONG_SELECTION_LEGEND_TITLE=Legend
-SING_SONG_SELECTION_LEGEND_VIDEO=Video
-SING_SONG_SELECTION_LEGEND_MEDLEY=Short version
-SING_SONG_SELECTION_LEGEND_MEDLEYC=Short version calculated
-SING_SONG_SELECTION_LEGEND_DUET=Duet
-
-SING_TOTAL=Total
-SING_MODE=Sing solo
-SING_NOTES=Notes
-SING_GOLDEN_NOTES=Golden notes
-SING_PHRASE_BONUS=Line bonus
-
-SING_MENU=Main Menu
-
-SONG_SCORE=Song score
-SONG_SCORE_WHEREAMI=Score
-
-SING_SCORE_TONE_DEAF=Tone Deaf
-SING_SCORE_AMATEUR=Amateur
+SING_DIFFICULTY_DESC=Pasirinkite sunkumus
+SING_DIFFICULTY_WHEREAMI=Sunkumas
+SING_DIFFICULTY_CONTINUE=Parinkti dainą
+SING_EASY=Lengva
+SING_MEDIUM=Vidutinis
+SING_HARD=Sunku
+
+SING_SONG_SELECTION_DESC=Pasirinkite dainą
+SING_SONG_SELECTION_WHEREAMI=Dainų pasirinkimas
+SING_SONG_SELECTION_GOTO=Eiti į ..
+SING_SONG_SELECTION=Dainų pasirinkimas
+SING_SONG_SELECTION_MENU=Meniu
+SING_SONG_SELECTION_PLAYLIST=Grojaraštis
+SING_SONG_IN_CAT=Daina
+SING_SONGS_IN_CAT=Dainos
+PLAYLIST_CATTEXT=Grojaraštis: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Vaizdo įrašas
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duetas
+
+SING_TOTAL=Iš viso
+SING_MODE=Dainuoti solo
+SING_NOTES=Pastabos
+SING_GOLDEN_NOTES=Auksinės užrašai
+SING_PHRASE_BONUS=Line premija
+
+SING_MENU=Pagrindinis meniu
+
+SONG_SCORE=Dainos rezultatas
+SONG_SCORE_WHEREAMI=Rezultatas
+
+SING_SCORE_TONE_DEAF=Kurčias
+SING_SCORE_AMATEUR=Mėgėjas
SING_SCORE_WANNABE=Wannabe
-SING_SCORE_HOPEFUL=Hopeful
-SING_SCORE_RISING_STAR=Rising Star
-SING_SCORE_LEAD_SINGER=Lead Singer
-SING_SCORE_SUPERSTAR=Superstar
+SING_SCORE_HOPEFUL=Tikiuosi
+SING_SCORE_RISING_STAR=Kylanti žvaigždė
+SING_SCORE_LEAD_SINGER=Pagrindinis dainininkas
+SING_SCORE_SUPERSTAR=Superžvaigždė
SING_SCORE_ULTRASTAR=Ultrastar
-SING_TOP_5_CHARTS=Top 5 Players
+SING_TOP_5_CHARTS=5 geriausi žaidėjai
SING_TOP_5_CHARTS_WHEREAMI=Top 5
-SING_TOP_5_CHARTS_CONTINUE=To song selection
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
+SING_TOP_5_CHARTS_CONTINUE=Parinkti dainą
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Perjungti sunkumus
POPUP_PERFECT=puikus
POPUP_AWESOME=nuostabu
@@ -238,505 +237,470 @@ POPUP_AWFUL=baisus
IMPLODE_GLUE1=,
IMPLODE_GLUE2= ir
-SONG_MENU_NAME_MAIN=Song menu
-SONG_MENU_PLAY=Sing
-SONG_MENU_CHANGEPLAYERS=Change Players
-SONG_MENU_EDIT=Edit
-SONG_MENU_MODI=Sing a Modi
-SONG_MENU_CANCEL=Cancel
+SONG_MENU_NAME_MAIN=Dainų meniu
+SONG_MENU_PLAY=Dainuoti
+SONG_MENU_CHANGEPLAYERS=Keisti žaidėjus
+SONG_MENU_MODI=Dainuoti modi
+SONG_MENU_CANCEL=Atšaukti
-SONG_MENU_NAME_PLAYLIST=Song Menu
-SONG_MENU_PLAYLIST_ADD=Add Song
-SONG_MENU_PLAYLIST_DEL=Delete Song
+SONG_MENU_NAME_PLAYLIST=Dainų meniu
+SONG_MENU_PLAYLIST_ADD=Pridėti dainą
+SONG_MENU_PLAYLIST_DEL=Ištrinti daina
-SONG_MENU_NAME_PLAYLIST_ADD=Add Song
-SONG_MENU_PLAYLIST_ADD_NEW=To new playlist
-SONG_MENU_PLAYLIST_ADD_EXISTING=To existing playlist
-SONG_MENU_PLAYLIST_NOEXISTING=No playlist available
+SONG_MENU_NAME_PLAYLIST_ADD=Pridėti dainą
+SONG_MENU_PLAYLIST_ADD_NEW=Naujam grojaraščiui
+SONG_MENU_PLAYLIST_ADD_EXISTING=Esamas grojaraštis
+SONG_MENU_PLAYLIST_NOEXISTING=Nėra grojaraščio
-SONG_MENU_NAME_PLAYLIST_NEW=New Playlist
-SONG_MENU_PLAYLIST_NEW_CREATE=Create
-SONG_MENU_PLAYLIST_NEW_UNNAMED=Unnamed
+SONG_MENU_NAME_PLAYLIST_NEW=Naujas grojaraštis
+SONG_MENU_PLAYLIST_NEW_CREATE=Sukurti
+SONG_MENU_PLAYLIST_NEW_UNNAMED=Be pavadinimo
-SONG_MENU_NAME_PLAYLIST_DELITEM=Really Delete?
-SONG_MENU_YES=Yes
-SONG_MENU_NO=No
+SONG_MENU_NAME_PLAYLIST_DELITEM=Tikrai ištrinti?
+SONG_MENU_YES=Taip
+SONG_MENU_NO=Ne
-SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist
-SONG_MENU_PLAYLIST_LOAD=Open
-SONG_MENU_PLAYLIST_DELCURRENT=Delete current Playlist
+SONG_MENU_NAME_PLAYLIST_LOAD=Atidaryti grojaraštį
+SONG_MENU_PLAYLIST_LOAD=Atviras
+SONG_MENU_PLAYLIST_DELCURRENT=Ištrinti dabartinį grojaraštį
-SONG_MENU_NAME_PLAYLIST_DEL=Delete Playlist?
+SONG_MENU_NAME_PLAYLIST_DEL=Ištrinti grojaraštį?
-SONG_MENU_NAME_PARTY_MAIN=Party Menu
+SONG_MENU_NAME_PARTY_MAIN=Vakarėlio meniu
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=Take joker
+SONG_MENU_NAME_PARTY_JOKER=Paimk jokerį
-SONG_JUMPTO_DESC=Search song
-SONG_JUMPTO_TYPE_DESC=Search for:
-SONG_JUMPTO_TYPE1=All
-SONG_JUMPTO_TYPE2=Title
-SONG_JUMPTO_TYPE3=Artist
-SONG_JUMPTO_SONGSFOUND=%d Song(s) found
-SONG_JUMPTO_NOSONGSFOUND=No Song found
-SONG_JUMPTO_HELP=Type Text to Search for
-SONG_JUMPTO_CATTEXT=Search for: %s
+SONG_JUMPTO_DESC=Ieškoti dainos
+SONG_JUMPTO_TYPE_DESC=Ieškoti:
+SONG_JUMPTO_TYPE1=Visi
+SONG_JUMPTO_TYPE2=Pavadinimas
+SONG_JUMPTO_TYPE3=Menininkas
+SONG_JUMPTO_SONGSFOUND=%d Dainos rasta
+SONG_JUMPTO_NOSONGSFOUND=Nerasta daina
+SONG_JUMPTO_HELP=Įveskite ieškomą tekstą
+SONG_JUMPTO_CATTEXT=Ieškoti: %s
-PARTY_MODE=Party mode
-PARTY_DIFFICULTY=Difficulty
-PARTY_PLAYLIST=Playlist Mode
-PARTY_PLAYLIST_ALL=All songs
-PARTY_PLAYLIST_CATEGORY=Folder
-PARTY_PLAYLIST_PLAYLIST=Playlist
-PARTY_TEAMS=Number of teams
-PARTY_TEAMS_PLAYER1=Num. of singers
-PARTY_TEAMS_PLAYER2=Num. of singers
-PARTY_TEAMS_PLAYER3=Num. of singers
+;TODO: PARTY_MODE=Party mode
+;TODO: PARTY_DIFFICULTY=Difficulty
+;TODO: PARTY_PLAYLIST=Playlist Mode
+;TODO: PARTY_PLAYLIST_ALL=All songs
+PARTY_PLAYLIST_CATEGORY=Aplankas
+;TODO: PARTY_PLAYLIST_PLAYLIST=Playlist
+;TODO: PARTY_TEAMS=Number of teams
+;TODO: PARTY_TEAMS_PLAYER1=Num. of singers
+;TODO: PARTY_TEAMS_PLAYER2=Num. of singers
+;TODO: PARTY_TEAMS_PLAYER3=Num. of singers
-PARTY_LEGEND_CONTINUE=Continue
+PARTY_LEGEND_CONTINUE=Tęsti
-PARTY_OPTIONS_DESC=Settings for the party-game
-PARTY_OPTIONS_WHEREAMI=Party Options
+;TODO: PARTY_OPTIONS_DESC=Settings for the party-game
+;TODO: PARTY_OPTIONS_WHEREAMI=Party Options
-PARTY_PLAYER_DESC=Enter player- and teamnames!
-PARTY_PLAYER_WHEREAMI=Party Names
-PARTY_PLAYER_ENTER_NAME=Enter names
+;TODO: PARTY_PLAYER_DESC=Enter player- and teamnames!
+;TODO: PARTY_PLAYER_WHEREAMI=Party Names
+PARTY_PLAYER_ENTER_NAME=Įveskite pavadinimus
-PARTY_ROUNDS_DESC=Select which modes you want to play
-PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=Start party-game
-PARTY_ROUNDCOUNT=Number of rounds
-PARTY_SELECTMODE=Round %d
+;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
+;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
+;TODO: PARTY_ROUNDS_LEGEND_CONTINUE=Start party-game
+;TODO: PARTY_ROUNDCOUNT=Number of rounds
+;TODO: PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=Next players to the mics
-PARTY_ROUND_WHEREAMI=Party Next Round
-PARTY_ROUND_LEGEND_CONTINUE=Start round
+;TODO: PARTY_ROUND_DESC=Next players to the mics
+;TODO: PARTY_ROUND_WHEREAMI=Party Next Round
+;TODO: PARTY_ROUND_LEGEND_CONTINUE=Start round
-PARTY_SONG_WHEREAMI=Party Song-Selection
-PARTY_SONG_LEGEND_CONTINUE=Sing
-PARTY_SONG_MENU=Party menu
+;TODO: PARTY_SONG_WHEREAMI=Party Song-Selection
+;TODO: PARTY_SONG_LEGEND_CONTINUE=Sing
+;TODO: PARTY_SONG_MENU=Party menu
-PARTY_SCORE_DESC=Score of the last round
-PARTY_SCORE_WHEREAMI=Party Points
+;TODO: PARTY_SCORE_DESC=Score of the last round
+;TODO: PARTY_SCORE_WHEREAMI=Party Points
-PARTY_WIN_DESC=Winner of the party-game
-PARTY_WIN_WHEREAMI=Party Winner
-PARTY_WIN_LEGEND_CONTINUE=Back to main-menu
+;TODO: PARTY_WIN_DESC=Winner of the party-game
+;TODO: PARTY_WIN_WHEREAMI=Party Winner
+;TODO: PARTY_WIN_LEGEND_CONTINUE=Back to main-menu
-PARTY_ROUND=Round
-PARTY_ROUND_WINNER=Winner
-PARTY_NOTPLAYEDYET=Not played yet
-PARTY_NOBODY=Nobody
-NEXT_ROUND=Next round:
+;TODO: PARTY_ROUND=Round
+PARTY_ROUND_WINNER=Nugalėtojas
+;TODO: PARTY_NOTPLAYEDYET=Not played yet
+PARTY_NOBODY=Niekas
+;TODO: NEXT_ROUND=Next round:
-PARTY_DISMISSED=Dismissed!
-PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=Wins!
+;TODO: PARTY_DISMISSED=Dismissed!
+;TODO: PARTY_SCORE_WINS=%s
+;TODO: PARTY_SCORE_WINS2=Wins!
-MODE_RANDOM_NAME=Random Mode
-MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
+;TODO: MODE_RANDOM_NAME=Random Mode
+;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
-MODE_HOLDTHELINE_NAME=Hold the Line
-MODE_HOLDTHELINE_DESC=Keep your rating above the line for the longest!
+;TODO: MODE_HOLDTHELINE_NAME=Hold the Line
+;TODO: MODE_HOLDTHELINE_DESC=Keep your rating above the line for the longest!
-MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
-MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
+;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
+;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-MODE_7000POINTS_NAME=Until 7000
-MODE_7000POINTS_DESC=Race to 7000 Points!
+MODE_7000POINTS_NAME=Iki 7000
+;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-MODE_7000POINTSBLIND_NAME=Blind 7000
-MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
+MODE_7000POINTSBLIND_NAME=Aklas 7000
+;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
-MODE_5000POINTS_NAME=Until 5000
-MODE_5000POINTS_DESC=Race to 5000 Points!
+MODE_5000POINTS_NAME=Iki 5000
+;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-MODE_5000POINTSBLIND_NAME=Blind 5000
-MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
+MODE_5000POINTSBLIND_NAME=Aklas 5000
+;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-MODE_2000POINTS_NAME=Until 2000
-MODE_2000POINTS_DESC=Race to 2000 Points!
+MODE_2000POINTS_NAME=Iki 2000
+;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-MODE_2000POINTSBLIND_NAME=Blind 2000
-MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
+MODE_2000POINTSBLIND_NAME=Aklas 2000
+;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
-MODE_DUEL_NAME=Duel
-MODE_DUEL_DESC=A 1v1 duel to get the highest score!
+;TODO: MODE_DUEL_NAME=Duel
+;TODO: MODE_DUEL_DESC=A 1v1 duel to get the highest score!
-MODE_TEAMDUEL_NAME=Team Duel
-MODE_TEAMDUEL_DESC=Pass The Mic! Work together to get a higher score than the other team!
+;TODO: MODE_TEAMDUEL_NAME=Team Duel
+;TODO: MODE_TEAMDUEL_DESC=Pass The Mic! Work together to get a higher score than the other team!
-MODE_BLIND_NAME=Blind Mode
-MODE_BLIND_DESC=A 1v1 duel, but with the notes hidden!
+MODE_BLIND_NAME=Aklųjų režimas
+;TODO: MODE_BLIND_DESC=A 1v1 duel, but with the notes hidden!
-MODE_BLINDTOTAL_NAME=Total Darkness!
-MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
+;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
+;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
-MODE_1000BLIND_NAME = +1000 Blind
-MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
+MODE_1000BLIND_NAME = +1000 Aklas
+;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
-MODE_DEAF_NAME = Deaf
-MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
+;TODO: MODE_DEAF_NAME = Deaf
+;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
-MODE_BLINDLYRICS_NAME = No Lyrics
-MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
+MODE_BLINDLYRICS_NAME = Nėra dainų
+;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-MODE_500BLIND_NAME = +500 Blind
-MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
+MODE_500BLIND_NAME = +500 Aklas
+;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
-MODE_SHORTSONG_NAME = Short Song
-MODE_SHORTSONG_DESC = A fast-paced 1v1 duel over half the song!
+;TODO: MODE_SHORTSONG_NAME = Short Song
+;TODO: MODE_SHORTSONG_DESC = A fast-paced 1v1 duel over half the song!
MODE_HARDCORE_NAME=Hardcore
-MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
-
-STAT_MAIN=Statistics
-STAT_MAIN_DESC=General
-STAT_MAIN_WHEREAMI=Statistics
-
-STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d
-STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s.
-STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points.
-
-STAT_FORMAT_DATE=%1:.2d.%0:.2d.%2:d
-
-STAT_DETAIL=Statistics
-STAT_DETAIL_WHEREAMI=Detail Statistics
-
-STAT_NEXT=Next Page
-STAT_PREV=Previous Page
-STAT_REVERSE=Reverse Order
-STAT_PAGE=Page %0:d of %1:d pages\n (%2:d of %3:d Entrys)
-
-STAT_DESC_SCORES=HighScores
-STAT_DESC_SCORES_REVERSED=LowScores
-STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] %5:s \n (%3:s - %4:s)
-
-STAT_DESC_SINGERS=Best Singers
-STAT_DESC_SINGERS_REVERSED=Worst Singers
-STAT_FORMAT_SINGERS=%0:s \n Average Score: %1:d
-
-STAT_DESC_SONGS=Most popular Songs
-STAT_DESC_SONGS_REVERSED=Least popular Songs
-STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung
-
-STAT_DESC_BANDS=Most popular Bands
-STAT_DESC_BANDS_REVERSED=Least popular Bands
-STAT_FORMAT_BANDS=%0:s \n %1:dx Sung
-
-SCREENSHOT_SAVED=Screenshot saved
-SCREENSHOT_FAILED=Couldn''t save screenshot
-
-INFO_FILE_SAVED=File saved
-ERROR_SAVE_FILE_FAILED=Couldn''t save file
-ERROR_FILE_NOT_FOUND=File not found
-
-ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
-
-MSG_ERROR_TITLE=Error
-MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Question
-MSG_QUIT_USDX=Really leave UltraStar?
-MSG_END_PARTY=Really leave Party Mode?
-
-ERROR_NO_SONGS=No Songs loaded
-ERROR_NO_PLUGINS=No Plugins loaded
-ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
-ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
-ERROR_CORRUPT_SONG=Song could not be loaded.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
-ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
-ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-ERROR_NO_EDITOR=This feature is not available on this version.
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-SING_OPTIONS_NETWORK=Internet
-SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-SING_OPTIONS_NETWORK_DESC=Internet General Settings
-SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-SING_OPTIONS_NETWORK_WEBSITE=Website
-SING_OPTIONS_NETWORK_USERNAME=Username
-SING_OPTIONS_NETWORK_PASSWORD=Password
-SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-OPTION_PLAYER_1=Player 1
-OPTION_PLAYER_2=Player 2
-OPTION_PLAYER_3=Player 3
-OPTION_PLAYER_4=Player 4
-OPTION_PLAYER_5=Player 5
-OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=All
-OPTION_ALL_SCORES=All
-OPTION_VALUE_SAVE=Save
-OPTION_VALUE_SEND=Send
+;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
+
+STAT_MAIN=Statistika
+;TODO: STAT_MAIN_DESC=General
+STAT_MAIN_WHEREAMI=Statistika
+
+;TODO: STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d
+;TODO: STAT_OVERVIEW_SONG=%0:d Songs(%3:d with Video), whereof %1:d already were played and %2:d were not played yet.\n The most popular Song is %5:s from %4:s.
+;TODO: STAT_OVERVIEW_PLAYER=Since the last Reset there were/was %0:d different Player(s).\n The best Player is %1:s with an average Score of %2:d Points.\n %3:s did the highest Score with %4:d Points.
+
+;TODO: STAT_FORMAT_DATE=%1:.2d.%0:.2d.%2:d
+
+STAT_DETAIL=Statistika
+;TODO: STAT_DETAIL_WHEREAMI=Detail Statistics
+
+STAT_NEXT=Kitas puslapis
+STAT_PREV=Ankstesnis puslapis
+STAT_REVERSE=Atvirkštinė tvarka
+;TODO: STAT_PAGE=Page %0:d of %1:d \n Entries %2:d of %3:d
+
+;TODO: STAT_DESC_SCORES=HighScores
+;TODO: STAT_DESC_SCORES_REVERSED=LowScores
+;TODO: STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] %5:s \n (%3:s - %4:s)
+
+STAT_DESC_SINGERS=Geriausi dainininkai
+;TODO: STAT_DESC_SINGERS_REVERSED=Worst Singers
+;TODO: STAT_FORMAT_SINGERS=%0:s \n Average Score: %1:d
+
+STAT_DESC_SONGS=Populiariausi dainos
+;TODO: STAT_DESC_SONGS_REVERSED=Least popular Songs
+;TODO: STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung
+
+;TODO: STAT_DESC_BANDS=Most popular Bands
+;TODO: STAT_DESC_BANDS_REVERSED=Least popular Bands
+;TODO: STAT_FORMAT_BANDS=%0:s \n %1:dx Sung
+
+;TODO: SCREENSHOT_SAVED=Screenshot saved
+;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
+
+;TODO: INFO_FILE_SAVED=File saved
+;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
+ERROR_FILE_NOT_FOUND=Failas nerastas
+
+;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
+
+MSG_ERROR_TITLE=Klaida
+;TODO: MSG_INFO_TITLE=Information
+;TODO: MSG_QUESTION_TITLE=Question
+;TODO: MSG_QUIT_USDX=Really leave UltraStar?
+;TODO: MSG_END_PARTY=Really leave Party Mode?
+
+;TODO: ERROR_NO_SONGS=No Songs loaded
+;TODO: ERROR_NO_PLUGINS=No Plugins loaded
+;TODO: ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
+;TODO: ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
+;TODO: ERROR_CORRUPT_SONG=Song could not be loaded.
+;TODO: ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Song could not be loaded: File not found
+;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
+;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
+;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
+;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your microphone options
+;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your microphone options
+
+SING_OPTIONS_NETWORK=Internetas
+SING_OPTIONS_NETWORK_WHEREAMI=Interneto nustatymai
+;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Vartotojo vardas
+SING_OPTIONS_NETWORK_PASSWORD=Slaptažodis
+;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Žaidėjas
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Siųsti (Lengva)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Siųsti (Vidutinis)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Siųsti (Sunku)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Įdėti
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Ištrinti
+
+OPTION_PLAYER_1=Žaidėjas 1
+OPTION_PLAYER_2=Žaidėjas 2
+OPTION_PLAYER_3=Žaidėjas 3
+OPTION_PLAYER_4=Žaidėjas 4
+OPTION_PLAYER_5=Žaidėjas 5
+OPTION_PLAYER_6=Žaidėjas 6
+;TODO: OPTION_ALL_PLAYERS=All
+;TODO: OPTION_ALL_SCORES=All
+;TODO: OPTION_VALUE_SAVE=Save
+OPTION_VALUE_SEND=Siųsti
MSG_INSERT_USER_TITLE=%0:s
-MSG_INSERT_USER_DESC=Fill the fields:
-MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Cancel
-
-WEBSITE_NO_CONNECTION=No website connection!
-WEBSITE_LOGIN_ERROR=Login Incorrect!
-WEBSITE_BLANK_LOGIN=There are blank fields!
-WEBSITE_EXIST_USER=Existing user!
-WEBSITE_ERROR_SCORE=Scoring Error!
-WEBSITE_OK_SEND=Score sent successfully!
-WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-WEBSITE_ERROR_SONG=Song Not Found!
-WEBSITE_SAVE_SCORE=Score save successfully!
-WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-SONG_MENU_REFRESH_SCORES=Update Scores
-SONG_MENU_REFRESH_SCORES_TITLE=Update
-SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-SONG_MENU_REFRESH_SCORES_ONLINE=Online
-SONG_MENU_REFRESH_SCORES_FILE=File
-SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-SONG_MENU_REFRESH_SCORES_REFRESH=Update
-SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-SONG_SCORE_MAX=Best:
-SONG_SCORE_MEDIA=Average:
-
-SCORE_SEND_DESC=Send Score
-SCORE_SEND=Send
-SCORE_SEND_PLAYER=Player
-SCORE_SEND_OTHER_USER= Other Username
-SCORE_SAVE=Save
-
-SCORE_DOWNLOAD_TITLE=Download
-SCORE_DOWNLOAD_SONG=Song:
-SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Cancel
-SCORE_DOWNLOAD_OK=OK
-SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-OPTION_VALUE_WHEN_EXISTS=When Exists
-
-PARTY_SELECT_MODE=Mode
-PARTY_MODE_CLASSIC=Classic
-PARTY_MODE_CLASSIC_FREE=Classic Free
-PARTY_MODE_CHALLENGE=Challenge
-PARTY_MODE_TOURNAMENT=Tournament
-PARTY_MODE_JUKEBOX=Jukebox
-PARTY_MODE_NOT_AVAILABLE=Not Available!
-
-PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
-PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Number of rounds
-PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
-PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
-PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
-PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Next players to the mics
-PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
-PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-
-EDIT_TITLE=Title:
-EDIT_ARTIST=Artist:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Cover:
-EDIT_BACKGROUND=Background:
-
-EDIT_START=Start:
-EDIT_DURATION=Duration:
-EDIT_TONE=Tone:
-EDIT_LYRIC=Lyric:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Audio Volume:
-EDIT_VOLUME_MIDI=Midi Volume:
-EDIT_VOLUME_CLICK=Click Volume:
-INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=File saved
-INFO_TIME_FIXED=Timings corrected
-INFO_CAPITALIZE=Capitalization corrected
-INFO_EXIT=Do you want leave editor without save ?
-INFO_SONG_RELOADED=Song reloaded
-INFO_DIVIDED_BPM=BPM Divided
-INFO_MULTIPLIED_BPM=BPM Multiplied
-INFO_PLAY_SONG=Play song
-INFO_PLAY_SENTENCE=Play sentence
-INFO_CURRENT_LINE=Line:
-INFO_CURRENT_NOTE=Note:
-
-INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-INFO_MIDI_CHANNEL_RESET= All channel's on!
-
-MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
-JUKEBOX_RANDOM=Random
-JUKEBOX_REPEAT=Repeat
-JUKEBOX_FIND=Find:
-JUKEBOX_SORT=Sort:
-JUKEBOX_SONGLIST=List of Songs
-
-SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-
-SONG_MENU_SONG=Song
-SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Sort
-SONG_MENU_EXTRA=Extra
-
-SONG_MENU_NAME_SONG=Song Menu
-SONG_MENU_NAME_MEDLEY=Medley Menu
-SONG_MENU_ADD_SONG=Add Song
-SONG_MENU_DELETE_SONG=Delete Song
-SONG_MENU_START_MEDLEY=Sing!
-SONG_MENU_START_5_MEDLEY=Sing %0:d Songs!
-
-SONG_MENU_NAME_SORTING=Sort Menu
-SONG_MENU_SORTING_TABS_ON=Tabs On
-SONG_MENU_SORTING_TABS_OFF=Tabs Off
-SONG_MENU_SORTING_ALL=All
-SONG_MENU_SORTING_DUET=Duets
-SONG_MENU_SORTING_APPLY=Apply
-
-SING_OPTIONS_WEBCAM=Webcam
-SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Resolution
-SING_OPTIONS_WEBCAM_FPS=FPS
-SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Effect
-SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-SING_OPTIONS_WEBCAM_SATURATION=Saturation
-SING_OPTIONS_WEBCAM_HUE=Hue
-SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
-SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Threshold
-SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
-PARTY_PLAYLIST_MANUAL=Manual Selection
-PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
-SONG_MENU_OPEN_CATEGORY=Open category
-SONG_MENU_CLOSE_CATEGORY=Close category
-SONG_MENU_START_JUKEBOX=Start Jukebox!
-SONG_MENU_NAME_JUKEBOX=Menu Jukebox
-
-WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
-WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-
-NAME_PLAYERS_COUNT=Number of Players
-NAME_CURRENT_PLAYER=Player
-
-SING_OPTIONS_GAME_SONGMENU=Song Menu
-OPTION_VALUE_ROULETTE=Roulette
-OPTION_VALUE_CHESSBOARD=Chessboard
-OPTION_VALUE_CAROUSEL=Carousel
-OPTION_VALUE_SLOT_MACHINE=Slot Machine
-OPTION_VALUE_LIST=List
-OPTION_VALUE_MOSAIC=Tile
-
-SING_OPTIONS_JUKEBOX=Jukebox
-SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Sing
-OPTION_VALUE_ACTUAL=Actual
-OPTION_VALUE_NEXT=Next
-OPTION_VALUE_OTHER=Other
-OPTION_VALUE_FILL=Fill
-OPTION_VALUE_OUTLINE=Outline
-OPTION_VALUE_GRAY=Gray
-OPTION_VALUE_WHITE=White
-OPTION_VALUE_TURQUOISE=Turquoise
-OPTION_VALUE_SALMON=Salmon
-OPTION_VALUE_GREENYELLOW=GreenYellow
-OPTION_VALUE_LAVENDER=Lavender
-OPTION_VALUE_BEIGE=Beige
-OPTION_VALUE_TEAL=Teal
-OPTION_VALUE_ORCHID=Orchid
-OPTION_VALUE_STEELBLUE=Steel Blue
-OPTION_VALUE_PLUM=Plum
-OPTION_VALUE_CHOCOLATE=Chocolate
-OPTION_VALUE_GOLD=Gold
-OPTION_VALUE_DARKBLUE=Dark Blue
-OPTION_VALUE_SKY=Sky
-OPTION_VALUE_HARLEQUIN=Harlequin
-OPTION_VALUE_CYAN=Cyan
-OPTION_VALUE_FLAME=Flame
-
-JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
-JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
-
-JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
-JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
-JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-
-JUKEBOX_SONGOPTIONS_SAVE=Save
-JUKEBOX_SONGOPTIONS_CLOSE=Close
-JUKEBOX_SONGOPTIONS_DEFAULT=Default
-JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-
-SING_SONG_CREDITS=Credits
+;TODO: MSG_INSERT_USER_DESC=Fill the fields:
+MSG_INSERT_USER_ADD=Papildyti
+MSG_INSERT_USER_CANCEL=Atšaukti
+
+;TODO: WEBSITE_NO_CONNECTION=No website connection!
+WEBSITE_LOGIN_ERROR=Neteisingas prisijungimas!
+;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
+;TODO: WEBSITE_EXIST_USER=Existing user!
+;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
+;TODO: WEBSITE_OK_SEND=Score sent successfully!
+;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+;TODO: WEBSITE_ERROR_SONG=Song Not Found!
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
+
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Visos dainos
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Ši daina
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
+
+;TODO: SONG_SCORE_MAX=Best:
+SONG_SCORE_MEDIA=Vidurkis:
+
+;TODO: SCORE_SEND_DESC=Send Score
+SCORE_SEND=Siųsti
+SCORE_SEND_PLAYER=Žaidėjas
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
+
+SCORE_DOWNLOAD_TITLE=Parsisiųsti
+SCORE_DOWNLOAD_SONG=Daina:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Atšaukti
+SCORE_DOWNLOAD_OK=Gerai
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
+
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
+
+;TODO: PARTY_SELECT_MODE=Mode
+;TODO: PARTY_MODE_CLASSIC=Classic
+;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
+PARTY_MODE_CHALLENGE=Iššūkis
+PARTY_MODE_TOURNAMENT=Turnyras
+;TODO: PARTY_MODE_JUKEBOX=Jukebox
+;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
+
+;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
+;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
+;TODO: PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Number of rounds
+;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
+;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
+;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
+;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
+;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Next players to the mics
+;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
+;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
+
+;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
+;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
+
+;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
+;TODO: JUKEBOX_RANDOM=Random
+JUKEBOX_REPEAT=Pakartokite
+JUKEBOX_FIND=Rasti:
+JUKEBOX_SORT=Rūšiuoti:
+;TODO: JUKEBOX_SONGLIST=List of Songs
+
+;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
+
+SONG_MENU_SONG=Daina
+;TODO: SONG_MENU_MEDLEY=Medley
+
+;TODO: SONG_MENU_NAME_SONG=Song Menu
+;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
+;TODO: SONG_MENU_ADD_SONG=Add Song
+;TODO: SONG_MENU_DELETE_SONG=Delete Song
+;TODO: SONG_MENU_START_MEDLEY=Sing!
+;TODO: SONG_MENU_START_5_MEDLEY=Sing %0:d Songs!
+
+;TODO: SONG_MENU_NAME_SORTING=Sort Menu
+;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
+;TODO: SONG_MENU_SORTING_TABS_OFF=Tabs Off
+;TODO: SONG_MENU_SORTING_ALL=All
+;TODO: SONG_MENU_SORTING_DUET=Duets
+;TODO: SONG_MENU_SORTING_APPLY=Apply
+
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
+;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Rezoliucija
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+SING_OPTIONS_WEBCAM_EFFECT=Efektas
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Ryškumas
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normalus
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Slenkstis
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
+
+;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
+;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
+;TODO: SONG_MENU_OPEN_CATEGORY=Open category
+;TODO: SONG_MENU_CLOSE_CATEGORY=Close category
+;TODO: SONG_MENU_START_JUKEBOX=Start Jukebox!
+;TODO: SONG_MENU_NAME_JUKEBOX=Menu Jukebox
+
+;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
+;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
+
+NAME_PLAYERS_COUNT=Žaidėjų skaičius
+NAME_CURRENT_PLAYER=Žaidėjas
+
+SING_OPTIONS_GAME_SONGMENU=Daina Meniu
+OPTION_VALUE_ROULETTE=Ruletė
+OPTION_VALUE_CHESSBOARD=Šachmatų lenta
+OPTION_VALUE_CAROUSEL=Karuselė
+OPTION_VALUE_SLOT_MACHINE=Lošimų automatas
+OPTION_VALUE_LIST=Sąrašas
+;TODO: OPTION_VALUE_MOSAIC=Tile
+
+;TODO: SING_OPTIONS_JUKEBOX=Jukebox
+;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
+;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
+
+;TODO: OPTION_VALUE_TO_SING=Sing
+OPTION_VALUE_ACTUAL=Viršutinė
+OPTION_VALUE_NEXT=Apatinė
+;TODO: OPTION_VALUE_OTHER=Other
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+;TODO: OPTION_VALUE_GRAY=Gray
+OPTION_VALUE_WHITE=Balta
+;TODO: OPTION_VALUE_TURQUOISE=Turquoise
+;TODO: OPTION_VALUE_SALMON=Salmon
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+OPTION_VALUE_LAVENDER=Levanda
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+OPTION_VALUE_CHOCOLATE=Šokoladas
+OPTION_VALUE_GOLD=Auksas
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+OPTION_VALUE_SKY=Dangus
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
+
+JUKEBOX_SONGOPTIONS_VIDEO=Vaizdo parinktys
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspektas
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Plotis
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Aukštis
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Dydis
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Pozicija
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Skaidrumas
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Spalva
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Linija
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Nuosavybė
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Raudona
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Žalias
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Mėlyna
+
+JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Tempkite
+JUKEBOX_SONGOPTIONS_VIDEO_CROP=Apkarpyti
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
+
+JUKEBOX_SONGOPTIONS_SAVE=Sutaupyti
+JUKEBOX_SONGOPTIONS_CLOSE=Uždaryti
+JUKEBOX_SONGOPTIONS_DEFAULT=Numatytas
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Išsaugotas!
+
+SING_SONG_CREDITS=Kreditai
SING_JUKEBOX=Jukebox
-SING_JUKEBOX_DESC=Listen to my collection
-JUKEBOX_MODE=Jukebox Mode
-JUKEBOX_OPTIONS_DESC=Playlist Options
-JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
-JUKEBOX_OPTIONS_PLAYLIST=Playlist
-JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-
-SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=All
-OPTION_VALUE_PLAYER=Player
-
-SING_ABOUT=About
-SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
-ABOUT_MAIN=About...
-ABOUT_MAIN_DESC=Ultrastar Deluxe WorldParty
-ABOUT_MAIN_WHEREAMI=About...
-ABOUT_USDX_CREDITS=Credits
+SING_JUKEBOX_DESC=Klausyk mano kolekciją
+JUKEBOX_MODE=Jukebox režimas
+JUKEBOX_OPTIONS_DESC=Grojaraščio parinktys
+JUKEBOX_OPTIONS_WHEREAMI=Jukebox parinktys
+JUKEBOX_OPTIONS_PLAYLIST=Grojaraštis
+JUKEBOX_OPTIONS_PLAYLIST_MODE=Režimas
+
+SING_OPTIONS_ADVANCED_SINGSCORES=Dainos rezultatai
+SING_OPTIONS_ADVANCED_TOPSCORES=Geriausi rezultatai
+OPTION_VALUE_ALL=Visi
+OPTION_VALUE_PLAYER=Žaidėjas
+
+SING_ABOUT=Apie
+SING_ABOUT_DESC=Apie Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Apie...
ABOUT_USDX_DEVELOPEDBY=Sukūrė
-ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttp://ultrastar-es.org
-
-
-DEVELOPERS_TITLE=Sukūrė
-DEVELOPERS_OVERVIEW=Žmonės, prisidėję prie šio projekto:\n\n\nZup3r_vock\n\nDaniel20\n\n\n\n Visit us for more information.\n\nhttp://ultrastar-es.org
+ABOUT_CHECK_CHECKING=Naujų naujinių tikrinimas...
+ABOUT_CHECK_AVAILABLE=Yra nauja versija
+ABOUT_CHECK_UPTODATE=WorldParty yra atnaujintas
+ABOUT_CHECK_CONNECTION=Nėra interneto ryšio
+ABOUT_OVERVIEW=Atraskite naują būdą dainuoti vieni, poroje ar drauge. \n Pramogos yra garantuotos.\n\nWorldParty yra Ultrastar Deluxe 1.1 originalios versijos šakutės sukurta ir sukurta UltraStar España Team, tai skaičiuojama su didžiausia karaoke bendruomene.\n\n\nŠi programa yra nemokama ir nemokama pagal GPL licenciją. \n\n Aplankykite mus, jei norite gauti daugiau informacijos.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Sukurta
+DEVELOPERS_OVERVIEW=Žmonės, prisidėję prie šio projekto:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/L\303\253tzebuergesch.ini" "b/game/languages/L\303\253tzebuergesch.ini"
index ff7e2077..e56ffcc0 100644
--- "a/game/languages/L\303\253tzebuergesch.ini"
+++ "b/game/languages/L\303\253tzebuergesch.ini"
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Titel
OPTION_VALUE_ARTIST=Kënschtler
OPTION_VALUE_TITLE2=Titel2
OPTION_VALUE_ARTIST2=Kënschtler2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Joer
+OPTION_VALUE_DECADE=Joerzéngt
OPTION_VALUE_PLAYLIST=Playlist
;TODO: OPTION_VALUE_BORDERLESS=Borderless
OPTION_VALUE_WHENNOVIDEO=Wa kee Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Wa kee Video an Image sinn
OPTION_VALUE_SMALL=Kleng
OPTION_VALUE_BIG=Grouss
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Sangen
OPTION_VALUE_SELECT_PLAYERS=Spiller auswielen
OPTION_VALUE_OPEN_MENU=Menü opmaachen
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardware Zeiger
-OPTION_VALUE_SOFTWARE_CURSOR=Software Zeiger
-
SING_LOADING=Lueden...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
SING_CHOOSE_MODE=Wielt e Modus aus
SING_SING=Sangen
@@ -87,9 +83,6 @@ SING_TOOLS=Geschir
SING_STATS=Statistiken
SING_STATS_DESC=Kuckt d'Statistiken un
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Erstellt Är eege Lidder
-
SING_GAME_OPTIONS=Optiounen
SING_GAME_OPTIONS_DESC=Ännert d'Astellunge vum Spill
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Optiounen
SING_OPTIONS_GAME=Spill
SING_OPTIONS_GRAPHICS=Graphik
SING_OPTIONS_SOUND=Toun
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Lyric
SING_OPTIONS_THEMES=Design
-SING_OPTIONS_RECORD=Mikro
+SING_OPTIONS_MICROPHONES=Mikro
SING_OPTIONS_ADVANCED=Erweidert
SING_OPTIONS_EXIT=Zeréck
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Schwieregkeet
SING_OPTIONS_GAME_LANGUAGE=Sprooch
SING_OPTIONS_GAME_TABS=Ordner
SING_OPTIONS_GAME_SORTING=Zortéieren no
-SING_OPTIONS_GAME_DEBUG=Debug
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivéieren gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Graphikoptiounen
SING_OPTIONS_GRAPHICS_DESC=Graphikastellungen
SING_OPTIONS_GRAPHICS_RESOLUTION=Ofléisung
SING_OPTIONS_GRAPHICS_FULLSCREEN=Vollbild
-SING_OPTIONS_GRAPHICS_DEPTH=Faarfdéift
+SING_OPTIONS_GRAPHICS_EFFECTSING=Sangeffekt
+SING_OPTIONS_GRAPHICS_SCREENFADE=Bildschierm-Faden
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Lued-Animatioun
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualiséierung
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oszilloskop
SING_OPTIONS_GRAPHICS_LINEBONUS=Sazbonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videogréisst
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Tounoptiounen
SING_OPTIONS_SOUND_DESC=Tounastellungen
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikro lauschteren
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hannergrondmusik
-SING_OPTIONS_SOUND_MIC_BOOST=Mikro-Unhiewung
SING_OPTIONS_SOUND_CLICK_ASSIST=Click-Assistent
SING_OPTIONS_SOUND_BEAT_CLICK=Metronom
-SING_OPTIONS_SOUND_THRESHOLD=Rauschënnerdrëck.
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=2-Spiller-Modus
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Iwwerbléck Lautst.
SING_OPTIONS_SOUND_PREVIEWFADING=Iwwerbléck Fading
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Lyricsoptiounen
SING_OPTIONS_LYRICS_DESC=Lyricsastellungen
SING_OPTIONS_LYRICS_FONT=Schrëftart
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Design
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Faarf
-SING_OPTIONS_RECORD_WHEREAMI=Opzeechnungsoptiounen
-SING_OPTIONS_RECORD_DESC=Mikrofonastellungen
-SING_OPTIONS_RECORD_CARD=Soundkaart
-SING_OPTIONS_RECORD_INPUT=Agank
-SING_OPTIONS_RECORD_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opzeechnungsoptiounen
+SING_OPTIONS_MICROPHONES_DESC=Mikrofonastellungen
+SING_OPTIONS_MICROPHONES_CARD=Soundkaart
+SING_OPTIONS_MICROPHONES_INPUT=Agank
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Rauschënnerdrëck.
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikro-Unhiewung.
SING_OPTIONS_ADVANCED_WHEREAMI=Erweidert Optiounen
SING_OPTIONS_ADVANCED_DESC=Erweidert Astellungen
-SING_OPTIONS_ADVANCED_EFFECTSING=Sangeffekt
-SING_OPTIONS_ADVANCED_SCREENFADE=Bildschierm-Faden
-SING_OPTIONS_ADVANCED_LOADANIMATION=Lued-Animatioun
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oszilloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sécherheetsfro
SING_OPTIONS_ADVANCED_LINEBONUS=Sazbonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=No Liddauswiel
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto Partymenü
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Erstellt Är eege Lidder
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Midi/Kar Datei als Text exportéieren
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Zeréck
-SING_EDIT_BUTTON_CONVERT=Importéieren
-SING_EDIT_BUTTON_EXIT=Zeréck
-
-SING_EDIT_NAVIGATE=Navigéieren
-SING_EDIT_SELECT=Auswielen
-SING_EDIT_EXIT=Zeréck
-
SING_LEGEND_SELECT=Auswielen
SING_LEGEND_NAVIGATE=Navigéieren
SING_LEGEND_CONTINUE=Weider
SING_LEGEND_ESC=Zeréck
-SING_PLAYER_DESC=Gitt de Numm an
-SING_PLAYER_WHEREAMI=Numm vum Spiller
-SING_PLAYER_ENTER_NAME=Änneren
+;TODO: SING_PLAYER_TITLE=Profiles
+SING_PLAYER_READY=Spiller prett ze sangen
+SING_PLAYER_COUNT=Zuel vu Spiller
+;TODO: SING_PLAYER_EDIT=Customize a player
+SING_PLAYER_NAME=Schreift Ären Numm
+;TODO: SING_PLAYER_COLOR=Pick a color
+SING_PLAYER_LEVEL=Wielt e Niveau
+SING_PLAYER_AVATAR=Wielt Äre Avatar
SING_DIFFICULTY_DESC=Gräift e Schwieregkeetsgrad eraus
SING_DIFFICULTY_WHEREAMI=Schwieregkeetsgrad
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Erreechen
SING_SONG_SELECTION=Liddauswiel
SING_SONG_SELECTION_MENU=Menü
SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Lidd
SING_SONGS_IN_CAT=Lidder
PLAYLIST_CATTEXT=Playlist: %s
+;TODO: SING_SONG_SELECTION_LEGEND_TITLE=Legend
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+;TODO: SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=Am Ganzen
SING_MODE=Sangmodus
SING_NOTES=Nouten
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= an
SONG_MENU_NAME_MAIN=Menü
SONG_MENU_PLAY=Sangen
SONG_MENU_CHANGEPLAYERS=Spiller tauschen
-SONG_MENU_EDIT=Editor
SONG_MENU_MODI=E Modus sangen
SONG_MENU_CANCEL=Offbriechen
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Detailléiert Statistiken
STAT_NEXT=Nächst Säit
STAT_PREV=Vireg Säit
STAT_REVERSE=Ëmkéieren
-STAT_PAGE=Säit %0:d/%1:d \n (%2:d Antrag vun %3:d %3:d )
+STAT_PAGE=Säit %0:d/%1:d \n Antrag %2:d vun %3:d
STAT_DESC_SCORES=Highscore
STAT_DESC_SCORES_REVERSED=Schlechtst Punkten
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Datei kann net gespäichert ginn.
ERROR_FILE_NOT_FOUND=Datei net fonnt
ENCODING_ERROR_ASK_FOR_UTF8=Ännerunge konnten net an der aktueller Kodéierung geséchert ginn. Op UTF-8 konvertéieren?
-EDITOR_ERROR_NO_TRACK_SELECTED=Keng Spuer ausgewielt
MSG_ERROR_TITLE=Feeler
MSG_INFO_TITLE=Informatioun
@@ -465,7 +447,6 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Lidd gëtt net gelueden: Datei gouf net fonnt.
ERROR_CORRUPT_SONG_NO_NOTES=Lidd gëtt net gelueden: Et goufe keng Noute fonnt.
ERROR_CORRUPT_SONG_NO_BREAKS=Lidd gëtt net gelueden: Et goufe keng Saazwiessel fonnt.
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Lidd gëtt net gelueden: Feeler beim Parze vun der Zeil %0:d
-ERROR_NO_EDITOR=Den Editor geet net op Linux/Mac
ERROR_PLAYER_DEVICE_ASSIGNMENT=De Spiller %d huet ze vill Mikroe gewielt. Iwwerpréift d'Opzeechnungsoptiounen.
ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=De Spiller %d huet kee Mikro gewielt. Iwwerpréift d'Opzeechnungsoptiounen.
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Déi nächst Spiller un är Mikroen!
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Datei ass gespäichert.
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ INFO_FILE_SAVED=Datei ass gespäichert.
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menü
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -638,6 +587,7 @@ SING_OPTIONS_WEBCAM_EFFECT=Effekt
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -741,10 +691,15 @@ JUKEBOX_OPTIONS_PLAYLIST=Playlist
OPTION_VALUE_ALL=Alles
;TODO: OPTION_VALUE_PLAYER=Player
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+SING_ABOUT=Iwwer
+SING_ABOUT_DESC=Iwwer Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Iwwer...
+;TODO: ABOUT_USDX_DEVELOPEDBY=Developed by
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+;TODO: DEVELOPERS_TITLE=Developed by
+;TODO: DEVELOPERS_OVERVIEW=People who has contributed to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
diff --git a/game/languages/Magyar.ini b/game/languages/Magyar.ini
index 96f23476..fac1f36d 100644
--- a/game/languages/Magyar.ini
+++ b/game/languages/Magyar.ini
@@ -1,10 +1,71 @@
[Text]
LANGUAGE=Magyar
+SING_LOADING=Betöltés...
+SING_LOADING_SONGS=Dalok betöltése %s
+
+SING_SING=Ének
+SING_SING_DESC=Éneklés egyedül vagy duettben
+
+SING_MULTI=Buli mód
+SING_MULTI_DESC=Énekelj csapatban
+
+SING_JUKEBOX=Zenedoboz
+SING_JUKEBOX_DESC=Zenék hallgatása
+
+SING_STATS=Statisztika
+SING_STATS_DESC=Statisztika megnézése
+
+SING_GAME_OPTIONS=Játék beállítások
+SING_GAME_OPTIONS_DESC=Beállítások
+
+SING_EXIT=Kilépés
+SING_EXIT_DESC=Kilépés a játékból
+
+SING_ABOUT=Rólunk
+SING_ABOUT_DESC=Az Ultrastar Deluxe WorldParty-ról
+
+SING_PLAYER_TITLE=Profilok
+SING_PLAYER_READY=Ezek az énekesek játszanak:
+SING_PLAYER_COUNT=Játékosok száma
+SING_PLAYER_EDIT=Játékos testreszabása
+SING_PLAYER_NAME=Adj meg egy nevet
+SING_PLAYER_COLOR=Válassz egy színt
+SING_PLAYER_LEVEL=Válassz egy szintet
+SING_PLAYER_AVATAR=Válassz egy avatárt
+
OPTION_VALUE_EASY=Könnyű
OPTION_VALUE_MEDIUM=Normál
OPTION_VALUE_HARD=Nehéz
+SING_OPTIONS=Beállítások
+
+SING_OPTIONS_GAME=Játék
+SING_OPTIONS_GRAPHICS=Grafika
+SING_OPTIONS_SOUND=Hang
+SING_OPTIONS_LYRICS=Dalszöveg
+SING_OPTIONS_THEMES=Témák
+SING_OPTIONS_MICROPHONES=Mikrofonok
+SING_OPTIONS_ADVANCED=Haladó
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_WEBCAM=Webkamera
+SING_OPTIONS_JUKEBOX=Zenedoboz
+SING_OPTIONS_EXIT=Vissza
+
+SING_OPTIONS_GAME_LANGUAGE=Nyelv
+SING_OPTIONS_GAME_SONGMENU=Dal Menü
+SING_OPTIONS_GAME_TABS=Elválasztók
+SING_OPTIONS_GAME_SORTING=Rendezés
+SING_OPTIONS_GAME_SHOWSCORES=Pontszámok
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Gamepad aktiválás
+
+OPTION_VALUE_ROULETTE=Rulett
+OPTION_VALUE_CHESSBOARD=Sakktábla
+OPTION_VALUE_CAROUSEL=Körhinta
+OPTION_VALUE_SLOT_MACHINE=Nyerőgép
+OPTION_VALUE_LIST=Lista
+OPTION_VALUE_MOSAIC=Csempe
+
OPTION_VALUE_ON=Be
OPTION_VALUE_OFF=Ki
@@ -14,46 +75,198 @@ OPTION_VALUE_LANGUAGE=Nyelv
OPTION_VALUE_FOLDER=Mappa
OPTION_VALUE_TITLE=Cím
OPTION_VALUE_ARTIST=Előadó
-OPTION_VALUE_TITLE2=Cím2
OPTION_VALUE_ARTIST2=Előadó2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Év
+OPTION_VALUE_DECADE=Évtized
OPTION_VALUE_PLAYLIST=Számlista
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_WHEN_EXISTS=Ha létezik
-OPTION_VALUE_WHENNOVIDEO=Ha nincs videó
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Teljes képernyő
+SING_OPTIONS_GRAPHICS_RESOLUTION=Felbontás
+SING_OPTIONS_GRAPHICS_SCREENFADE=Háttér átmenet
+SING_OPTIONS_GRAPHICS_EFFECTSING=Ének effektek
+SING_OPTIONS_GRAPHICS_VISUALIZER=Megjelenítés
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videó mérete
+
+OPTION_VALUE_BORDERLESS=Maximalizált
-OPTION_VALUE_SMALL=Kicsi
-OPTION_VALUE_BIG=Nagy
+OPTION_VALUE_WHENNOVIDEO=Ha nincs videó
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Ha nincs se kép, se videó
OPTION_VALUE_HALF=Fél
-OPTION_VALUE_FULL_VID=Egész (Video)
-OPTION_VALUE_FULL_VID_BG=Egész (háttér & Video)
+OPTION_VALUE_FULL_VID=Egész (Videó)
+OPTION_VALUE_FULL_VID_BG=Egész (Háttér & Videó)
+
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofon visszahallás
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Háttér zene
+SING_OPTIONS_SOUND_CLICK_ASSIST=Ütem segítség
+SING_OPTIONS_SOUND_BEAT_CLICK=Ütem
+SING_OPTIONS_SOUND_MUSICAUTOGAIN=Zene autó-erősítés
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Előzetes hangereje
+SING_OPTIONS_SOUND_PREVIEWFADING=Előz. hang késleltetése
-;TODO: OPTION_VALUE_GAIN_SOFT=Soft
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
+OPTION_VALUE_GAIN_SOFT=Lágy
+OPTION_VALUE_GAIN_MEDIUM=Közepes
+OPTION_VALUE_GAIN_HARD=Kemény
OPTION_VALUE_AUTO=Automatikus
OPTION_VALUE_SEC=Másodperc
OPTION_VALUE_SECS=Másodperc
-OPTION_VALUE_PLAIN=Egyszerű
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+SING_OPTIONS_LYRICS_FONT=Betűtípus
+SING_OPTIONS_LYRICS_EFFECT=Effekt
+SING_OPTIONS_LYRICS_NOTELINES=Hangjegyek
+
+OPTION_VALUE_PLAIN=Normál
+OPTION_VALUE_OLINE1=Vékony él
+OPTION_VALUE_OLINE2=Vastag él
-OPTION_VALUE_SIMPLE=Sima
-OPTION_VALUE_ZOOM=Zoom
+OPTION_VALUE_SIMPLE=Egyszerű
+OPTION_VALUE_ZOOM=Nagyító
OPTION_VALUE_SLIDE=Csúszó
OPTION_VALUE_BALL=Labda
OPTION_VALUE_SHIFT=Nagy
-OPTION_VALUE_EURO=Euro
-OPTION_VALUE_JAPAN=Japán
-OPTION_VALUE_AMERICAN=Amerikai
+SING_OPTIONS_THEMES_THEME=Téma
+SING_OPTIONS_THEMES_SKIN=Háttér
+SING_OPTIONS_THEMES_COLOR=Szín
+SING_OPTIONS_MICROPHONES_CARD=Hangkártya
+SING_OPTIONS_MICROPHONES_INPUT=Bemenet
+SING_OPTIONS_MICROPHONES_CHANNEL=Csatorna
+SING_OPTIONS_MICROPHONES_THRESHOLD=Tűréshatár
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikr. erősítése
+
+SING_OPTIONS_ADVANCED_DEBUG=Hibakezelő mód
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oszcilloszkóp
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Zeneválasztás után
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Megerősítést kér
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Partymenü megj.
+SING_OPTIONS_ADVANCED_TOPSCORES=Ranglista
+SING_OPTIONS_ADVANCED_SINGSCORES=Ének Pontszámok
+
+OPTION_VALUE_ALL=Összes
+OPTION_VALUE_PLAYER=Játékos
+
+SING_OPTIONS_NETWORK_INSERT_USER_INFO=Nyomd meg az "Insert"-et hogy felhasználót adj hozzá.
+SING_OPTIONS_NETWORK_WEBSITE=Weboldal
+SING_OPTIONS_NETWORK_USERNAME=Felhasználónév
+SING_OPTIONS_NETWORK_PASSWORD=Jelszó
+SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Név küldése
+SING_OPTIONS_NETWORK_AUTO_MODE=Automatikus
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Játékos
+SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-küldés (Könnyű)
+SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-küldés (Normál)
+SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-küldés (Nehéz)
+SING_OPTIONS_NETWORK_NO_DLL=Nem találtam kompatibilis leaderboard-plugin-t!
+SING_OPTIONS_NETWORK_DELETE_PLAYER=Biztos hogy törlöd %0:s , erről az oldalról %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Beilleszt
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Töröl
+
+OPTION_PLAYER_1=Játékos 1
+OPTION_PLAYER_2=Játékos 2
+OPTION_PLAYER_3=Játékos 3
+OPTION_PLAYER_4=Játékos 4
+OPTION_PLAYER_5=Játékos 5
+OPTION_PLAYER_6=Játékos 6
+OPTION_ALL_PLAYERS=Összes
+OPTION_ALL_SCORES=Összes
+OPTION_VALUE_SAVE=Mentés
+OPTION_VALUE_SEND=Küldés
+
+MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_DESC=Töltsd ki a mezőt:
+MSG_INSERT_USER_ADD=Hozzáadás
+MSG_INSERT_USER_CANCEL=Mégsem
+
+WEBSITE_NO_CONNECTION=Nincs kapcsolat a weboldalhoz!
+WEBSITE_LOGIN_ERROR=Hibás bejelentkezés!
+WEBSITE_BLANK_LOGIN=Üres mező!
+WEBSITE_EXIST_USER=Létező felhasználó!
+WEBSITE_ERROR_SCORE=Pontszám hiba!
+WEBSITE_OK_SEND=Pontszám sikeresen elküldve!
+WEBSITE_ERROR_SCORE_DUPLICATED=Létező pontszám!
+WEBSITE_ERROR_SONG=Dal nem található!
+WEBSITE_SAVE_SCORE=Pontszám sikeresen elmentve!
+WEBSITE_NO_CONNECTION_SAVE=Nincs kapcsolat a weboldalhoz! Így is elmented a felhasználót?
+
+SONG_MENU_REFRESH_SCORES=Pontszám frissítése
+SONG_MENU_REFRESH_SCORES_TITLE=Frissítés
+SONG_MENU_REFRESH_SCORES_NO_WEB=Nincsenek weboldalak!
+SONG_MENU_REFRESH_SCORES_ONLINE=Online
+SONG_MENU_REFRESH_SCORES_FILE=Fájl
+SONG_MENU_REFRESH_SCORES_ALL_WEB=Összes weboldal
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Minden dal
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Ez a dal
+SONG_MENU_REFRESH_SCORES_REFRESH=Frissítés
+SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Hiba a weboldal kapcsolódásánál: %0:s!
+SONG_MENU_REFRESH_SCORES_ERROR_FILE=Fájl nem található: '%0:s [Pontszám letöltés]'!
+
+SONG_SCORE_MAX=Legjobb:
+SONG_SCORE_MEDIA=Átlag:
+
+SCORE_SEND_DESC=Pontszám küldés
+SCORE_SEND=Küldés
+SCORE_SEND_PLAYER=Játékos
+SCORE_SEND_OTHER_USER= Másik felhasználónév
+SCORE_SAVE=Mentés
+
+SCORE_DOWNLOAD_TITLE=Letöltés
+SCORE_DOWNLOAD_SONG=Dal:
+SCORE_DOWNLOAD_CREATE_LIST=Lista előkészítése...
+SCORE_DOWNLOAD_RECEIVE_LIST=Letöltés...
+SCORE_DOWNLOAD_CANCEL=Mégsem
+SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_SONG_UPDATE=%0:d dal(ok) megváltoztak a weben!
+
+SING_OPTIONS_WEBCAM_ID=Webkamera
+SING_OPTIONS_WEBCAM_RESOLUTION=Felbontás
+SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FLIP=Megfordítás
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Fényerő
+SING_OPTIONS_WEBCAM_SATURATION=Szaturáció
+SING_OPTIONS_WEBCAM_HUE=Szín
+SING_OPTIONS_WEBCAM_EFFECT=Effektek
+SING_OPTIONS_WEBCAM_PREVIEW=Előnézetet aktiválás
+
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Előnézet bekapcsolása
+SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Előnézet kikapcsolása
+SING_OPTIONS_WEBCAM_NO_WEBCAM=Webkamera nem található!
+SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normál
+SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Szürkeárnyalat
+SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Fekete-Fehér
+SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negatív
+SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Bináris kép
+SING_OPTIONS_WEBCAM_EFFECT_DILATE=Nyújtott
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Tűréshatár
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Élek
+SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gauss életlenítés
+SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Kiegyenlített
+SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erodált
+
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Átlátszóság
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Vonal
+JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Sajátosság
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Szín
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Piros
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zöld
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Kék
+
+JUKEBOX_SONGOPTIONS_VIDEO=Video Beállítások
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Vonatkozás
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Szélesség
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Magasság
+JUKEBOX_SONGOPTIONS_LYRIC=Dalszöveg beállítások
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Méret
+JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Pozíció
+
+OPTION_VALUE_TO_SING=Énekelt szöveg
+OPTION_VALUE_ACTUAL=Aktuális sor
+OPTION_VALUE_NEXT=Következő sor
+OPTION_VALUE_OTHER=Egyéb
+OPTION_VALUE_FILL=Egyszerű
+OPTION_VALUE_OUTLINE=Körvonal
OPTION_VALUE_BLUE=Kék
OPTION_VALUE_GREEN=Zöld
OPTION_VALUE_PINK=Rózsaszín
@@ -63,186 +276,71 @@ OPTION_VALUE_ORANGE=Narancs
OPTION_VALUE_YELLOW=Sárga
OPTION_VALUE_BROWN=Barna
OPTION_VALUE_BLACK=Fekete
-
-OPTION_VALUE_SING=dalválasztás
-OPTION_VALUE_SELECT_PLAYERS=játékos választás
-OPTION_VALUE_OPEN_MENU=Menü megnyitása
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardver Kurzor
-OPTION_VALUE_SOFTWARE_CURSOR=Softver Kurzor
-
-SING_LOADING=Betöltés...
-
-SING_CHOOSE_MODE=válassz menüpontot
-SING_SING=ének
-SING_SING_DESC=gyors játék: énekelj egyedül vagy duettet
-
-SING_MULTI=Buli
-SING_MULTI_DESC=énekelj buli módban
-
-SING_TOOLS=eszközök
-
-SING_STATS=statisztika
-SING_STATS_DESC=nézd meg a statisztikát
-
-SING_EDITOR=szerkesztő
-SING_EDITOR_DESC=készíts saját zenét
-
-SING_GAME_OPTIONS=játék beállításai
-SING_GAME_OPTIONS_DESC=változtasd meg a beállításokat
-
-SING_EXIT=kilépés
-SING_EXIT_DESC=kilépés a játékból
-
-SING_OPTIONS=beállítások
-SING_OPTIONS_DESC=beállítások megváltoztatása
-SING_OPTIONS_WHEREAMI=beállítások
-
-SING_OPTIONS_GAME=játék
-SING_OPTIONS_GRAPHICS=grafika
-SING_OPTIONS_SOUND=hang
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=szöveg
-SING_OPTIONS_THEMES=téma
-SING_OPTIONS_RECORD=felvétel
-SING_OPTIONS_ADVANCED=haladó
-SING_OPTIONS_EXIT=vissza
-
-SING_OPTIONS_GAME_WHEREAMI=játékbeállítások
-SING_OPTIONS_GAME_DESC=általános beállítások
-SING_OPTIONS_GAME_PLAYERS=játékosok
-SING_OPTIONS_GAME_DIFFICULTY=nehézség
-SING_OPTIONS_GAME_LANGUAGE=nyelv
-SING_OPTIONS_GAME_TABS=elválasztók
-SING_OPTIONS_GAME_SORTING=rendezés
-SING_OPTIONS_GAME_DEBUG=hibakezelő mód
-
-SING_OPTIONS_GRAPHICS_WHEREAMI=grafikai beállítások
-SING_OPTIONS_GRAPHICS_DESC=grafika beállítása
-SING_OPTIONS_GRAPHICS_RESOLUTION=felbontás
-SING_OPTIONS_GRAPHICS_FULLSCREEN=teljes képernyő
-SING_OPTIONS_GRAPHICS_DEPTH=színmélység
-SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=oszcilloszkóp
-SING_OPTIONS_GRAPHICS_LINEBONUS=sáv bónusz
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=videó mérete
-
-SING_OPTIONS_SOUND_WHEREAMI=hang beállításai
-SING_OPTIONS_SOUND_DESC=hangbeállítások
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=mikr. erősítése
-SING_OPTIONS_SOUND_CLICK_ASSIST=ütem segítség
-SING_OPTIONS_SOUND_BEAT_CLICK=Ütem
-SING_OPTIONS_SOUND_THRESHOLD=tűréshatár
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=két játékos mód
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=előzetes hang
-SING_OPTIONS_SOUND_PREVIEWFADING=előz. hang késése
-
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
-SING_OPTIONS_LYRICS_WHEREAMI=szöveg beállítások
-SING_OPTIONS_LYRICS_DESC=szöveg beállítása
-SING_OPTIONS_LYRICS_FONT=betűtípus
-SING_OPTIONS_LYRICS_EFFECT=effektek
-SING_OPTIONS_LYRICS_SOLMIZATION=szolmizáció
-SING_OPTIONS_LYRICS_NOTELINES=Staves
-
-SING_OPTIONS_THEMES_WHEREAMI=téma beállítása
-SING_OPTIONS_THEMES_DESC=téma és kinézet beállítása
-SING_OPTIONS_THEMES_THEME=téma
-SING_OPTIONS_THEMES_SKIN=háttér
-SING_OPTIONS_THEMES_COLOR=szín
-
-SING_OPTIONS_RECORD_WHEREAMI=felvétel beállítása
-SING_OPTIONS_RECORD_DESC=mikrofon beállítás
-SING_OPTIONS_RECORD_CARD=hangkártya
-SING_OPTIONS_RECORD_INPUT=bement
-SING_OPTIONS_RECORD_CHANNEL=csatorna:
-
-SING_OPTIONS_ADVANCED_WHEREAMI=haladó beállítások
-SING_OPTIONS_ADVANCED_DESC=további beállítások
-SING_OPTIONS_ADVANCED_EFFECTSING=hang effektek
-SING_OPTIONS_ADVANCED_SCREENFADE=háttér áttűnése
-SING_OPTIONS_ADVANCED_LOADANIMATION=betöltési animáció
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=megerősítést kér
-SING_OPTIONS_ADVANCED_LINEBONUS=sáv bónusz
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=éneklés után
-SING_OPTIONS_ADVANCED_PARTYPOPUP=partymenü megj.
-
-SING_EDIT=szerkesztő
-SING_EDIT_MENU_DESCRIPTION=készíts saját zenét
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importálj szöveget midiből
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=vissza
-SING_EDIT_BUTTON_CONVERT=Importálás
-SING_EDIT_BUTTON_EXIT=Vissza
-
-SING_EDIT_NAVIGATE=Navigálás
-SING_EDIT_SELECT=Választás
-SING_EDIT_EXIT=Vissza
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Szürke
+OPTION_VALUE_WHITE=Fehér
+OPTION_VALUE_TURQUOISE=Türkiz
+OPTION_VALUE_SALMON=Vörösessárga
+OPTION_VALUE_GREENYELLOW=Sárgászöld
+OPTION_VALUE_LAVENDER=Levendulakék
+OPTION_VALUE_BEIGE=Bézs
+OPTION_VALUE_TEAL=Kékeszöld
+OPTION_VALUE_ORCHID=Orgonalila
+OPTION_VALUE_STEELBLUE=Acélkék
+OPTION_VALUE_PLUM=Pasztelpink
+OPTION_VALUE_CHOCOLATE=Csokoládébarna
+OPTION_VALUE_GOLD=Aranysárga
+OPTION_VALUE_DARKBLUE=Sötétkék
+OPTION_VALUE_SKY=Égszínkék
+OPTION_VALUE_HARLEQUIN=Limezöld
+OPTION_VALUE_CYAN=Ciánkék
+OPTION_VALUE_FLAME=Tűzvörös
SING_LEGEND_SELECT=Választás
SING_LEGEND_NAVIGATE=Navigálás
SING_LEGEND_CONTINUE=Folytatás
SING_LEGEND_ESC=Vissza
-SING_PLAYER_DESC=Kérem a játékos(ok) nevét
-SING_PLAYER_WHEREAMI=Játékos Neve
-SING_PLAYER_ENTER_NAME=Név
-
-SING_DIFFICULTY_DESC=Nehézségi szint választása
-SING_DIFFICULTY_WHEREAMI=Nehézség
-SING_DIFFICULTY_CONTINUE=Szám kiválasztása
-SING_EASY=Könnyű
-SING_MEDIUM=Normál
-SING_HARD=Nehéz
-
-SING_SONG_SELECTION_DESC=Válassz számot
-SING_SONG_SELECTION_WHEREAMI=Szám választása
-SING_SONG_SELECTION_GOTO=Szám keresés
-SING_SONG_SELECTION=Szám választása
+SING_SONG_SELECTION=Szám választás
SING_SONG_SELECTION_MENU=Menü
-SING_SONG_SELECTION_PLAYLIST=számlista
-SING_SONGS_IN_CAT=Számok
+SING_SONG_SELECTION_PLAYLIST=Számlista
+SING_SONG_IN_CAT=Dal
+SING_SONGS_IN_CAT=Dalok
PLAYLIST_CATTEXT=Számlista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Jelmagyarázat
+SING_SONG_SELECTION_LEGEND_VIDEO=Videó
+SING_SONG_SELECTION_LEGEND_MEDLEY=Egyveleg
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Egyveleg kiszámolva
+SING_SONG_SELECTION_LEGEND_DUET=Duett
-;TODO: SING_TIME=TIME
SING_TOTAL=Összesen
SING_MODE=Egyszeri játékos
-SING_NOTES=Hang
+SING_NOTES=Eltalált hangok
SING_GOLDEN_NOTES=Arany pont
SING_PHRASE_BONUS=Sáv bónusz
SING_MENU=Főmenü
-SONG_SCORE=Szám pontok
+SONG_SCORE=Dal pontok
SONG_SCORE_WHEREAMI=Pontok
-SING_SCORE_TONE_DEAF=Pontszámok
-SING_SCORE_AMATEUR=Amatőr
-SING_SCORE_WANNABE=Wannabe
-SING_SCORE_HOPEFUL=Hopeful
-SING_SCORE_RISING_STAR=Kezdő Sztár
-SING_SCORE_LEAD_SINGER=Főállású énekes
+SING_SCORE_TONE_DEAF=Botfülű
+SING_SCORE_AMATEUR=Lelkes Amatőr
+SING_SCORE_WANNABE=Önjelölt Sztár
+SING_SCORE_HOPEFUL=Reményteljes Énekes
+SING_SCORE_RISING_STAR=Feltörekvő Csillag
+SING_SCORE_LEAD_SINGER=Főállású Énekes
SING_SCORE_SUPERSTAR=Szupersztár
-SING_SCORE_ULTRASTAR=Ultrasztár
+SING_SCORE_ULTRASTAR=Ultrasztár!
SING_TOP_5_CHARTS=Legjobb 5 játékos
SING_TOP_5_CHARTS_WHEREAMI=Legjobb 5
SING_TOP_5_CHARTS_CONTINUE=Szám kiválasztás
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=switch difficulty
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Nehézségi szintválasztás
POPUP_PERFECT=Hibátlan!
-POPUP_AWESOME=Nagyon jó!
-POPUP_GREAT=Elég Jó!
+POPUP_AWESOME=Bámulatos!
+POPUP_GREAT=Nagyszerű!
POPUP_GOOD=Jó!
POPUP_NOTBAD=Elmegy!
POPUP_BAD=Rossz!
@@ -252,23 +350,21 @@ POPUP_AWFUL=Borzalmas!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= és
-SONG_MENU_NAME_MAIN=Szám menü
+SONG_MENU_NAME_MAIN=Dal menü
SONG_MENU_PLAY=Szám
-SONG_MENU_CHANGEPLAYERS=Váltó játékosok
-SONG_MENU_EDIT=Edit
-SONG_MENU_MODI=Énekeljegy modi-t
+SONG_MENU_CHANGEPLAYERS=Játékos váltás
SONG_MENU_CANCEL=Mégsem
-SONG_MENU_NAME_PLAYLIST=Song Menu
+SONG_MENU_NAME_PLAYLIST=Szám Menü
SONG_MENU_PLAYLIST_ADD=Hozzáad
SONG_MENU_PLAYLIST_DEL=Töröl
SONG_MENU_NAME_PLAYLIST_ADD=Hozzáad
-SONG_MENU_PLAYLIST_ADD_NEW=Új Számlista
-SONG_MENU_PLAYLIST_ADD_EXISTING=Kilépés a Számlistából
-SONG_MENU_PLAYLIST_NOEXISTING=Nem elérhető a számlista
+SONG_MENU_PLAYLIST_ADD_NEW=Új számlista
+SONG_MENU_PLAYLIST_ADD_EXISTING=Kilépés a listából
+SONG_MENU_PLAYLIST_NOEXISTING=Nem elérhető a lista
-SONG_MENU_NAME_PLAYLIST_NEW=Új Számlista
+SONG_MENU_NAME_PLAYLIST_NEW=Új számlista
SONG_MENU_PLAYLIST_NEW_CREATE=Létrehoz
SONG_MENU_PLAYLIST_NEW_UNNAMED=Névtelen
@@ -282,469 +378,249 @@ SONG_MENU_PLAYLIST_DELCURRENT=Törli a számlistát
SONG_MENU_NAME_PLAYLIST_DEL=Törli a számlistát?
-SONG_MENU_NAME_PARTY_MAIN=Buli Menu
+SONG_MENU_NAME_PARTY_MAIN=Buli Menü
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=joker felhasználása
+SONG_MENU_NAME_PARTY_JOKER=Joker felhasználása
-SONG_JUMPTO_DESC=Tovább
+SONG_JUMPTO_DESC=Dal keresés
SONG_JUMPTO_TYPE_DESC=Keresés:
-SONG_JUMPTO_TYPE1=Összes
-SONG_JUMPTO_TYPE2=Cím
-SONG_JUMPTO_TYPE3=Előadó
-SONG_JUMPTO_SONGSFOUND=%d Szám(ok) találat
-SONG_JUMPTO_NOSONGSFOUND=Nincs szám találat
-SONG_JUMPTO_HELP=Text típusú fájl keresése
-SONG_JUMPTO_CATTEXT=Keresés: %s
PARTY_MODE=Buli mód
PARTY_DIFFICULTY=Nehézségi Szint
-PARTY_PLAYLIST=Listából éneklés
+PARTY_PLAYLIST=Számlista mód
PARTY_PLAYLIST_ALL=Minden dal
PARTY_PLAYLIST_CATEGORY=Mappa
PARTY_PLAYLIST_PLAYLIST=Számlista
-PARTY_TEAMS=Csapat
+PARTY_TEAMS=Csapatok száma
PARTY_TEAMS_PLAYER1=Csapat1
PARTY_TEAMS_PLAYER2=Csapat2
PARTY_TEAMS_PLAYER3=Csapat3
PARTY_LEGEND_CONTINUE=Folytatás
-PARTY_OPTIONS_DESC=Buli beállításai
-PARTY_OPTIONS_WHEREAMI=Buli Beállítások
+PARTY_OPTIONS_DESC=Buli mód beállításai
+PARTY_OPTIONS_WHEREAMI=Buli beállítások
-PARTY_PLAYER_DESC=Név- és Csapatnév!
-PARTY_PLAYER_WHEREAMI=Buli nevek
PARTY_PLAYER_ENTER_NAME=Nevek
+PARTY_ROUNDS_LEGEND_CONTINUE=Parti játék indítása
+PARTY_ROUNDCOUNT=Körök száma
+PARTY_SELECTMODE=Kör %d
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
-;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-;TODO: PARTY_ROUNDS_LEGEND_CONTINUE=Start party-game
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
-
-PARTY_ROUND_DESC=következő játékosok a mikrofonhoz
-PARTY_ROUND_WHEREAMI=Következő forduló
PARTY_ROUND_LEGEND_CONTINUE=Indul a menet
-PARTY_SONG_WHEREAMI=Buli szám választása
+PARTY_SONG_WHEREAMI=Buli dal választása
PARTY_SONG_LEGEND_CONTINUE=Szám
PARTY_SONG_MENU=Buli menü
-PARTY_SCORE_DESC=Pontok az elöző fordulóból
+OPTION_VALUE_SING=Dalválasztás
+OPTION_VALUE_SELECT_PLAYERS=Játékos választás
+OPTION_VALUE_OPEN_MENU=Menü megnyitása
+
+PARTY_SCORE_DESC=Előző forduló pontjai
PARTY_SCORE_WHEREAMI=Buli pontok
-PARTY_WIN_DESC=Nyert a Buli játékban
+PARTY_WIN_DESC=A parti játék nyertese
PARTY_WIN_WHEREAMI=Buli Nyertes
PARTY_WIN_LEGEND_CONTINUE=Vissza a főmenübe
PARTY_ROUND=Forduló
PARTY_ROUND_WINNER=Nyertes
-PARTY_NOTPLAYEDYET=Nem játszott szám
+PARTY_NOTPLAYEDYET=
PARTY_NOBODY=Senki
NEXT_ROUND=Következő menet:
-PARTY_DISMISSED=Hibátlan!
+PARTY_DISMISSED=Feloszlott!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=Nem nyert!
+PARTY_SCORE_WINS2=Nyert!
-MODE_RANDOM_NAME=Random Mode
-;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
+MODE_RANDOM_NAME=Véletlenszerű mód
+MODE_RANDOM_DESC=A játék véletlenszerűen fog választani módot!
-MODE_HOLDTHELINE_NAME=Tartsd a sávot!
-;TODO: MODE_HOLDTHELINE_DESC=Keep your rating above the line for the longest!
+MODE_HOLDTHELINE_NAME=Tartsd az előnyt
+MODE_HOLDTHELINE_DESC=Tartsd meg az előnyöd amilyen hosszan csak tudod!
-;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
-;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
+MODE_HOLDTHELINEBLIND_NAME=Tartsd az előnyt vakon!
+MODE_HOLDTHELINEBLIND_DESC=Tartsd a sávot amilyen hosszan csak tudod, de nem látod a hangokat!
-;TODO: MODE_7000POINTS_NAME=Until 7000
-;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
+MODE_7000POINTS_NAME=7000 Pontig
+MODE_7000POINTS_DESC=Verseny 7000 Pontig!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
-;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
+MODE_7000POINTSBLIND_NAME=Vakon 7000 Pontig
+MODE_7000POINTSBLIND_DESC=Verseny 7000 pontig, de nem látod a hangokat!
-MODE_5000POINTS_NAME=5000-ig
-;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
+MODE_5000POINTS_NAME=5000 Pontig
+MODE_5000POINTS_DESC=Verseny 5000 Pontig!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
-;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
+MODE_5000POINTSBLIND_NAME=Vakon 5000 Pontig
+MODE_5000POINTSBLIND_DESC=Verseny 5000 pontig, de nem látod a hangokat!
-;TODO: MODE_2000POINTS_NAME=Until 2000
-;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
+MODE_2000POINTS_NAME=2000 Pontig
+MODE_2000POINTS_DESC=Verseny 2000 Pontig!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
-;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
+MODE_2000POINTSBLIND_NAME=Vakon 2000 Pontig
+MODE_2000POINTSBLIND_DESC=Verseny 2000 pontig, de nem látod a hangokat!
-MODE_DUEL_NAME=Ketten
-;TODO: MODE_DUEL_DESC=A 1v1 duel to get the highest score!
+MODE_DUEL_NAME=Párbaj
+MODE_DUEL_DESC=Irány egymás ellen a legmagasabb pontért!
-;TODO: MODE_TEAMDUEL_NAME=Team Duel
-;TODO: MODE_TEAMDUEL_DESC=Pass The Mic! Work together to get a higher score than the other team!
+MODE_TEAMDUEL_NAME=Csapat párbaj
+MODE_TEAMDUEL_DESC=Add át a mikrofont! Dolgozzatok együtt a másik csapat ellen a legjobb pontért!
-MODE_BLIND_NAME="Vak Mód"
-;TODO: MODE_BLIND_DESC=A 1v1 duel, but with the notes hidden!
+MODE_BLIND_NAME=Vak mód
+MODE_BLIND_DESC=Egymás elleni párbaj, anélkül hogy látnád a hangokat!
-;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
-;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
+MODE_BLINDTOTAL_NAME=Teljes vakság!
+MODE_BLINDTOTAL_DESC=Párbaj ahol a hangok és a szöveg is rejtve marad. Csak bátraknak!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
-;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
+MODE_1000BLIND_NAME = +1000 pont vakon
+MODE_1000BLIND_DESC = Gyűjts minimum 1000 pont előnyt, annélkül hogy látnád a hangokat!
-;TODO: MODE_DEAF_NAME = Deaf
-;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
+MODE_DEAF_NAME = Hang nélkül
+MODE_DEAF_DESC = Azt hiszed ismered a hangokat? Akkor énekelj nélkülük!
-;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
-;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
+MODE_BLINDLYRICS_NAME = Dalszöveg nélkül
+MODE_BLINDLYRICS_DESC = Ismered a dalszöveget? Énekeld el úgy hogy rejtve marad!
-;TODO: MODE_500BLIND_NAME = +500 Blind
-;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
+MODE_500BLIND_NAME = +500 pont vakon
+MODE_500BLIND_DESC = Gyűjts minimum 500 pont előnyt, annélkül hogy látnád a hangokat!
-;TODO: MODE_SHORTSONG_NAME = Short Song
-;TODO: MODE_SHORTSONG_DESC = A fast-paced 1v1 duel over half the song!
+MODE_SHORTSONG_NAME = Rövid dal
+MODE_SHORTSONG_DESC = Gyors menet a dal feléig!
-;TODO: MODE_HARDCORE_NAME=Hardcore
-;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
+MODE_HARDCORE_NAME=Háromsoros
+MODE_HARDCORE_DESC=Három sornyi előny és tiéd a győzelem!
STAT_MAIN=Statisztikák
-STAT_MAIN_DESC=Általános
-STAT_MAIN_WHEREAMI=Statisztika
-STAT_OVERVIEW_INTRO=%0:s Statistics. \n Last Reset at %2:.2d.%1:.2d.%3:d
-STAT_OVERVIEW_SONG=%0:d Számok(%3:d Video-val), Melyből %1:d Lejátszott és %2:d Még nem.\n Legtöbbet hallgatott: %5:s %4:s-tól/től
-STAT_OVERVIEW_PLAYER=A játék kezdetétől %0:d játékos(ok) játszottak.\n A legjobb játékos: %1:s Átlageredménye: %2:d Pont.\n %3:s Legjobb eredménye: %4:d Pont.
+STAT_OVERVIEW_INTRO=%0:s Statisztika. \n Utoljára nullázva %3:.2d.%2:.2d.%1:d
+STAT_OVERVIEW_SONG=%0:d Szám(%3:d Video-val), Melyből %1:d lejátszott és %2:d még nem.\n Legtöbbet hallgatott: %5:s %4:s-tól/től
+STAT_OVERVIEW_PLAYER=A játék kezdetétől %0:d játékos játszott.\n A legjobb játékos: %1:s Átlageredménye: %2:d Pont.\n %3:s Legjobb eredménye: %4:d Pont.
STAT_FORMAT_DATE=%1:.2d.%0:.2d.%2:d
STAT_DETAIL=Statisztika
-STAT_DETAIL_WHEREAMI=Részletes
+STAT_DETAIL_WHEREAMI=Részletesen
STAT_NEXT=Következő oldal
-STAT_PREV=Elöző oldal
-STAT_REVERSE=Ellenkező sorrend
-STAT_PAGE=Seite %0:d of %1:d Oldalak\n (%2:d of %3:d Entrys)
+STAT_PREV=Előző oldal
+STAT_REVERSE=Fordított sorrend
+STAT_PAGE=Oldal %0:d ból %1:d \n Bejegyzés %2:d ból %3:d
-STAT_DESC_SCORES=Legjobb eredmény
+STAT_DESC_SCORES=Legjobb Eredmény
STAT_DESC_SCORES_REVERSED=Alacsony pontszám
STAT_FORMAT_SCORES=%0:s - %1:d [%2:s] \n (%3:s - %4:s)
-STAT_DESC_SINGERS=Legjobb énekesek
-STAT_DESC_SINGERS_REVERSED=Legrosszagg játékosok
-STAT_FORMAT_SINGERS=%0:s \n Átlag pontszám: %1:d
+STAT_DESC_SINGERS=Legjobb Énekesek
+STAT_DESC_SINGERS_REVERSED=Legrosszabb Énekesek
+STAT_FORMAT_SINGERS=%0:s \n Átlag pontszáma: %1:d
STAT_DESC_SONGS=Közkedvelt számok
STAT_DESC_SONGS_REVERSED=Kevésbé kedvelt számok
-STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx sung
+STAT_FORMAT_SONGS=%0:s - %1:s \n %2:dx Énekelve
STAT_DESC_BANDS=Közkedvelt együttesek
STAT_DESC_BANDS_REVERSED=Kevésbé kedvelt együttesek
-STAT_FORMAT_BANDS=%0:s \n %1:dx Ének
+STAT_FORMAT_BANDS=%0:s \n %1:dx Énekeve
+
+PARTY_SELECT_MODE=Mód
+PARTY_MODE_CLASSIC=Klasszikus
+PARTY_MODE_CLASSIC_FREE=Klasszikus Szabadmód
+PARTY_MODE_CHALLENGE=Kihívás
+PARTY_MODE_TOURNAMENT=Versenysorozat
+PARTY_MODE_JUKEBOX=Zenedoboz
+
+PARTY_MODE_TOURNAMENT_PLAYER_DESC=Játékosok száma és neve
+PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Játékosok száma
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Körök száma
+PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Döntő
+PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Elődöntő
+PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Negyeddöntő
+PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Selejtező
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Következő játékosok a mikrofonhoz
+PARTY_MODE_TOURNAMENT_WIN_DESC=Kör eredmény
+PARTY_MODE_TOURNAMENT_CHAMPION=A nyertes: %0:s!
+
+MSG_END_JUKEBOX=Kilépsz a Zenedobozból?
+JUKEBOX_RANDOM=Véletlenszerű
+JUKEBOX_REPEAT=Ismétlés
+JUKEBOX_FIND=Keresés:
+JUKEBOX_SORT=Rendezés:
+JUKEBOX_SONGLIST=Dalok listája
+
+SING_ERROR_DUET_MODE_PARTY = A Duett nem elérhető Buli módban!
+
+SONG_MENU_SONG=Szám
+SONG_MENU_MEDLEY=Egyveleg
+
+SONG_MENU_NAME_SONG=Szám Menü
+SONG_MENU_NAME_MEDLEY=Egyveleg Menü
+SONG_MENU_ADD_SONG=Hozzáadás
+SONG_MENU_DELETE_SONG=Törlés
+SONG_MENU_START_MEDLEY=Éneklés
+SONG_MENU_START_5_MEDLEY=Énekelj %0:d Dalt!
+
+SONG_MENU_NAME_SORTING=Rendezés Menü
+SONG_MENU_SORTING_TABS_ON=Tabs Be
+SONG_MENU_SORTING_TABS_OFF=Tabs Ki
+SONG_MENU_SORTING_ALL=Összes
+SONG_MENU_SORTING_DUET=Duett
+SONG_MENU_SORTING_APPLY=Rendben
+
+PARTY_PLAYLIST_MANUAL=Kézi Választás
+PARTY_MODE_JUKEBOX_NO_SONGS=Számlista üres!
+SONG_MENU_OPEN_CATEGORY=Kategória megnyitása
+SONG_MENU_CLOSE_CATEGORY=Kategória bezárása
+SONG_MENU_START_JUKEBOX=Induljon a Zenedoboz
+SONG_MENU_NAME_JUKEBOX=Zenedoboz Menü
+
+WEBSITE_EXIST_SONG=A dal a weboldalhoz tartozik: %0:s
+WEBSITE_NOT_EXIST_SONG=A dal nem tartozik egyik weboldalhoz sem!
+
+NAME_PLAYERS_COUNT=Játékosok száma
+NAME_CURRENT_PLAYER=Játékos
+
+JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Nyújtás
+JUKEBOX_SONGOPTIONS_VIDEO_CROP=Levágás
+JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=Szélesvásznú
+
+JUKEBOX_SONGOPTIONS_SAVE=Mentés
+JUKEBOX_SONGOPTIONS_CLOSE=Bezár
+JUKEBOX_SONGOPTIONS_DEFAULT=Alapértelmezett
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Mentve!
+
+JUKEBOX_MODE=Zenedoboz Mód
+JUKEBOX_OPTIONS_PLAYLIST=Számlista
+JUKEBOX_OPTIONS_PLAYLIST_MODE=Mód
-SCREENSHOT_SAVED=Képeryő mentve
-SCREENSHOT_FAILED=Képernyő mentése sikertelen
+ABOUT_MAIN=Rólunk...
+ABOUT_USDX_DEVELOPEDBY=Fejlesztette
+ABOUT_CHECK_CHECKING=Új verzió keresése...
+ABOUT_CHECK_AVAILABLE=Új verzió elérhető
+ABOUT_CHECK_UPTODATE=A WorldParty naprakész
+ABOUT_CHECK_CONNECTION=Nincs Internet kapcsolat
+ABOUT_OVERVIEW=Fedezd fel az éneklés új módját, egyedül vagy párban akár a barátaiddal. \n A szórakozás garantált!\n\nA WorldParty az eredeti Ultrastar Deluxe 1.1-es verziója, amely újra lett szerkesztve az UltraStar Espana Team által, ami most a legnagyobb karaoke közösség.\n\n\nA program ingyenes és a GPL license alá esik. \n\n Több információért látogass el a következő oldalra.\n\nhttps://ultrastar-es.org
-INFO_FILE_SAVED=Fájl mentve
-ERROR_SAVE_FILE_FAILED=Fájl mentése sikertelen
-ERROR_FILE_NOT_FOUND=Fájl nem található
+DEVELOPERS_TITLE=Fejlesztette
+DEVELOPERS_OVERVIEW=Azok a személyek, akik hozzájárultak ehhez a projekthez:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Látogasson el hozzánk további információért.\n\nhttps://ultrastar-es.org
-ENCODING_ERROR_ASK_FOR_UTF8=A változtatások nem menthetők ebben a kódolásban. Konvertáljuk UTF-8-á?
-EDITOR_ERROR_NO_TRACK_SELECTED=Nincs szám kiválasztva
+SCREENSHOT_SAVED=Képernyőkép mentve
+SCREENSHOT_FAILED=Képernyőkép mentése sikertelen
MSG_ERROR_TITLE=Hiba
MSG_INFO_TITLE=Infó
MSG_QUESTION_TITLE=Kérdés
-MSG_QUIT_USDX=Tényleg elhagyod az UltraStar színpadát?
-MSG_END_PARTY=Tényleg kilépsz a Buli módból?
+MSG_QUIT_USDX=Biztos elhagyod az UltraStar színpadát?
+MSG_END_PARTY=Biztos kilépsz a Buli módból?
ERROR_NO_SONGS=Nincs dal betöltve
ERROR_NO_PLUGINS=Nincs plugin betöltve
-ERROR_NO_MODES_FOR_CURRENT_SETUP=no modes available for current player/team setup
-ERROR_CAN_NOT_START_PARTY= an error occurred starting the party game
+ERROR_LOADING_SONGS=Várj még az összes dal betöltődik
ERROR_CORRUPT_SONG=Sikertelen dalbetöltés.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Sikertelen dalbetöltés: Dal nem található
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Sikertelen dalbetöltés: Szám nem található
ERROR_CORRUPT_SONG_NO_NOTES=Sikertelen dalbetöltés: Nincs kotta hozzá
ERROR_CORRUPT_SONG_NO_BREAKS=Sikertelen dalbetöltés: Nincs benne sortörés
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Sikertelen dalbetöltés: Sikertelen elemzési sor %0:d
-ERROR_NO_EDITOR=This feature is not available on this version.
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d was assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Automatikus
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Összes
-OPTION_ALL_SCORES=Összes
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Mégsem
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Mégsem
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
-;TODO: PARTY_SELECT_MODE=Mode
-;TODO: PARTY_MODE_CLASSIC=Classic
-;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
-;TODO: PARTY_MODE_CHALLENGE=Challenge
-;TODO: PARTY_MODE_TOURNAMENT=Tournament
-;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
-
-;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
-;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-;TODO: PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Number of rounds
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=következő játékosok a mikrofonhoz
-;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
-;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Fájl mentve
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
-;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
-;TODO: JUKEBOX_RANDOM=Random
-;TODO: JUKEBOX_REPEAT=Repeat
-;TODO: JUKEBOX_FIND=Find:
-;TODO: JUKEBOX_SORT=Sort:
-;TODO: JUKEBOX_SONGLIST=List of Songs
-
-;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-
-;TODO: SONG_MENU_SONG=Song
-;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
-
-SONG_MENU_NAME_SONG=Song Menu
-;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
-SONG_MENU_ADD_SONG=Hozzáad
-SONG_MENU_DELETE_SONG=Töröl
-;TODO: SONG_MENU_START_MEDLEY=Sing!
-;TODO: SONG_MENU_START_5_MEDLEY=Sing %0:d Songs!
-
-;TODO: SONG_MENU_NAME_SORTING=Sort Menu
-;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
-;TODO: SONG_MENU_SORTING_TABS_OFF=Tabs Off
-SONG_MENU_SORTING_ALL=Összes
-;TODO: SONG_MENU_SORTING_DUET=Duets
-;TODO: SONG_MENU_SORTING_APPLY=Apply
-
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=felbontás
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=effektek
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=tűréshatár
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
-;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
-;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
-;TODO: SONG_MENU_OPEN_CATEGORY=Open category
-;TODO: SONG_MENU_CLOSE_CATEGORY=Close category
-;TODO: SONG_MENU_START_JUKEBOX=Start Jukebox!
-;TODO: SONG_MENU_NAME_JUKEBOX=Menu Jukebox
-
-;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
-;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
-
-SING_OPTIONS_GAME_SONGMENU=Song Menu
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=Szám
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=szín
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Piros
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zöld
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Kék
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-
-;TODO: JUKEBOX_SONGOPTIONS_SAVE=Save
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
-;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
-;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
-;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
-JUKEBOX_OPTIONS_PLAYLIST=Számlista
-;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Összes
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Játékos %d több mikrofonhoz van rendelve. Kérlek ellenőrizd a mikrofon beállításokat.
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Játékos %d nincs egy mikrofonhoz sem rendelve. Kérlek ellenőrizd a mikrofon beállításokat.
\ No newline at end of file
diff --git a/game/languages/Nederlands.ini b/game/languages/Nederlands.ini
index ce1da35a..00e0522e 100644
--- a/game/languages/Nederlands.ini
+++ b/game/languages/Nederlands.ini
@@ -40,73 +40,65 @@ OPTION_VALUE_AUTO=Auto
OPTION_VALUE_SEC=Seconde
OPTION_VALUE_SECS=Seconden
-OPTION_VALUE_PLAIN=Gewoon
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Gestileerde
+OPTION_VALUE_OLINE1=Met dunne rand
+OPTION_VALUE_OLINE2=Met dikke rand
OPTION_VALUE_SIMPLE=Simpel
-;TODO: OPTION_VALUE_ZOOM=Zoom
+OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Bal
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
+OPTION_VALUE_EURO=Euro
+OPTION_VALUE_JAPAN=Japan
+OPTION_VALUE_AMERICAN=Amerikaans
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
+OPTION_VALUE_BLUE=Blauw
+OPTION_VALUE_GREEN=Groen
+OPTION_VALUE_PINK=Roze
+OPTION_VALUE_RED=Rood
+OPTION_VALUE_VIOLET=Paars
+OPTION_VALUE_ORANGE=Oranje
+OPTION_VALUE_YELLOW=Geel
+OPTION_VALUE_BROWN=Bruin
+OPTION_VALUE_BLACK=Zwart
OPTION_VALUE_SING=Zing
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
+OPTION_VALUE_SELECT_PLAYERS=Selecteer spelers
;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
SING_LOADING=Laden...
+SING_LOADING_SONGS=Nummers uit de map laden %s
-SING_CHOOSE_MODE=kies mode
-SING_SING=zing
-SING_SING_DESC=snel spelletje: zing een solo of duet
-
-SING_MULTI=party
-SING_MULTI_DESC=zing in party-mode
+SING_CHOOSE_MODE=Kies mode
+SING_SING=Zing
+SING_SING_DESC=Snel spelletje: zing een solo of duet
-SING_TOOLS=tools
+SING_MULTI=Party
+SING_MULTI_DESC=Zing in party-mode
-SING_STATS=stats
-SING_STATS_DESC=bekijk de statistieken
+SING_TOOLS=Tools
-SING_EDITOR=editor
-SING_EDITOR_DESC=Maak je eigen liedje
+SING_STATS=Stats
+SING_STATS_DESC=Bekijk de statistieken
-SING_GAME_OPTIONS=spelopties
-SING_GAME_OPTIONS_DESC=verander de spelopties
+SING_GAME_OPTIONS=Spelopties
+SING_GAME_OPTIONS_DESC=Verander de spelopties
SING_EXIT=Stoppen
-SING_EXIT_DESC=stop het spelletje
+SING_EXIT_DESC=Stop het spelletje
-SING_OPTIONS=opties
+SING_OPTIONS=Opties
SING_OPTIONS_DESC=Verander de opties
SING_OPTIONS_WHEREAMI=Opties
SING_OPTIONS_GAME=Spel
-SING_OPTIONS_GRAPHICS=graphics
+SING_OPTIONS_GRAPHICS=Graphics
SING_OPTIONS_SOUND=Geluid
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Tekst
SING_OPTIONS_THEMES=Thema
-SING_OPTIONS_RECORD=Opname
+SING_OPTIONS_MICROPHONES=Opname
SING_OPTIONS_ADVANCED=Geavanceerd
SING_OPTIONS_EXIT=Terug
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Moeilijkheidsgraad
SING_OPTIONS_GAME_LANGUAGE=Taal
SING_OPTIONS_GAME_TABS=Tabs
SING_OPTIONS_GAME_SORTING=Sorteren
-SING_OPTIONS_GAME_DEBUG=Debug
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activeer gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Grafische opties
SING_OPTIONS_GRAPHICS_DESC=Grafische instellingen
SING_OPTIONS_GRAPHICS_RESOLUTION=Resolutie
SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullscreen
-SING_OPTIONS_GRAPHICS_DEPTH=Diepte
+SING_OPTIONS_GRAPHICS_EFFECTSING=Zing effecten
+SING_OPTIONS_GRAPHICS_SCREENFADE=Faden
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Laad animaties
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisatie
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloscoop
SING_OPTIONS_GRAPHICS_LINEBONUS=Lijnbonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Video grootte
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Geluidsopties
SING_OPTIONS_SOUND_DESC=Geluidsinstellingen
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microfoon Playback
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Achtergrond Muziek
-SING_OPTIONS_SOUND_MIC_BOOST=Microfoon boost
SING_OPTIONS_SOUND_CLICK_ASSIST=Klik assistent
SING_OPTIONS_SOUND_BEAT_CLICK=Beat klik
-SING_OPTIONS_SOUND_THRESHOLD=Drempelwaarde
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Twee spelers mode
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Voorbeeld volume
SING_OPTIONS_SOUND_PREVIEWFADING=Voorbeeld Faden
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Tekst Opties
SING_OPTIONS_LYRICS_DESC=Tekst instellingen
SING_OPTIONS_LYRICS_FONT=Lettertype
@@ -160,45 +146,38 @@ SING_OPTIONS_THEMES_THEME=Thema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Kleur
-SING_OPTIONS_RECORD_WHEREAMI=Opname opties
-SING_OPTIONS_RECORD_DESC=Microfoon instellingen
-SING_OPTIONS_RECORD_CARD=Geluidskaart
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Kanaal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opname opties
+SING_OPTIONS_MICROPHONES_DESC=Microfoon instellingen
+SING_OPTIONS_MICROPHONES_CARD=Geluidskaart
+SING_OPTIONS_MICROPHONES_INPUT=Input
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanaal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Drempelwaarde
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Microfoon boost
SING_OPTIONS_ADVANCED_WHEREAMI=Geavanceerde opties
-SING_OPTIONS_ADVANCED_DESC=geavanceerde instellingen
-SING_OPTIONS_ADVANCED_EFFECTSING=Zing effecten
-SING_OPTIONS_ADVANCED_SCREENFADE=Faden
-SING_OPTIONS_ADVANCED_LOADANIMATION=Laad animaties
+SING_OPTIONS_ADVANCED_DESC=Geavanceerde instellingen
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloscoop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Veiligheidsvragen
SING_OPTIONS_ADVANCED_LINEBONUS=Lijnbonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Selecties na het Liedje
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Maak je eigen liedje
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importeer tekst van midi file
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Terug
-SING_EDIT_BUTTON_CONVERT=Importeer
-SING_EDIT_BUTTON_EXIT=Terug
-
-SING_EDIT_NAVIGATE=Navigeer
-SING_EDIT_SELECT=Selecteer
-SING_EDIT_EXIT=Terug
-
SING_LEGEND_SELECT=Selecteer
SING_LEGEND_NAVIGATE=Navigeer
SING_LEGEND_CONTINUE=Ga Verder
SING_LEGEND_ESC=Terug
-SING_PLAYER_DESC=Kies Namen
-SING_PLAYER_WHEREAMI=Namen
-SING_PLAYER_ENTER_NAME=Kies namen
+SING_PLAYER_TITLE=Profielen
+SING_PLAYER_READY=Spelers klaar om te zingen
+SING_PLAYER_COUNT=Aantal spelers
+SING_PLAYER_EDIT=Pas een speler aan
+SING_PLAYER_NAME=Schrijf je naam
+SING_PLAYER_COLOR=Kies een kleur
+SING_PLAYER_LEVEL=Kies een niveau
+SING_PLAYER_AVATAR=Selecteer je avatar
-SING_DIFFICULTY_DESC=selecteer moeilijkheidsgraad
+SING_DIFFICULTY_DESC=Selecteer moeilijkheidsgraad
SING_DIFFICULTY_WHEREAMI=Moeilijkheidsgraad
SING_DIFFICULTY_CONTINUE=Ga verder
SING_EASY=Gemakkelijk
@@ -209,17 +188,22 @@ SING_SONG_SELECTION_DESC=Kies je liedje
SING_SONG_SELECTION_WHEREAMI=Selecteer een liedje
SING_SONG_SELECTION_GOTO=Ga naar
SING_SONG_SELECTION=Liedjes Selectie
-SING_SONG_SELECTION_MENU=menu
-SING_SONG_SELECTION_PLAYLIST=playlist
+SING_SONG_SELECTION_MENU=Menu
+SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Lied
SING_SONGS_IN_CAT=Liedjes
PLAYLIST_CATTEXT=Playlist: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=totaal
-SING_MODE=zing solo
-SING_NOTES=noten
-SING_GOLDEN_NOTES=gouden noten
-SING_PHRASE_BONUS=lijn bonus
+SING_SONG_SELECTION_LEGEND_TITLE=Legende
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
+
+SING_TOTAL=Totaal
+SING_MODE=Zing solo
+SING_NOTES=Noten
+SING_GOLDEN_NOTES=Gouden noten
+SING_PHRASE_BONUS=Lijn bonus
SING_MENU=Hoofd Menu
@@ -235,19 +219,19 @@ SING_SCORE_LEAD_SINGER=Hoofdzanger
SING_SCORE_SUPERSTAR=Superster
SING_SCORE_ULTRASTAR=ULTRASTAR
-SING_TOP_5_CHARTS=top 5 Spelers
-SING_TOP_5_CHARTS_WHEREAMI=top 5
+SING_TOP_5_CHARTS=Top 5 Spelers
+SING_TOP_5_CHARTS_WHEREAMI=Top 5
SING_TOP_5_CHARTS_CONTINUE=Ga Verder
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=switch difficulty
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=perfect!
-POPUP_AWESOME=ongelooflijk!
-POPUP_GREAT=fantastisch!
-POPUP_GOOD=goed!
-POPUP_NOTBAD=niet slecht!
-POPUP_BAD=slecht!
-POPUP_POOR=zwak!
-POPUP_AWFUL=pijnlijk!
+POPUP_PERFECT=Perfect!
+POPUP_AWESOME=Ongelooflijk!
+POPUP_GREAT=Fantastisch!
+POPUP_GOOD=Goed!
+POPUP_NOTBAD=Niet slecht!
+POPUP_BAD=Slecht!
+POPUP_POOR=Zwak!
+POPUP_AWFUL=Pijnlijk!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= en
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= en
SONG_MENU_NAME_MAIN=Liedjes Menu
SONG_MENU_PLAY=Zingen
SONG_MENU_CHANGEPLAYERS=Verander de spelers
-SONG_MENU_EDIT=Bewerken
SONG_MENU_MODI=Zing een Mode
SONG_MENU_CANCEL=Cancel
@@ -264,8 +247,8 @@ SONG_MENU_PLAYLIST_ADD=Voeg een liedje toe
SONG_MENU_PLAYLIST_DEL=Verwijder Liedje
SONG_MENU_NAME_PLAYLIST_ADD=Voeg een liedje toe
-SONG_MENU_PLAYLIST_ADD_NEW=aan een nieuwe Playlist
-SONG_MENU_PLAYLIST_ADD_EXISTING=aan een bestaande playlist
+SONG_MENU_PLAYLIST_ADD_NEW=Aan een nieuwe Playlist
+SONG_MENU_PLAYLIST_ADD_EXISTING=Aan een bestaande playlist
SONG_MENU_PLAYLIST_NOEXISTING=Geen playlist beschikbaar
SONG_MENU_NAME_PLAYLIST_NEW=Nieuwe Playlist
@@ -277,7 +260,7 @@ SONG_MENU_YES=Ja
SONG_MENU_NO=Nee
SONG_MENU_NAME_PLAYLIST_LOAD=Open Playlist
-SONG_MENU_PLAYLIST_LOAD=open
+SONG_MENU_PLAYLIST_LOAD=Open
SONG_MENU_PLAYLIST_DELCURRENT=Verwijder huidige Playlist
SONG_MENU_NAME_PLAYLIST_DEL=Verwijder de Playlist?
@@ -297,7 +280,7 @@ SONG_JUMPTO_NOSONGSFOUND=Niks gevonden
SONG_JUMPTO_HELP=Typ waarnaar moet gezocht worden
SONG_JUMPTO_CATTEXT=Zoek naar: %s
-PARTY_MODE=party mode
+PARTY_MODE=Party mode
PARTY_DIFFICULTY=Moeilijkheidsgraad
PARTY_PLAYLIST=Playlist Mode
PARTY_PLAYLIST_ALL=Alle liedjes
@@ -320,34 +303,34 @@ PARTY_PLAYER_ENTER_NAME=Kies de namen
;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=start partyspelletje
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDS_LEGEND_CONTINUE=Start partyspelletje
+PARTY_ROUNDCOUNT=Aantal rondes
+PARTY_SELECTMODE=Rounde %d
PARTY_ROUND_DESC=Volgende spelers aan de Microfoon
PARTY_ROUND_WHEREAMI=Party Volgende ronde
-PARTY_ROUND_LEGEND_CONTINUE=start de ronde
+PARTY_ROUND_LEGEND_CONTINUE=Start de ronde
PARTY_SONG_WHEREAMI=Party Song-Selectie
PARTY_SONG_LEGEND_CONTINUE=Zing
-PARTY_SONG_MENU=partymenu
+PARTY_SONG_MENU=Partymenu
-PARTY_SCORE_DESC=score van de laatste ronde
+PARTY_SCORE_DESC=Score van de laatste ronde
PARTY_SCORE_WHEREAMI=Partypunten
-PARTY_WIN_DESC=winnaar van de party-game
+PARTY_WIN_DESC=Winnaar van de party-game
PARTY_WIN_WHEREAMI=Party Winnaar
PARTY_WIN_LEGEND_CONTINUE=Terug naar het hoofdmenu
PARTY_ROUND=Ronde
PARTY_ROUND_WINNER=Winnaar
PARTY_NOTPLAYEDYET=Nog niet gespeeld
-PARTY_NOBODY=niemand
+PARTY_NOBODY=Niemand
NEXT_ROUND=Volgende Ronde:
PARTY_DISMISSED=Uitgeschakeld!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=overwinningen!
+PARTY_SCORE_WINS2=Overwinningen!
;TODO: MODE_RANDOM_NAME=Random Mode
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_NAME=Hold the Line
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Tot 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Blind 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Tot 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Blind 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Tot 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Blind 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duel
@@ -388,16 +371,16 @@ MODE_BLIND_NAME=Blinde Mode
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
+MODE_1000BLIND_NAME = +1000 Blind
;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
-;TODO: MODE_DEAF_NAME = Deaf
+MODE_DEAF_NAME = Doof
;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Blind
;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Gedetailleerde statistieken
STAT_NEXT=Volgende Pagina
STAT_PREV=Vorige Pagina
STAT_REVERSE=Omgekeerde Volgorde
-STAT_PAGE=Pagina %0:d van de %1:d Paginas\n (%2:d van de %3:d scores)
+STAT_PAGE=Pagina %0:d van de %1:d \n Scores %2:d van de %3:d
STAT_DESC_SCORES=Topscore
STAT_DESC_SCORES_REVERSED=Laagste scores
@@ -440,15 +423,14 @@ STAT_DESC_BANDS=Populairste Artiesten
STAT_DESC_BANDS_REVERSED=Minst populaire artiesten
STAT_FORMAT_BANDS=%0:s \n %1:dx gezongen
-;TODO: SCREENSHOT_SAVED=Screenshot saved
-;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
+SCREENSHOT_SAVED=Screenshot opgeslagen
+;TODO: SCREENSHOT_FAILED=Couldn't save screenshot
;TODO: INFO_FILE_SAVED=File saved
;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Error
;TODO: MSG_INFO_TITLE=Information
@@ -465,20 +447,19 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Liedje kon niet geladen worden: File niet gevo
ERROR_CORRUPT_SONG_NO_NOTES=Liedje kon niet geladen worden: Geen noten gevonden
ERROR_CORRUPT_SONG_NO_BREAKS=Liedje kon niet geladen worden: Geen linebreaks gevonden
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Liedje kon niet geladen worden: Probleem met regel %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Speler %d is toegewezen aan meerdere microfoons. Controleer uw microfoonopties
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Speler %d is niet toegewezen aan een microfoon. Controleer uw microfoonopties
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Internet Opties
+SING_OPTIONS_NETWORK_DESC=Internet algemene instellingen
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Gebruikersnaam
+SING_OPTIONS_NETWORK_PASSWORD=Wachtwoord
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Speler
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,16 +468,16 @@ ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Liedje kon niet geladen worden: Probleem met
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Speler 1
+OPTION_PLAYER_2=Speler 2
+OPTION_PLAYER_3=Speler 3
+OPTION_PLAYER_4=Speler 4
+OPTION_PLAYER_5=Speler 5
+OPTION_PLAYER_6=Speler 6
OPTION_ALL_PLAYERS=Alles
OPTION_ALL_SCORES=Alles
;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
+OPTION_VALUE_SEND=Sturen
;TODO: MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
@@ -527,20 +508,20 @@ MSG_INSERT_USER_CANCEL=Cancel
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MEDIA=Gemiddelde:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Speler
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_TITLE=Download
+SCORE_DOWNLOAD_SONG=Lied:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_RECEIVE_LIST=Downloaden...
SCORE_DOWNLOAD_CANCEL=Cancel
-;TODO: SCORE_DOWNLOAD_OK=OK
+SCORE_DOWNLOAD_OK=OK
;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Volgende spelers aan de Microfoon
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -607,17 +558,15 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Volgende spelers aan de Microfoon
;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-;TODO: SONG_MENU_SONG=Song
+SONG_MENU_SONG=Lied
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Liedjes Menu
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
SONG_MENU_ADD_SONG=Voeg een liedje toe
SONG_MENU_DELETE_SONG=Verwijder Liedje
-;TODO: SONG_MENU_START_MEDLEY=Sing!
-;TODO: SONG_MENU_START_5_MEDLEY=Sing %0:d Songs!
+SONG_MENU_START_MEDLEY=Zingen!
+SONG_MENU_START_5_MEDLEY=Zingen %0:d lied!
;TODO: SONG_MENU_NAME_SORTING=Sort Menu
;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
@@ -635,9 +584,10 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Resolutie
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Effecten
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Helderheid
+SING_OPTIONS_WEBCAM_SATURATION=Verzadiging
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Activeer preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -648,7 +598,7 @@ SING_OPTIONS_WEBCAM_EFFECT=Effecten
;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Drempelwaarde
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+SING_OPTIONS_WEBCAM_EFFECT_EDGES=Randen
;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
@@ -663,54 +613,54 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Drempelwaarde
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Aantal spelers
+NAME_CURRENT_PLAYER=Speler
SING_OPTIONS_GAME_SONGMENU=Liedjes Menu
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Roulette
+OPTION_VALUE_CHESSBOARD=Schaakbord
+OPTION_VALUE_CAROUSEL=Carrousel
+OPTION_VALUE_SLOT_MACHINE=Gokautomaat
+OPTION_VALUE_LIST=Lijst
+OPTION_VALUE_MOSAIC=Tegel
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Zing
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+ OPTION_VALUE_ACTUAL=Bovenste
+OPTION_VALUE_NEXT=Bodem
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_GRAY=Grijs
+OPTION_VALUE_WHITE=Wit
+OPTION_VALUE_TURQUOISE=Turkoois
+OPTION_VALUE_SALMON=Zalm
+OPTION_VALUE_GREENYELLOW=Groen Geel
+OPTION_VALUE_LAVENDER=Lavendel
+OPTION_VALUE_BEIGE=Beige
;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+OPTION_VALUE_ORCHID=Orchidee
+OPTION_VALUE_STEELBLUE=Staal blauw
+OPTION_VALUE_PLUM=Pruim
+OPTION_VALUE_CHOCOLATE=Chocola
+OPTION_VALUE_GOLD=Goud
+OPTION_VALUE_DARKBLUE=Donkerblauw
+OPTION_VALUE_SKY=Hemel
+OPTION_VALUE_HARLEQUIN=Harlekijn
;TODO: OPTION_VALUE_CYAN=Cyan
;TODO: OPTION_VALUE_FLAME=Flame
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+JUKEBOX_SONGOPTIONS_VIDEO=Video-opties
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparantie
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Kleur
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -729,7 +679,7 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Kleur
;TODO: SING_SONG_CREDITS=Credits
;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
+SING_JUKEBOX_DESC=Luister naar mijn verzameling
;TODO: JUKEBOX_MODE=Jukebox Mode
;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
@@ -739,12 +689,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Playlist
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Alles
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Speler
+
+SING_ABOUT=Over
+SING_ABOUT_DESC=Over Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Over...
+ABOUT_USDX_DEVELOPEDBY=Ontwikkeld door
+ABOUT_CHECK_CHECKING=Controleren op nieuwe update...
+ABOUT_CHECK_AVAILABLE=Er is een nieuwe versie beschikbaar
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+ABOUT_CHECK_CONNECTION=Er is geen internetverbinding
+ABOUT_OVERVIEW=Ontdek een nieuwe manier van zingen, alleen, in een stel of met vrienden. \n Plezier is gegarandeerd.\n\nWorldParty is een fork van de originele versie Ultrastar Deluxe 1.1 ontworpen en ontwikkeld door UltraStar España team, het telt met de grootste karaoke-gemeenschap.\n\n\nDit programma is gratis en libre onder de GPL-licentie. \n\n Bezoek ons voor meer informatie.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Ontwikkeld door
+DEVELOPERS_OVERVIEW=Mensen die hebben bijgedragen aan dit project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Bezoek ons voor meer informatie.\n\nhttps://ultrastar-es.org
diff --git a/game/languages/Norsk.ini b/game/languages/Norsk.ini
index 9a590960..19592b66 100644
--- a/game/languages/Norsk.ini
+++ b/game/languages/Norsk.ini
@@ -5,225 +5,210 @@ OPTION_VALUE_EASY=Lett
OPTION_VALUE_MEDIUM=Moderat
OPTION_VALUE_HARD=Vanskelig
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+OPTION_VALUE_ON=På
+OPTION_VALUE_OFF=Av
;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_GENRE=Sjanger
OPTION_VALUE_LANGUAGE=Språk
OPTION_VALUE_FOLDER=Mappe
OPTION_VALUE_TITLE=Tittel
OPTION_VALUE_ARTIST=Artist
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_TITLE2=Tittle2
+OPTION_VALUE_ARTIST2=Artist2
+OPTION_VALUE_YEAR=År
+OPTION_VALUE_DECADE=Tiår
OPTION_VALUE_PLAYLIST=Spillelist
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maksimert
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Når ingen video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Når ingen video og bilde
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
+OPTION_VALUE_SMALL=Liten
+OPTION_VALUE_BIG=Stor
-;TODO: OPTION_VALUE_HALF=Half
-;TODO: OPTION_VALUE_FULL_VID=Full (Video)
-;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+OPTION_VALUE_HALF=Halv
+OPTION_VALUE_FULL_VID=Full (Video)
+OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
;TODO: OPTION_VALUE_GAIN_SOFT=Soft
;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
;TODO: OPTION_VALUE_GAIN_HARD=Hard
-;TODO: OPTION_VALUE_AUTO=Auto
-;TODO: OPTION_VALUE_SEC=Second
-;TODO: OPTION_VALUE_SECS=Seconds
+OPTION_VALUE_AUTO=Auto
+OPTION_VALUE_SEC=Sekund
+OPTION_VALUE_SECS=Sekunder
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Stilisert
+OPTION_VALUE_OLINE1=Med tynn kant
+OPTION_VALUE_OLINE2=Med tykk kant
-;TODO: OPTION_VALUE_SIMPLE=Simple
-;TODO: OPTION_VALUE_ZOOM=Zoom
+OPTION_VALUE_SIMPLE=Enkel
+OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Ball
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
-
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
-
-OPTION_VALUE_SING=syng
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
+OPTION_VALUE_EURO=Euro
+OPTION_VALUE_JAPAN=Japan
+OPTION_VALUE_AMERICAN=Amerikansk
-SING_LOADING=Laster...
+OPTION_VALUE_BLUE=Blå
+OPTION_VALUE_GREEN=Grønn
+OPTION_VALUE_PINK=Rosa
+OPTION_VALUE_RED=Rød
+OPTION_VALUE_VIOLET=Violet
+OPTION_VALUE_ORANGE=Oransje
+OPTION_VALUE_YELLOW=Gul
+OPTION_VALUE_BROWN=Brun
+OPTION_VALUE_BLACK=Svart
+
+OPTION_VALUE_SING=Syng
+OPTION_VALUE_SELECT_PLAYERS=Velg spillere
+OPTION_VALUE_OPEN_MENU=Åpne menyen
-SING_CHOOSE_MODE=velg modus
-SING_SING=syng
-SING_SING_DESC=hurtigspill: syng solo eller duett
+SING_LOADING=Laster...
+SING_LOADING_SONGS=Laster inn sanger fra mappe %s
-SING_MULTI=party
-SING_MULTI_DESC=syng i party-modus
+SING_CHOOSE_MODE=Velg modus
+SING_SING=Syng
+SING_SING_DESC=Hurtigspill: syng solo eller duett
-SING_TOOLS=verktøy
+SING_MULTI=Party
+SING_MULTI_DESC=Syng i party-modus
-SING_STATS=statistikk
-SING_STATS_DESC=vis statistikk
+SING_TOOLS=Verktøy
-SING_EDITOR=editor
-SING_EDITOR_DESC=lag dine egne sanger
+SING_STATS=Statistikk
+SING_STATS_DESC=Vis statistikk
-SING_GAME_OPTIONS=spillinnstillinger
-SING_GAME_OPTIONS_DESC=endre spillinstillinger
+SING_GAME_OPTIONS=Spillinnstillinger
+SING_GAME_OPTIONS_DESC=Endre spillinstillinger
-SING_EXIT=avslutt
-SING_EXIT_DESC=avslutt spillet
+SING_EXIT=Avslutt
+SING_EXIT_DESC=Avslutt spillet
-SING_OPTIONS=innstillinger
-SING_OPTIONS_DESC=endre innstillinger
+SING_OPTIONS=Innstillinger
+SING_OPTIONS_DESC=Endre innstillinger
SING_OPTIONS_WHEREAMI=Innstillinger
-SING_OPTIONS_GAME=spill
-SING_OPTIONS_GRAPHICS=grafikk
-SING_OPTIONS_SOUND=lyd
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=tekst
-SING_OPTIONS_THEMES=utseende
-SING_OPTIONS_RECORD=opptak
-SING_OPTIONS_ADVANCED=avansert
-SING_OPTIONS_EXIT=tilbake
+SING_OPTIONS_GAME=Spill
+SING_OPTIONS_GRAPHICS=Grafikk
+SING_OPTIONS_SOUND=Lyd
+SING_OPTIONS_LYRICS=Tekst
+SING_OPTIONS_THEMES=Utseende
+SING_OPTIONS_MICROPHONES=Opptak
+SING_OPTIONS_ADVANCED=Avansert
+SING_OPTIONS_EXIT=Tilbake
SING_OPTIONS_GAME_WHEREAMI=Innstillinger Spill
-SING_OPTIONS_GAME_DESC=hovedspillinnstillinger
+SING_OPTIONS_GAME_DESC=Hovedspillinnstillinger
SING_OPTIONS_GAME_PLAYERS=Spillere
SING_OPTIONS_GAME_DIFFICULTY=Vanskelighet
SING_OPTIONS_GAME_LANGUAGE=Språk
SING_OPTIONS_GAME_TABS=Mappeinndeling
SING_OPTIONS_GAME_SORTING=Sortering
-SING_OPTIONS_GAME_DEBUG=Feilsøking
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktiver gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Innstillinger Grafikk
SING_OPTIONS_GRAPHICS_DESC=Grafiske innstillinger
SING_OPTIONS_GRAPHICS_RESOLUTION=Oppløsning
SING_OPTIONS_GRAPHICS_FULLSCREEN=Fullskjerm
-SING_OPTIONS_GRAPHICS_DEPTH=Fargedybde
-;TODO: SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop
+SING_OPTIONS_GRAPHICS_EFFECTSING=Sangeffekter
+SING_OPTIONS_GRAPHICS_SCREENFADE=Skjermfading
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animasjonslasting
+SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisering
SING_OPTIONS_GRAPHICS_LINEBONUS=Linjebonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmstørrelse
SING_OPTIONS_SOUND_WHEREAMI=Innstillinger Lyd
-SING_OPTIONS_SOUND_DESC=lydinnstillinger
-;TODO: SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-;TODO: SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Mikrofon-gain
+SING_OPTIONS_SOUND_DESC=Lydinnstillinger
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Hør stemmen min
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Bakgrunnsmusikk
SING_OPTIONS_SOUND_CLICK_ASSIST=Klikke-assistanse
SING_OPTIONS_SOUND_BEAT_CLICK=Beat-klikk
-SING_OPTIONS_SOUND_THRESHOLD=Toleransegrense
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tospiller-modus
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview-volum
SING_OPTIONS_SOUND_PREVIEWFADING=Preview-fading
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Innstillinger Tekst
-SING_OPTIONS_LYRICS_DESC=tekstinnstillinger
+SING_OPTIONS_LYRICS_DESC=Tekstinnstillinger
SING_OPTIONS_LYRICS_FONT=Fonter
SING_OPTIONS_LYRICS_EFFECT=Effekter
SING_OPTIONS_LYRICS_SOLMIZATION=Solmisasjon
;TODO: SING_OPTIONS_LYRICS_NOTELINES=Staves
SING_OPTIONS_THEMES_WHEREAMI=Innstillinger Utseende
-SING_OPTIONS_THEMES_DESC=tema og skin-innstillinger
+SING_OPTIONS_THEMES_DESC=Tema og skin-innstillinger
SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Farge
-SING_OPTIONS_RECORD_WHEREAMI=Innstillinger Opptak
-SING_OPTIONS_RECORD_DESC=mikrofoninnstillinger
-SING_OPTIONS_RECORD_CARD=Lydkort
-SING_OPTIONS_RECORD_INPUT=Input
-SING_OPTIONS_RECORD_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Innstillinger Opptak
+SING_OPTIONS_MICROPHONES_DESC=Mikrofoninnstillinger
+SING_OPTIONS_MICROPHONES_CARD=Lydkort
+SING_OPTIONS_MICROPHONES_INPUT=Input
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Toleransegrense
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikrofon-gain
SING_OPTIONS_ADVANCED_WHEREAMI=Innstillinger Avansert
-SING_OPTIONS_ADVANCED_DESC=avanserte innstillinger
-SING_OPTIONS_ADVANCED_EFFECTSING=Sangeffekter
-SING_OPTIONS_ADVANCED_SCREENFADE=Skjermfading
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animasjonslasting
+SING_OPTIONS_ADVANCED_DESC=Avanserte innstillinger
+SING_OPTIONS_ADVANCED_DEBUG=Feilsøking
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Sikkerhetsspørsmål
SING_OPTIONS_ADVANCED_LINEBONUS=Linjebonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Etter sang:
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto partymeny
-SING_EDIT=editor
-SING_EDIT_MENU_DESCRIPTION=lag dine egne sanger
-
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Import text from midi file
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=tilbake
-;TODO: SING_EDIT_BUTTON_CONVERT=Import
-SING_EDIT_BUTTON_EXIT=tilbake
-SING_EDIT_NAVIGATE=naviger
-SING_EDIT_SELECT=velg
-SING_EDIT_EXIT=tilbake
+SING_LEGEND_SELECT=Velg
+SING_LEGEND_NAVIGATE=Naviger
+SING_LEGEND_CONTINUE=Fortsett
+SING_LEGEND_ESC=Tilbake
-SING_LEGEND_SELECT=velg
-SING_LEGEND_NAVIGATE=naviger
-SING_LEGEND_CONTINUE=fortsett
-SING_LEGEND_ESC=tilbake
+SING_PLAYER_TITLE=Profiler
+SING_PLAYER_READY=Spillere klar til å synge
+SING_PLAYER_COUNT=Antall spillere
+SING_PLAYER_EDIT=Tilpass en spiller
+SING_PLAYER_NAME=Skriv ditt navn
+SING_PLAYER_COLOR=Velg en farge
+SING_PLAYER_LEVEL=Velg et nivå
+SING_PLAYER_AVATAR=Velg avataren din
-SING_PLAYER_DESC=velg spillernavn
-SING_PLAYER_WHEREAMI=Spillernavn
-SING_PLAYER_ENTER_NAME=velg navn
-
-SING_DIFFICULTY_DESC=velg vanskelighetsgrad
+SING_DIFFICULTY_DESC=Velg vanskelighetsgrad
SING_DIFFICULTY_WHEREAMI=Vanskelighet
-SING_DIFFICULTY_CONTINUE=til sangvalg
+SING_DIFFICULTY_CONTINUE=Til sangvalg
SING_EASY=Lett
SING_MEDIUM=Moderat
SING_HARD=Vanskelig
-SING_SONG_SELECTION_DESC=velg sang
+SING_SONG_SELECTION_DESC=Velg sang
SING_SONG_SELECTION_WHEREAMI=Sangvalg
-SING_SONG_SELECTION_GOTO=gå til ..
+SING_SONG_SELECTION_GOTO=Gå til ..
SING_SONG_SELECTION=Sangvalg
-SING_SONG_SELECTION_MENU=meny
-SING_SONG_SELECTION_PLAYLIST=spilleliste
+SING_SONG_SELECTION_MENU=Meny
+SING_SONG_SELECTION_PLAYLIST=Spilleliste
+SING_SONG_IN_CAT=Sang
SING_SONGS_IN_CAT=Sanger
PLAYLIST_CATTEXT=Spilleliste: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=total
-SING_MODE=syng solo
-SING_NOTES=toner
-SING_GOLDEN_NOTES=gyldne noter
-SING_PHRASE_BONUS=linjebonus
+SING_SONG_SELECTION_LEGEND_TITLE=Legende
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duett
+
+SING_TOTAL=Total
+SING_MODE=Syng solo
+SING_NOTES=Toner
+SING_GOLDEN_NOTES=Gyldne noter
+SING_PHRASE_BONUS=Linjebonus
SING_MENU=Hovedmeny
-SONG_SCORE=sangscore
+SONG_SCORE=Sangscore
SONG_SCORE_WHEREAMI=Score
SING_SCORE_TONE_DEAF=Tonedøv
@@ -235,27 +220,26 @@ SING_SCORE_LEAD_SINGER=Toppvokalist
SING_SCORE_SUPERSTAR=Superstjerne
SING_SCORE_ULTRASTAR=Ultrastjerne
-SING_TOP_5_CHARTS=topp 5 spillere
-SING_TOP_5_CHARTS_WHEREAMI=topp 5
-SING_TOP_5_CHARTS_CONTINUE=til sangvalg
+SING_TOP_5_CHARTS=Topp 5 spillere
+SING_TOP_5_CHARTS_WHEREAMI=Topp 5
+SING_TOP_5_CHARTS_CONTINUE=Til sangvalg
;TODO: SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=perfekt!
-POPUP_AWESOME=fantastisk!
-POPUP_GREAT=kjempebra!
-POPUP_GOOD=bra!
-POPUP_NOTBAD=brukbart!
-POPUP_BAD=dårlig!
-POPUP_POOR=elendig!
-POPUP_AWFUL=grusomt!
+POPUP_PERFECT=Perfekt!
+POPUP_AWESOME=Fantastisk!
+POPUP_GREAT=Kjempebra!
+POPUP_GOOD=Bra!
+POPUP_NOTBAD=Brukbart!
+POPUP_BAD=Dårlig!
+POPUP_POOR=Elendig!
+POPUP_AWFUL=Grusomt!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= og
-SONG_MENU_NAME_MAIN=sangmeny
+SONG_MENU_NAME_MAIN=Sangmeny
SONG_MENU_PLAY=Syng
SONG_MENU_CHANGEPLAYERS=Endre spillere
-SONG_MENU_EDIT=Endre
SONG_MENU_MODI=Syng en modus
SONG_MENU_CANCEL=AVbryt
@@ -264,9 +248,9 @@ SONG_MENU_PLAYLIST_ADD=Legg til sang
SONG_MENU_PLAYLIST_DEL=Ta bort sang
SONG_MENU_NAME_PLAYLIST_ADD=Legg til sang
-SONG_MENU_PLAYLIST_ADD_NEW=til ny spilleliste
-SONG_MENU_PLAYLIST_ADD_EXISTING=til eksisterende spilleliste
-SONG_MENU_PLAYLIST_NOEXISTING=ingen spilleliste eksisterer
+SONG_MENU_PLAYLIST_ADD_NEW=Til ny spilleliste
+SONG_MENU_PLAYLIST_ADD_EXISTING=Til eksisterende spilleliste
+SONG_MENU_PLAYLIST_NOEXISTING=Ingen spilleliste eksisterer
SONG_MENU_NAME_PLAYLIST_NEW=Ny spilleliste
SONG_MENU_PLAYLIST_NEW_CREATE=Opprett
@@ -278,16 +262,16 @@ SONG_MENU_NO=Nei
SONG_MENU_NAME_PLAYLIST_LOAD=Åpne spilleliste
SONG_MENU_PLAYLIST_LOAD=åpne
-SONG_MENU_PLAYLIST_DELCURRENT=slett nåværende spilleliste
+SONG_MENU_PLAYLIST_DELCURRENT=Slett nåværende spilleliste
SONG_MENU_NAME_PLAYLIST_DEL=Slett spilleliste?
SONG_MENU_NAME_PARTY_MAIN=Partymeny
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=bruk joker
+SONG_MENU_NAME_PARTY_JOKER=Bruk joker
-SONG_JUMPTO_DESC=søk etter sang
+SONG_JUMPTO_DESC=Søk etter sang
SONG_JUMPTO_TYPE_DESC=Søk etter:
SONG_JUMPTO_TYPE1=Alt
SONG_JUMPTO_TYPE2=Tittel
@@ -313,43 +297,43 @@ PARTY_LEGEND_CONTINUE=Fortsett
PARTY_OPTIONS_DESC=Innstillinger for party-spillet
PARTY_OPTIONS_WHEREAMI=Party-innstillinger
-PARTY_PLAYER_DESC=skriv spiller- og lagnavn!
+PARTY_PLAYER_DESC=Skriv spiller- og lagnavn!
PARTY_PLAYER_WHEREAMI=Party-navn
-PARTY_PLAYER_ENTER_NAME=skriv navn
+PARTY_PLAYER_ENTER_NAME=Skriv navn
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
+PARTY_ROUNDS_DESC=Velg hvilke moduser du vil spille
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
;TODO: PARTY_ROUNDS_LEGEND_CONTINUE=Start party-game
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDCOUNT=Antall runder
+PARTY_SELECTMODE=Rund %d
-PARTY_ROUND_DESC=neste spillere til mikrofonene
+PARTY_ROUND_DESC=Neste spillere til mikrofonene
PARTY_ROUND_WHEREAMI=Party neste runde
-PARTY_ROUND_LEGEND_CONTINUE=start runden
+PARTY_ROUND_LEGEND_CONTINUE=Start runden
PARTY_SONG_WHEREAMI=Party sangvalg
-PARTY_SONG_LEGEND_CONTINUE=syng
-PARTY_SONG_MENU=partymeny
+PARTY_SONG_LEGEND_CONTINUE=Syng
+PARTY_SONG_MENU=Partymeny
PARTY_SCORE_DESC=Siste rundes poengsum
PARTY_SCORE_WHEREAMI=Partypoeng
-PARTY_WIN_DESC=vinner av partyspillet
+PARTY_WIN_DESC=Vinner av partyspillet
PARTY_WIN_WHEREAMI=Party-vinner
-PARTY_WIN_LEGEND_CONTINUE=tilbake til hovedmenyen
+PARTY_WIN_LEGEND_CONTINUE=Tilbake til hovedmenyen
PARTY_ROUND=Runde
PARTY_ROUND_WINNER=Vinner
PARTY_NOTPLAYEDYET=Ikke spilt ennå
-PARTY_NOBODY=ingen
+PARTY_NOBODY=Ingen
NEXT_ROUND=Neste runde:
PARTY_DISMISSED=Avbrutt!
PARTY_SCORE_WINS=%s
PARTY_SCORE_WINS2=Vinner!
-;TODO: MODE_RANDOM_NAME=Random Mode
+MODE_RANDOM_NAME=Tilfeldig modus
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
MODE_HOLDTHELINE_NAME=Hold linja
@@ -358,22 +342,22 @@ MODE_HOLDTHELINE_NAME=Hold linja
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Før 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Blind 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Først til 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Blind 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Før 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Blind 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duell
@@ -391,13 +375,13 @@ MODE_BLIND_NAME=Blindemodus
;TODO: MODE_1000BLIND_NAME = +1000 Blind
;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
-;TODO: MODE_DEAF_NAME = Deaf
+MODE_DEAF_NAME = Døv
;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Blind
;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +406,7 @@ STAT_DETAIL_WHEREAMI=Detaljert statistikk
STAT_NEXT=Neste side
STAT_PREV=Forrige side
STAT_REVERSE=Bytt rekkefølge
-STAT_PAGE=Side %0:d av %1:d Sider\n (%2:d av %3:d )
+STAT_PAGE=Side %0:d av %1:d \n Poster %2:d av %3:d
STAT_DESC_SCORES=Toppscore
STAT_DESC_SCORES_REVERSED=Bunnscore
@@ -448,7 +432,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx Sunget
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Feil
;TODO: MSG_INFO_TITLE=Information
@@ -465,20 +448,19 @@ ERROR_CORRUPT_SONG=Sangen kunne ikke lastes
;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Spiller %d er tilordnet flere mikrofoner. Vennligst sjekk mikrofonene dine
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Spiller %d er ikke tilordnet en mikrofon. Vennligst sjekk mikrofonene dine
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Internett
+SING_OPTIONS_NETWORK_WHEREAMI=Internett instillinger
+SING_OPTIONS_NETWORK_DESC=Internett-generelle innstillinger
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Brukernavn
+SING_OPTIONS_NETWORK_PASSWORD=Passord
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Spiller
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,18 +469,18 @@ ERROR_CORRUPT_SONG=Sangen kunne ikke lastes
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Spiller 1
+OPTION_PLAYER_2=Spiller 2
+OPTION_PLAYER_3=Spiller 3
+OPTION_PLAYER_4=Spiller 4
+OPTION_PLAYER_5=Spiller 5
+OPTION_PLAYER_6=Spiller 6
OPTION_ALL_PLAYERS=Alt
OPTION_ALL_SCORES=Alt
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
;TODO: MSG_INSERT_USER_ADD=Add
MSG_INSERT_USER_CANCEL=AVbryt
@@ -526,8 +508,8 @@ MSG_INSERT_USER_CANCEL=AVbryt
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MAX=Beste:
+SONG_SCORE_MEDIA=Gjennomsnitt:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
@@ -535,9 +517,9 @@ MSG_INSERT_USER_CANCEL=AVbryt
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+SCORE_DOWNLOAD_TITLE=Nedlasting
+SCORE_DOWNLOAD_SONG=Sang:
+SCORE_DOWNLOAD_CREATE_LIST=Forbereder liste...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=AVbryt
;TODO: SCORE_DOWNLOAD_OK=OK
@@ -561,40 +543,10 @@ SCORE_DOWNLOAD_CANCEL=AVbryt
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=neste spillere til mikrofonene
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Neste spillere til mikrofonene
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -607,10 +559,8 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=neste spillere til mikrofonene
;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-;TODO: SONG_MENU_SONG=Song
+SONG_MENU_SONG=Sang
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Sangmeny
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -635,9 +585,10 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Oppløsning
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Effekter
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Lysstyrke
+SING_OPTIONS_WEBCAM_SATURATION=Metning
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Aktiver forhåndsvisning
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,42 +614,42 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Toleransegrense
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Antall spillere
+NAME_CURRENT_PLAYER=Spiller
SING_OPTIONS_GAME_SONGMENU=Sangmeny
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
+OPTION_VALUE_ROULETTE=Rulett
+OPTION_VALUE_CHESSBOARD=Sjakkbrett
+OPTION_VALUE_CAROUSEL=Carousel
+OPTION_VALUE_SLOT_MACHINE=Spilleautomat
+OPTION_VALUE_LIST=Liste
;TODO: OPTION_VALUE_MOSAIC=Tile
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-OPTION_VALUE_TO_SING=syng
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_TO_SING=Syng
+OPTION_VALUE_ACTUAL=Øverste
+OPTION_VALUE_NEXT=Bunn
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_GRAY=Grå
+OPTION_VALUE_WHITE=Hvit
+OPTION_VALUE_TURQUOISE=Turkis
+OPTION_VALUE_SALMON=Laks
+OPTION_VALUE_GREENYELLOW=Grønn gul
+OPTION_VALUE_LAVENDER=Lavendel
+OPTION_VALUE_BEIGE=Beige
;TODO: OPTION_VALUE_TEAL=Teal
;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+OPTION_VALUE_STEELBLUE=Stålblå
;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
+OPTION_VALUE_CHOCOLATE=Sjokolade
+OPTION_VALUE_GOLD=Gull
+OPTION_VALUE_DARKBLUE=Mørke blå
+OPTION_VALUE_SKY=Himmel
;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
;TODO: OPTION_VALUE_CYAN=Cyan
;TODO: OPTION_VALUE_FLAME=Flame
@@ -708,15 +659,15 @@ OPTION_VALUE_TO_SING=syng
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Størrelse
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farge
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rød
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Grønn
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blå
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -739,12 +690,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Spillelist
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Alt
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Spiller
+
+SING_ABOUT=Handle om
+SING_ABOUT_DESC=Handle om Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Handle om...
+ABOUT_USDX_DEVELOPEDBY=Utviklet av
+ABOUT_CHECK_CHECKING=Sjekker etter nye oppdateringer...
+ABOUT_CHECK_AVAILABLE=Det er en ny versjon tilgjengelig
+ABOUT_CHECK_UPTODATE=WorldParty er oppdatert
+ABOUT_CHECK_CONNECTION=Det er ingen Internett-tilkobling
+ABOUT_OVERVIEW=Oppdag en ny måte å synge, alene, i par eller med venner. \n Moro er garantert.\n\nWorldParty er en fork av den opprinnelige versjonen Ultrastar Deluxe 1.1 designet og utviklet av UltraStar España-laget, teller det med det største karaoke-fellesskapet.\n\n\nDette programmet er gratis og libre under GPL-lisensen. \n\n Besøk oss for mer informasjon.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Utviklet av
+DEVELOPERS_OVERVIEW=Folk som har bidratt til dette prosjektet:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Besøk oss for mer informasjon.\n\nhttps://ultrastar-es.org
diff --git a/game/languages/Polski.ini b/game/languages/Polski.ini
index 9b7a3ce6..9d0a9b35 100644
--- a/game/languages/Polski.ini
+++ b/game/languages/Polski.ini
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Śpiew
OPTION_VALUE_SELECT_PLAYERS=Wybierz graczy
OPTION_VALUE_OPEN_MENU=Otwórz Menu
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Sprzętowy Kursor
-OPTION_VALUE_SOFTWARE_CURSOR=Programowy Kursor
-
SING_LOADING=Wczytywanie...
+SING_LOADING_SONGS=Ładowanie utworów z folderu %s
SING_CHOOSE_MODE=Wybierz tryb
SING_SING=Śpiewaj
@@ -87,9 +83,6 @@ SING_TOOLS=Narzędzia
SING_STATS=Statystyki
SING_STATS_DESC=Zobacz statystyki
-SING_EDITOR=Edytor
-SING_EDITOR_DESC=Stwórz własną piosenkę
-
SING_GAME_OPTIONS=Opcje gry
SING_GAME_OPTIONS_DESC=Zmiana ustawień gry
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Opcje
SING_OPTIONS_GAME=Gra
SING_OPTIONS_GRAPHICS=Grafika
SING_OPTIONS_SOUND=Dźwięk
-SING_OPTIONS_INPUT=Wejścia
SING_OPTIONS_LYRICS=Tekst
SING_OPTIONS_THEMES=Style
-SING_OPTIONS_RECORD=Nagrywanie
+SING_OPTIONS_MICROPHONES=Nagrywanie
SING_OPTIONS_ADVANCED=Zaawansow.
SING_OPTIONS_EXIT=Wstecz
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Trudność
SING_OPTIONS_GAME_LANGUAGE=Język
SING_OPTIONS_GAME_TABS=Zakładki
SING_OPTIONS_GAME_SORTING=Sortowanie
-SING_OPTIONS_GAME_DEBUG=Debug
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktywuj gamepada
SING_OPTIONS_GRAPHICS_WHEREAMI=Opcje Grafiki
SING_OPTIONS_GRAPHICS_DESC=Ustawienia grafiki
SING_OPTIONS_GRAPHICS_RESOLUTION=Rozdzielczość
SING_OPTIONS_GRAPHICS_FULLSCREEN=Pełny ekran
-SING_OPTIONS_GRAPHICS_DEPTH=Głębia
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efekty śpiewania
+SING_OPTIONS_GRAPHICS_SCREENFADE=Przenikanie ekranów
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animacja wczytywania
SING_OPTIONS_GRAPHICS_VISUALIZER=Wizualizacja
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscyloskop
SING_OPTIONS_GRAPHICS_LINEBONUS=Linia bonusu
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Rozmiar filmu
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Opcje dźwięku
SING_OPTIONS_SOUND_DESC=Ustawienia dźwięku
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Podkład mikrofonu
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Podkład muzyczny
-SING_OPTIONS_SOUND_MIC_BOOST=Podbicie mikrofonu
SING_OPTIONS_SOUND_CLICK_ASSIST=Pomoc kliknięciami
SING_OPTIONS_SOUND_BEAT_CLICK=Kliknięcia w rytm
-SING_OPTIONS_SOUND_THRESHOLD=Próg
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tryb dwóch graczy
SING_OPTIONS_SOUND_MUSICAUTOGAIN=Przyrost muzyki
SING_OPTIONS_SOUND_PREVIEWVOLUME=Głośność w podglądzie
SING_OPTIONS_SOUND_PREVIEWFADING=Zanikanie w podglądzie
-SING_OPTIONS_INPUT_WHEREAMI=Opcje wejść
-SING_OPTIONS_INPUT_DESC=Ustawienia wejść
-SING_OPTIONS_INPUT_MOUSE=Mysz
-SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Wsparcie kontrolera
-
SING_OPTIONS_LYRICS_WHEREAMI=Opcje tekstu
SING_OPTIONS_LYRICS_DESC=Ustawienie tekstu
SING_OPTIONS_LYRICS_FONT=Czcionka
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Styl
SING_OPTIONS_THEMES_SKIN=Skórka
SING_OPTIONS_THEMES_COLOR=Kolor
-SING_OPTIONS_RECORD_WHEREAMI=Opcje nagrywania
-SING_OPTIONS_RECORD_DESC=Ustawienia mikrofonu
-SING_OPTIONS_RECORD_CARD=Karta muzyczna
-SING_OPTIONS_RECORD_INPUT=Wejście
-SING_OPTIONS_RECORD_CHANNEL=Kanał
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opcje nagrywania
+SING_OPTIONS_MICROPHONES_DESC=Ustawienia mikrofonu
+SING_OPTIONS_MICROPHONES_CARD=Karta muzyczna
+SING_OPTIONS_MICROPHONES_INPUT=Wejście
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanał
+SING_OPTIONS_MICROPHONES_THRESHOLD=Próg
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Podbicie mikrofonu
SING_OPTIONS_ADVANCED_WHEREAMI=Opcje zaawansowane
SING_OPTIONS_ADVANCED_DESC=Zaawansowane ustawienia
-SING_OPTIONS_ADVANCED_EFFECTSING=Efekty śpiewania
-SING_OPTIONS_ADVANCED_SCREENFADE=Przenikanie ekranów
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animacja wczytywania
+SING_OPTIONS_ADVANCED_DEBUG=Debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscyloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Pytania pomocnicze
SING_OPTIONS_ADVANCED_LINEBONUS=Linia bonusu
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Po wybraniu piosenki
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
-SING_EDIT=Edytor
-SING_EDIT_MENU_DESCRIPTION=Stwórz własną piosenkę
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Zaimportuj tekst z pliku midi
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Wstecz
-SING_EDIT_BUTTON_CONVERT=Import
-SING_EDIT_BUTTON_EXIT=Wstecz
-
-SING_EDIT_NAVIGATE=Nawiguj
-SING_EDIT_SELECT=Wybierz
-SING_EDIT_EXIT=Wstecz
-
SING_LEGEND_SELECT=Wybierz
SING_LEGEND_NAVIGATE=Nawiguj
SING_LEGEND_CONTINUE=Kontynuacja
SING_LEGEND_ESC=Wstecz
-SING_PLAYER_DESC=Wpisz nazwę gracza/y
-SING_PLAYER_WHEREAMI=Nazwa graczy
-SING_PLAYER_ENTER_NAME=Wpisz nazwę
+;TODO: SING_PLAYER_TITLE=Profiles
+SING_PLAYER_READY=Gracze gotowi do śpiewania
+SING_PLAYER_COUNT=Liczba graczy
+SING_PLAYER_EDIT=Dostosuj gracza
+SING_PLAYER_NAME=Napisz swoje imię
+SING_PLAYER_COLOR=Wybierz kolor
+SING_PLAYER_LEVEL=Wybierz poziom
+SING_PLAYER_AVATAR=Wybierz swój awatar
SING_DIFFICULTY_DESC=Wybierz trudność
SING_DIFFICULTY_WHEREAMI=Trudność
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Idź do ..
SING_SONG_SELECTION=Wybór piosenki
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Playlista
+SING_SONG_IN_CAT=Piosenka
SING_SONGS_IN_CAT=Piosenki
PLAYLIST_CATTEXT=Playlista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Wideo
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=Cały
SING_MODE=Śpiewaj solo
SING_NOTES=Nuty
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= oraz
SONG_MENU_NAME_MAIN=Menu piosenki
SONG_MENU_PLAY=Śpiewaj
SONG_MENU_CHANGEPLAYERS=Zmień graczy
-SONG_MENU_EDIT=Edytuj
SONG_MENU_MODI=Śpiewaj Modi
SONG_MENU_CANCEL=Anuluj
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_DESC=Utrzymaj swój wynik powyżej linii jak najdłużej!
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
MODE_HOLDTHELINEBLIND_DESC=Utrzymaj swój wynik powyżej linii jak najdłużej, ale z ukrytymi nutami!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Aż do 7000
MODE_7000POINTS_DESC=Wyścig do 7000 punktów!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Ślepy 7000
MODE_7000POINTSBLIND_DESC=Wyścig do 7000 punktów, ale bez patrzenia na nuty!
MODE_5000POINTS_NAME=Do 5000
MODE_5000POINTS_DESC=Wyścig do 5000 punktów!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Ślepy 5000
MODE_5000POINTSBLIND_DESC=Wyścig do 5000 punktów, ale bez patrzenia na nuty!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Aż do 2000
MODE_2000POINTS_DESC=Wyścig do 2000 punktów!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Ślepy 2000
MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Pojedynek
@@ -388,16 +371,16 @@ MODE_BLIND_DESC=Pojedynek 1v1, ale z ukrytymi nutami!
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
MODE_BLINDTOTAL_DESC=Pojedynek, ale z ukrytymi nutami i napisami. Tylko dla odważnych!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
+MODE_1000BLIND_NAME = +1000 Ślepy
MODE_1000BLIND_DESC = Uzbieraj ponad 1000 punktów, ale z ukrytymi nutami!
-;TODO: MODE_DEAF_NAME = Deaf
+MODE_DEAF_NAME = Głuchy
MODE_DEAF_DESC = Myślisz że znasz nuty? Czy zaśpiewasz bez akompaniamentu?
MODE_BLINDLYRICS_NAME = Bez Napisów
MODE_BLINDLYRICS_DESC = Myślisz że znasz tekst? Zaśpiewaj bez patrzenia na napisy!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Ślepy
MODE_500BLIND_DESC = Uzbieraj ponad 500 punktów, ale z ukrytymi nutami!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Statystyki szczegółowe
STAT_NEXT=Następna strona
STAT_PREV=Poprzednia strona
STAT_REVERSE=Odwróć kolejność
-STAT_PAGE=strona %0:d z %1:d stron\n (%2:d z %3:d wpisów)
+STAT_PAGE=Strona %0:d z %1:d \n Wpisów %2:d z %3:d
STAT_DESC_SCORES=Najwyższe wyniki
STAT_DESC_SCORES_REVERSED=Najniższe wyniki
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Nie mogę zapisać pliku
ERROR_FILE_NOT_FOUND=Plik nieznaleziony
ENCODING_ERROR_ASK_FOR_UTF8=Nie mogę zapisać zmian w obecnym kodowaniu. Skonwertuj na UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Nie zaznaczona ścieżka
MSG_ERROR_TITLE=Błąd
MSG_INFO_TITLE=Informacja
@@ -465,11 +447,10 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Piosenka nie może być załadowana: Brak plik
ERROR_CORRUPT_SONG_NO_NOTES=Piosenka nie może być załadowana: nie mogę znaleść nut.
ERROR_CORRUPT_SONG_NO_BREAKS=Piosenka nie może być załadowana: nie mogę znaleść linii dzielących
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Piosenka nie może być załadowana: Błąd rozpoznawania linii %0:d
-ERROR_NO_EDITOR=Dodatek nie jest dostępny dla Linux/Mac
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Gracz %d został przypisany do wielu mikrofonów. Sprawdź ustawienia w opcjach gry.
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Gracz %d nie ma przypisanego mikrofonu. Sprawdź ustawienia nagrywania.
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Gracz %d został przypisany do wielu mikrofonów. Sprawdź ustawienia mikrofonów.
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Gracz %d nie ma przypisanego mikrofonu. Sprawdź ustawienia mikrofonów.
-;TODO: SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK=Internet
SING_OPTIONS_NETWORK_WHEREAMI=Opcje internetowe
SING_OPTIONS_NETWORK_DESC=Główne ustawienia internetowe
SING_OPTIONS_NETWORK_INSERT_USER_INFO=Wciśnij "Insert" aby dodać użytkownika do tej strony...
@@ -498,7 +479,7 @@ OPTION_ALL_SCORES=Wszystko
OPTION_VALUE_SAVE=Zapisz
OPTION_VALUE_SEND=Wyślij
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
MSG_INSERT_USER_DESC=Wypełnij pola:
MSG_INSERT_USER_ADD=Dodaj
MSG_INSERT_USER_CANCEL=Anuluj
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Następni gracze do mikrofonów
PARTY_MODE_TOURNAMENT_WIN_DESC=Wynik rundy
PARTY_MODE_TOURNAMENT_CHAMPION=Mistrzem zostaje: %0:s!
-EDIT_TITLE=Tytuł:
-EDIT_ARTIST=Artysta:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-EDIT_COVER=Okładka:
-EDIT_BACKGROUND=Tło:
-
-;TODO: EDIT_START=Start:
-EDIT_DURATION=Czas trwania:
-EDIT_TONE=Ton:
-EDIT_LYRIC=Text:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Głośność audio:
-EDIT_VOLUME_MIDI=Głośność midi:
-EDIT_VOLUME_CLICK=Kliknij głośność:
-INFO_UNDO=Cofnij ostatnią operację
-
-INFO_FILE_SAVED=Plik zapisany
-INFO_TIME_FIXED=Czasy poprawione
-INFO_CAPITALIZE=Wielkość liter poprawiona
-INFO_EXIT=Czy chcesz opuścić edytor bez zapisu?
-INFO_SONG_RELOADED=Piosenka przeładowana
-INFO_DIVIDED_BPM=BPM podzielone
-INFO_MULTIPLIED_BPM=BPM pomnożone
-INFO_PLAY_SONG=Graj piosenkę
-INFO_PLAY_SENTENCE=Graj zdanie
-INFO_CURRENT_LINE=Linia:
-INFO_CURRENT_NOTE=Nuta:
-
INFO_MIDI_CHANNEL_OFF= Kanał %0:s wyłączony!
INFO_MIDI_CHANNEL_RESET= Wszystkie kanały włączone!
@@ -609,8 +560,6 @@ SING_ERROR_DUET_MODE_PARTY = Duet! Nie można uruchomić w Party Mode!
SONG_MENU_SONG=Piosenka
SONG_MENU_MEDLEY=Składanka
-SONG_MENU_SORTING=Sortuj
-SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menu piosenki
SONG_MENU_NAME_MEDLEY=Menu składanki
@@ -631,13 +580,14 @@ SING_OPTIONS_WEBCAM_DESC=Ustawienia kamerki
SING_OPTIONS_WEBCAM_WHEREAMI=Opcje kamerki
SING_OPTIONS_WEBCAM_ID=Kamerka
SING_OPTIONS_WEBCAM_RESOLUTION=Rozdzielczość
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+SING_OPTIONS_WEBCAM_FPS=FPS
SING_OPTIONS_WEBCAM_NO_WEBCAM=Nie znaleziono kamerki!
SING_OPTIONS_WEBCAM_FLIP=Odwróć
SING_OPTIONS_WEBCAM_EFFECT=Efekt
SING_OPTIONS_WEBCAM_BRIGHTNESS=Jasność
SING_OPTIONS_WEBCAM_SATURATION=Nasycenie
SING_OPTIONS_WEBCAM_HUE=Odcień
+SING_OPTIONS_WEBCAM_PREVIEW=Aktywuj podgląd
SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Włącz podgląd
SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Wyłącz podgląd
@@ -710,7 +660,7 @@ JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Długość
JUKEBOX_SONGOPTIONS_LYRIC=Opcje tekstu
JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Rozmiar
JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Pozycja
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Przezroczystość
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Kolor
JUKEBOX_SONGOPTIONS_LYRIC_LINE=Linia
JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Właściwość
@@ -742,9 +692,14 @@ OPTION_VALUE_ALL=Wszystko
OPTION_VALUE_PLAYER=Gracz
SING_ABOUT=Informacje
-SING_ABOUT_DESC=Informacje o Ultrastar Deluxe
+SING_ABOUT_DESC=Informacje o Ultrastar Deluxe WorldParty
ABOUT_MAIN=Informacje...
-ABOUT_MAIN_DESC=Ultrastar Deluxe
-ABOUT_MAIN_WHEREAMI=Informacje...
-;TODO: ABOUT_USDX_CREDITS=Credits
-ABOUT_OVERVIEW=UltraStar Deluxe jest darmową, OpenSource-ową grą karaoke dla Twojego komputera. Rozgrywka przypomina tą z komercyjnego produktu SingStar™ firmy Sony Computer Entertainment, która jest dostępna jedynie na konsolę Playstation®. Jednakże, w przeciwieństwie do SingStar™, UltraStar Deluxe pozwala graczom na tworzenie własnych utworów i rozgrywkę na komputerach PC.\nPublikując kod źródłowy, pozwalamy na modyfikację gry wedla własnego uznania, chęci i potrzeb.\nW szczególności, możesz modyfikować produkt tak jak tego chcesz.\n\nTwórz własne style lub pobieraj treści zgromadzone przez społeczność gry, takie jak pluginy, darmowe utwory lub łatki zawierające dodatkowe funkcjonalności.\nTryb imprezy pozwala aż dwunastu graczom śpiewać razem do ulubionej muzyki w celu zdobycia punktów, w zależności od wysokości tonu głosu i rytmiki śpiewu.
+ABOUT_USDX_DEVELOPEDBY=Opracowany przez
+ABOUT_CHECK_CHECKING=Sprawdzanie nowych aktualizacji...
+ABOUT_CHECK_AVAILABLE=Dostępna jest nowa wersja
+ABOUT_CHECK_UPTODATE=WorldParty jest aktualne
+ABOUT_CHECK_CONNECTION=Brak połączenia z Internetem
+ABOUT_OVERVIEW=Odkryj nowy sposób śpiewania, sam, w parach lub z przyjaciółmi. \n Zabawa jest gwarantowana.\n\nWorldParty jest fork oryginalnej wersji Ultrastar Deluxe 1.1 zaprojektowane i opracowane przez zespół UltraStar España, liczy się z największą społecznością karaoke.\n\n\nTen program jest bezpłatny i libre na licencji GPL. \n\n Odwiedź nas, aby uzyskać więcej informacji.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Opracowany przez
+DEVELOPERS_OVERVIEW=Ludzie, którzy przyczynili się do tego projektu:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/Portugu\303\252s.ini" "b/game/languages/Portugu\303\252s.ini"
index a2da340e..4e0dd448 100644
--- "a/game/languages/Portugu\303\252s.ini"
+++ "b/game/languages/Portugu\303\252s.ini"
@@ -20,10 +20,10 @@ OPTION_VALUE_YEAR=Ano
OPTION_VALUE_DECADE=Década
OPTION_VALUE_PLAYLIST=Playlist
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maximizado
OPTION_VALUE_WHENNOVIDEO=Não existir Vídeo
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Quando não há vídeo e imagem
OPTION_VALUE_SMALL=Pequeno
OPTION_VALUE_BIG=Grande
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Auto
OPTION_VALUE_SEC=Segundo
OPTION_VALUE_SECS=Segundos
-OPTION_VALUE_PLAIN=Plano
-OPTION_VALUE_OLINE1=Negrito 1
-OPTION_VALUE_OLINE2=Negrito 2
+OPTION_VALUE_PLAIN=Estilizado
+OPTION_VALUE_OLINE1=com borda fina
+OPTION_VALUE_OLINE2=with thick edge
OPTION_VALUE_SIMPLE=Simples
OPTION_VALUE_ZOOM=Zoom
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Cantar
OPTION_VALUE_SELECT_PLAYERS=Escolher Jogadores
OPTION_VALUE_OPEN_MENU=Abrir Menu
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
SING_LOADING=A Ler...
+SING_LOADING_SONGS=Carregando canções da pasta %s
SING_CHOOSE_MODE=Escolha o Modo
SING_SING=Cantar
@@ -87,9 +83,6 @@ SING_TOOLS=Ferramentas
SING_STATS=Estatísticas
SING_STATS_DESC=Ver Estatísticas
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Criar canção
-
SING_GAME_OPTIONS=Opções de Jogo
SING_GAME_OPTIONS_DESC=Alterar configurações de Jogo
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Opções
SING_OPTIONS_GAME=Jogo
SING_OPTIONS_GRAPHICS=Gráficos
SING_OPTIONS_SOUND=Som
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Letras
SING_OPTIONS_THEMES=Temas
-SING_OPTIONS_RECORD=Gravação
+SING_OPTIONS_MICROPHONES=Gravação
SING_OPTIONS_ADVANCED=Avançado
SING_OPTIONS_EXIT=Voltar
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Dificuldade
SING_OPTIONS_GAME_LANGUAGE=Idioma
SING_OPTIONS_GAME_TABS=Subpastas
SING_OPTIONS_GAME_SORTING=Ordenação
-SING_OPTIONS_GAME_DEBUG=Modo Debug
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Ativar o gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Opções de Gráficos
SING_OPTIONS_GRAPHICS_DESC=Configurações dos Gráficos
SING_OPTIONS_GRAPHICS_RESOLUTION=Resolução
SING_OPTIONS_GRAPHICS_FULLSCREEN=Ecrã Total
-SING_OPTIONS_GRAPHICS_DEPTH=Profundidade
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efeitos
+SING_OPTIONS_GRAPHICS_SCREENFADE=Fade do Ecrã
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animação
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualizador
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscópio
SING_OPTIONS_GRAPHICS_LINEBONUS=Linha Bonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Tamanho do Vídeo
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Opções de Som
SING_OPTIONS_SOUND_DESC=Configuração do Som
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Playback Microfone
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Música de Fundo
-SING_OPTIONS_SOUND_MIC_BOOST=Microfone Boost
SING_OPTIONS_SOUND_CLICK_ASSIST=Click de Ajuda
SING_OPTIONS_SOUND_BEAT_CLICK=Click de Batida
-SING_OPTIONS_SOUND_THRESHOLD=Threshold
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Modo de dois jogadores
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Preview Volume
SING_OPTIONS_SOUND_PREVIEWFADING=Preview Fading
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Opções de Letras
SING_OPTIONS_LYRICS_DESC=Configuração de Letras
SING_OPTIONS_LYRICS_FONT=Fonte
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Cor
-SING_OPTIONS_RECORD_WHEREAMI=Opções de Gravação
-SING_OPTIONS_RECORD_DESC=Configurações do Microfone
-SING_OPTIONS_RECORD_CARD=Placa de Som
-SING_OPTIONS_RECORD_INPUT=Entrada
-SING_OPTIONS_RECORD_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opções de Gravação
+SING_OPTIONS_MICROPHONES_DESC=Configurações do Microfone
+SING_OPTIONS_MICROPHONES_CARD=Placa de Som
+SING_OPTIONS_MICROPHONES_INPUT=Entrada
+SING_OPTIONS_MICROPHONES_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Threshold
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Microfone Boost
SING_OPTIONS_ADVANCED_WHEREAMI=Opções Avançadas
SING_OPTIONS_ADVANCED_DESC=Outras Opções
-SING_OPTIONS_ADVANCED_EFFECTSING=Efeitos
-SING_OPTIONS_ADVANCED_SCREENFADE=Fade do Ecrã
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animação
+SING_OPTIONS_ADVANCED_DEBUG=Modo debug
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloscópio
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Segurança
SING_OPTIONS_ADVANCED_LINEBONUS=Linha de Bônus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Escolha da Canção
SING_OPTIONS_ADVANCED_PARTYPOPUP=Menu de Festa
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Cria a tua própria canção
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importar texto de um arquivo MIDI
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Voltar
-SING_EDIT_BUTTON_CONVERT=Importar
-SING_EDIT_BUTTON_EXIT=Voltar
-
-SING_EDIT_NAVIGATE=Navegar
-SING_EDIT_SELECT=Seleccionar
-SING_EDIT_EXIT=Voltar
-
SING_LEGEND_SELECT=Seleccionar
SING_LEGEND_NAVIGATE=Navegar
SING_LEGEND_CONTINUE=Continuar
SING_LEGEND_ESC=Voltar
-SING_PLAYER_DESC=Introduza o(s) nome(s) do(s) jogador(es)
-SING_PLAYER_WHEREAMI=Nome dos Jogadores
-SING_PLAYER_ENTER_NAME=Introduzir Nome
+SING_PLAYER_TITLE=Perfis
+SING_PLAYER_READY=Jogadores prontos para cantar
+SING_PLAYER_COUNT=Número de jogadores
+SING_PLAYER_EDIT=Personalize um jogador
+SING_PLAYER_NAME=Escreva seu nome
+SING_PLAYER_COLOR=Escolha uma cor
+SING_PLAYER_LEVEL=Escolha um nível
+SING_PLAYER_AVATAR=Selecione seu avatar
SING_DIFFICULTY_DESC=Nível de Dificuldade
SING_DIFFICULTY_WHEREAMI=Dificuldade
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Ir para ..
SING_SONG_SELECTION=Seleção da Canção
SING_SONG_SELECTION_MENU=Menu
SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Cançao
SING_SONGS_IN_CAT=Canções
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Lenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Vídeo
+SING_SONG_SELECTION_LEGEND_MEDLEY=Versão curta
+SING_SONG_SELECTION_LEGEND_MEDLEYC=Versão curta calculada
+SING_SONG_SELECTION_LEGEND_DUET=Dueto
-;TODO: SING_TIME=TIME
SING_TOTAL=Total
SING_MODE=Cantar Solo
SING_NOTES=Notas
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= e
SONG_MENU_NAME_MAIN=Menu de canções
SONG_MENU_PLAY=Cantar
SONG_MENU_CHANGEPLAYERS=Mudar Jogadores
-SONG_MENU_EDIT=Editar
SONG_MENU_MODI=Cantar uma Modi
SONG_MENU_CANCEL=Cancelar
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_NAME=Manter a linha
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Até 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Cego 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Até 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Cego 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Até 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Cego 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duelo
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Estatísticas Detalhadas
STAT_NEXT=Página Seguinte
STAT_PREV=Página Anterior
STAT_REVERSE=Ordem Inversa
-STAT_PAGE=%0:d de %1:d Páginas\n (%2:d de %3:d Entradas)
+STAT_PAGE=%0:d de %1:d Páginas \n %2:d de %3:d Entradas
STAT_DESC_SCORES=Pontuações Altas
STAT_DESC_SCORES_REVERSED=Pontuações Baixas
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Impossível Guardar Ficheiro
ERROR_FILE_NOT_FOUND=Ficheiro Não Encontrado
ENCODING_ERROR_ASK_FOR_UTF8=Impossível guardar na codificação corrente. Converter pata UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Nenhuma pista seleccionada
MSG_ERROR_TITLE=Erro
MSG_INFO_TITLE=Informação
@@ -465,9 +447,8 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=A canção não foi encontrada!
ERROR_CORRUPT_SONG_NO_NOTES=A canção não tem notas!
ERROR_CORRUPT_SONG_NO_BREAKS=A canção não tem quebras de linha!
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Erro durante o parsing da linha %0:d
-ERROR_NO_EDITOR=Esta opção não está disponível no Linux/Mac
-ERROR_PLAYER_DEVICE_ASSIGNMENT=O Jogador %d está atribuído a vários microfones. Por favor verifique as opções de gravação!
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=O Jogador %d não está atribuído a nenhum microfone. Por favor verifique as opções de gravação!
+ERROR_PLAYER_DEVICE_ASSIGNMENT=O Jogador %d está atribuído a vários microfones. Por favor verifique as opções de microfone!
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=O Jogador %d não está atribuído a nenhum microfone. Por favor verifique as opções de microfone!
SING_OPTIONS_NETWORK=Network
SING_OPTIONS_NETWORK_WHEREAMI=Opções de Internet
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Jogadores seguintes para os microfones
PARTY_MODE_TOURNAMENT_WIN_DESC=Resultado da ronda
PARTY_MODE_TOURNAMENT_CHAMPION=O campeão é: %0:s!
-EDIT_TITLE=Título:
-EDIT_ARTIST=Artista:
-EDIT_MP3=MP3:
-EDIT_BPM=BPM:
-EDIT_GAP=GAP:
-EDIT_COVER=Cover:
-EDIT_BACKGROUND=Background:
-
-EDIT_START=Inicio:
-EDIT_DURATION=Duração:
-EDIT_TONE=Tom:
-EDIT_LYRIC=Letra:
-EDIT_VIDEOGAP=Video Gap:
-EDIT_VOLUME_AUDIO=Audio Volume:
-EDIT_VOLUME_MIDI=Midi Volume:
-EDIT_VOLUME_CLICK=Click Volume:
-INFO_UNDO=Reverter operação
-
-INFO_FILE_SAVED=Ficheiro Guardado
-INFO_TIME_FIXED=Tempos corrigidos
-INFO_CAPITALIZE=Capitalização corrigida
-INFO_EXIT=Deseja sair do editor sem guardar?
-INFO_SONG_RELOADED=Música Reaberta
-INFO_DIVIDED_BPM=Dividir BPM
-INFO_MULTIPLIED_BPM=Multiplicar BPM
-INFO_PLAY_SONG=Play Música
-INFO_PLAY_SENTENCE=Play Frase
-INFO_CURRENT_LINE=Linha:
-INFO_CURRENT_NOTE=Nota:
-
INFO_MIDI_CHANNEL_OFF= Canal %0:s desactivado!
INFO_MIDI_CHANNEL_RESET= Todos os canais activos!
@@ -609,8 +560,6 @@ SING_ERROR_DUET_MODE_PARTY =Dueto! Não é possível jogar no modo Festa!
SONG_MENU_SONG=Canção
SONG_MENU_MEDLEY=Medley
-SONG_MENU_SORTING=Ordenação
-SONG_MENU_EXTRA=Extras
SONG_MENU_NAME_SONG=Menu Canção
SONG_MENU_NAME_MEDLEY=Menu Medley
@@ -638,6 +587,7 @@ SING_OPTIONS_WEBCAM_EFFECT=Efeito
SING_OPTIONS_WEBCAM_BRIGHTNESS=Brilho
SING_OPTIONS_WEBCAM_SATURATION=Saturação
SING_OPTIONS_WEBCAM_HUE=Matiz
+SING_OPTIONS_WEBCAM_PREVIEW=Activar Pré-Visualização
SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Activar Pré-Visualização
SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Desactivar Pré-Visualização
@@ -653,7 +603,7 @@ SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equilibrada
SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erosão
-;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
+PARTY_PLAYLIST_MANUAL=Seleção manual
PARTY_MODE_JUKEBOX_NO_SONGS=Lista de canções está vazia!
SONG_MENU_OPEN_CATEGORY=Abrir Categoria
SONG_MENU_CLOSE_CATEGORY=Fechar Categoria
@@ -729,7 +679,7 @@ JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Guardado!
SING_SONG_CREDITS=Créditos
SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
+SING_JUKEBOX_DESC=escute minhas musicas
JUKEBOX_MODE=Modo Jukebox
JUKEBOX_OPTIONS_DESC=Opções de Playlist
JUKEBOX_OPTIONS_WHEREAMI=Opções Jukebox
@@ -742,9 +692,14 @@ OPTION_VALUE_ALL=Todas
OPTION_VALUE_PLAYER=Jogador
SING_ABOUT=Sobre
-SING_ABOUT_DESC=Sobre o Ultrastar WorldParty
+SING_ABOUT_DESC=Sobre o Ultrastar Deluxe WorldParty
ABOUT_MAIN=Sobre...
-ABOUT_MAIN_DESC=Ultrastar Deluxe WorldParty
-ABOUT_MAIN_WHEREAMI=Sobre...
-ABOUT_USDX_CREDITS=Créditos
-ABOUT_OVERVIEW=WorldParty é um MOD da versão original Ultrastar Deluxe 1.1 desenvolvido pela equipa do Ultrastar España.\n\nPrincipais novidades desta versão:\n\n - Novos temas/skins\n - Novos menus de canções\n - Avatares\n - Novas Opções Jukebox \n - E muitas outras coisas...\n\nAgradecimentos:\n\n zup3r_vock, daniel20, jaher06 e a toda a equipa do Ultrastar España por todo o seu esforço e dedicação neste projecto.\n\nEste programa é gratuito e livre sobre a licença GPL.\n\nhttp://ultrastar-es.org
+ABOUT_USDX_DEVELOPEDBY=Desenvolvido por
+ABOUT_CHECK_CHECKING=Verificando novas atualizações...
+ABOUT_CHECK_AVAILABLE=Existe uma nova versão disponível
+ABOUT_CHECK_UPTODATE=WorldParty está atualizado
+ABOUT_CHECK_CONNECTION=Não há conexão com a Internet
+ABOUT_OVERVIEW=Descubra uma nova maneira de cantar sozinho, em casal ou com amigos. \n A diversão é garantida.\n\nWorldParty é um fork da versão original Ultrastar Deluxe 1.1 projetado e desenvolvido pela equipe UltraStar España, conta com a maior comunidade de karaokê.\n\n\nEste programa é gratuito e libre sob a licença GPL. \n\n Visite-nos para mais informações.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Desenvolvido por
+DEVELOPERS_OVERVIEW=Pessoas que contribuíram para este projeto:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visite-nos para mais informações.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/P\321\203\314\201\321\201\321\201\320\272\320\270\320\271.ini" "b/game/languages/P\321\203\314\201\321\201\321\201\320\272\320\270\320\271.ini"
index fe55702c..6cb564ee 100644
--- "a/game/languages/P\321\203\314\201\321\201\321\201\320\272\320\270\320\271.ini"
+++ "b/game/languages/P\321\203\314\201\321\201\321\201\320\272\320\270\320\271.ini"
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Название
OPTION_VALUE_ARTIST=Исполнитель
OPTION_VALUE_TITLE2=Название 2
OPTION_VALUE_ARTIST2=Исполнитель 2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Год
+OPTION_VALUE_DECADE=десятилетие
OPTION_VALUE_PLAYLIST=плэйлист
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Развернуто
OPTION_VALUE_WHENNOVIDEO=Если нет видео
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Когда нет видео и изображений
OPTION_VALUE_SMALL=Маленький
OPTION_VALUE_BIG=Большой
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Авто
OPTION_VALUE_SEC=Секунда
OPTION_VALUE_SECS=Секунд(ы)
-OPTION_VALUE_PLAIN=Plain
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=стилизованный
+OPTION_VALUE_OLINE1=с тонким краем
+OPTION_VALUE_OLINE2=с толстым краем
OPTION_VALUE_SIMPLE=Простое
OPTION_VALUE_ZOOM=Масштаб
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Пение
OPTION_VALUE_SELECT_PLAYERS=Выбор игроков
OPTION_VALUE_OPEN_MENU=Открыть меню
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Аппаратный курсор
-OPTION_VALUE_SOFTWARE_CURSOR=Програмный курсор
-
SING_LOADING=Загрузка...
+;TODO: SING_LOADING_SONGS=Поиск композиций в папке %s
SING_CHOOSE_MODE=Выберите режим
SING_SING=Пение
@@ -87,9 +83,6 @@ SING_TOOLS=Инструменты
SING_STATS=Статистика
SING_STATS_DESC=смотреть статистику
-SING_EDITOR=Редактор
-SING_EDITOR_DESC=создать свою собственную песню
-
SING_GAME_OPTIONS=Настройки
SING_GAME_OPTIONS_DESC=изменить настройки игры
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Настройки
SING_OPTIONS_GAME=игра
SING_OPTIONS_GRAPHICS=графика
SING_OPTIONS_SOUND=звук
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=текст
SING_OPTIONS_THEMES=темы
-SING_OPTIONS_RECORD=запись
+SING_OPTIONS_MICROPHONES=запись
SING_OPTIONS_ADVANCED=продвинутые
SING_OPTIONS_EXIT=назад
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Сложность
SING_OPTIONS_GAME_LANGUAGE=Язык
SING_OPTIONS_GAME_TABS=Табы
SING_OPTIONS_GAME_SORTING=Сортировка
-SING_OPTIONS_GAME_DEBUG=Отладка
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Активировать геймпад
SING_OPTIONS_GRAPHICS_WHEREAMI=Настройки графики
SING_OPTIONS_GRAPHICS_DESC=настройки графики
SING_OPTIONS_GRAPHICS_RESOLUTION=Разрешение
SING_OPTIONS_GRAPHICS_FULLSCREEN=Полный экран
-SING_OPTIONS_GRAPHICS_DEPTH=Глубина цвета
+SING_OPTIONS_GRAPHICS_EFFECTSING=Эффекты пения
+SING_OPTIONS_GRAPHICS_SCREENFADE=Затухание экрана
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Анимация загрузки
SING_OPTIONS_GRAPHICS_VISUALIZER=Визуализация
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Осциллограф
SING_OPTIONS_GRAPHICS_LINEBONUS=Бонус "в линию"
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Размер клипа
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Настройки звука
SING_OPTIONS_SOUND_DESC=настройки звука
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Вывод с микрофона
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Фоновая музыка
-SING_OPTIONS_SOUND_MIC_BOOST=Усиление мкрофона
SING_OPTIONS_SOUND_CLICK_ASSIST=Метроном-помощник
SING_OPTIONS_SOUND_BEAT_CLICK=Метроном
-SING_OPTIONS_SOUND_THRESHOLD=Погрешность
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Режим двух игроков
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Громкость превью
SING_OPTIONS_SOUND_PREVIEWFADING=Затухание превью
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Настройки текстов
SING_OPTIONS_LYRICS_DESC=настройки текстов
SING_OPTIONS_LYRICS_FONT=Шрифт
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Тема
SING_OPTIONS_THEMES_SKIN=Скин
SING_OPTIONS_THEMES_COLOR=Цвет
-SING_OPTIONS_RECORD_WHEREAMI=Настройки записи
-SING_OPTIONS_RECORD_DESC=настройки микрофона
-SING_OPTIONS_RECORD_CARD=Звуковая карта
-SING_OPTIONS_RECORD_INPUT=Вход
-SING_OPTIONS_RECORD_CHANNEL=Канал
+SING_OPTIONS_MICROPHONES_WHEREAMI=Настройки записи
+SING_OPTIONS_MICROPHONES_DESC=настройки микрофона
+SING_OPTIONS_MICROPHONES_CARD=Звуковая карта
+SING_OPTIONS_MICROPHONES_INPUT=Вход
+SING_OPTIONS_MICROPHONES_CHANNEL=Канал
+SING_OPTIONS_MICROPHONES_THRESHOLD=Погрешность
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Усиление мкрофона
SING_OPTIONS_ADVANCED_WHEREAMI=Дополнительные настройки
SING_OPTIONS_ADVANCED_DESC=дополнительные настройки
-SING_OPTIONS_ADVANCED_EFFECTSING=Эффекты пения
-SING_OPTIONS_ADVANCED_SCREENFADE=Затухание экрана
-SING_OPTIONS_ADVANCED_LOADANIMATION=Анимация загрузки
+SING_OPTIONS_ADVANCED_DEBUG=Отладка
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Осциллограф
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Запросы
SING_OPTIONS_ADVANCED_LINEBONUS=Бонус "В линию"
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=После выбора песни
;TODO: SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
-SING_EDIT=Редактор
-SING_EDIT_MENU_DESCRIPTION=создать свою собственную песню
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Импортировать текст из MIDI-файла
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=назад
-SING_EDIT_BUTTON_CONVERT=Импорт
-SING_EDIT_BUTTON_EXIT=назад
-
-SING_EDIT_NAVIGATE=перейти
-SING_EDIT_SELECT=выбрать
-SING_EDIT_EXIT=назад
-
SING_LEGEND_SELECT=выбрать
SING_LEGEND_NAVIGATE=перейти
SING_LEGEND_CONTINUE=продолжить
SING_LEGEND_ESC=назад
-SING_PLAYER_DESC=введите имя игрока(игроков)
-SING_PLAYER_WHEREAMI=Имена игроков
-SING_PLAYER_ENTER_NAME=введите имя
+SING_PLAYER_TITLE=профили
+SING_PLAYER_READY=Игроки готовы петь
+SING_PLAYER_COUNT=Количество игроков
+SING_PLAYER_EDIT=Настройка игрока
+SING_PLAYER_NAME=Напишите свое имя
+SING_PLAYER_COLOR=Выбери цвет
+SING_PLAYER_LEVEL=Выберите уровень
+SING_PLAYER_AVATAR=Выберите свой аватар
SING_DIFFICULTY_DESC=уровень сложности
SING_DIFFICULTY_WHEREAMI=Сложность
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=перейти ..
SING_SONG_SELECTION=выбор песни
SING_SONG_SELECTION_MENU=меню
SING_SONG_SELECTION_PLAYLIST=плэйлист
+SING_SONG_IN_CAT=песня
SING_SONGS_IN_CAT=Песни
PLAYLIST_CATTEXT=Плэйлист: %s
+SING_SONG_SELECTION_LEGEND_TITLE=легенда
+SING_SONG_SELECTION_LEGEND_VIDEO=видео
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Дуэт
-;TODO: SING_TIME=TIME
SING_TOTAL=всего
SING_MODE=пение соло
SING_NOTES=ноты
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= и
SONG_MENU_NAME_MAIN=меню пения
SONG_MENU_PLAY=Петь
SONG_MENU_CHANGEPLAYERS=Изменить игроков
-SONG_MENU_EDIT=Изменить
SONG_MENU_MODI=Петь
SONG_MENU_CANCEL=Отмена
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Подробная статистика
STAT_NEXT=След. страница
STAT_PREV=Пред. страница
STAT_REVERSE=В обр. порядке
-STAT_PAGE=страница %0:d из %1:d\n (%2:d из %3:d)
+STAT_PAGE=Cтраница %0:d из %1:d \n Yчет %2:d из %3:d
STAT_DESC_SCORES=Лучшие игры
STAT_DESC_SCORES_REVERSED=Худшие игры
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Невозможно сохранить файл
ERROR_FILE_NOT_FOUND=Файл не найден
ENCODING_ERROR_ASK_FOR_UTF8=Невозможно сохранить изменения в текущей кодировке. Преобразовать в UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Ни одна дорожка не выбрана
MSG_ERROR_TITLE=Ошибка
MSG_INFO_TITLE=Информация
@@ -465,20 +447,19 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Песня не может быть загру
ERROR_CORRUPT_SONG_NO_NOTES=Песня не может быть загружена: Невозможно найти ноты
ERROR_CORRUPT_SONG_NO_BREAKS=Песня не может быть загружена: Невозможно найти разделители строк
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Песня не может быть загружена: Ошибка обработки строки %0:d
-ERROR_NO_EDITOR=Эта возможность недоступна в Linux/Mac
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Игроку %d назначено несколько микрофонов. Пожалуйста проверьте опции записи
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Игроку %d не назначено ни одного микрофона. Пожалуйста проверьте опции записи
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Игроку %d назначено несколько микрофонов. Проверьте настройки микрофона
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Игроку %d не назначено ни одного микрофона. Проверьте настройки микрофона
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=интернет
+SING_OPTIONS_NETWORK_WHEREAMI=настройки интернета
+SING_OPTIONS_NETWORK_DESC=Общие настройки Интернета
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=имя пользователя
+SING_OPTIONS_NETWORK_PASSWORD=пароль
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
SING_OPTIONS_NETWORK_AUTO_MODE=Авто
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=игрок
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,12 +468,12 @@ SING_OPTIONS_NETWORK_AUTO_MODE=Авто
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=игрок 1
+OPTION_PLAYER_2=игрок 2
+OPTION_PLAYER_3=игрок 3
+OPTION_PLAYER_4=игрок 4
+OPTION_PLAYER_5=игрок 5
+OPTION_PLAYER_6=игрок 6
OPTION_ALL_PLAYERS=Всё
OPTION_ALL_SCORES=Всё
;TODO: OPTION_VALUE_SAVE=Save
@@ -526,17 +507,17 @@ MSG_INSERT_USER_CANCEL=Отмена
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MAX=Лучший:
+SONG_SCORE_MEDIA=В среднем:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=игрок
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_TITLE=Скачать
+SCORE_DOWNLOAD_SONG=песня:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=Отмена
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=следующие игроки к микро
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Файл сохранён
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ INFO_FILE_SAVED=Файл сохранён
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Меню песен
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -635,9 +584,10 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Разрешение
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Эффект
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=яркость
+SING_OPTIONS_WEBCAM_SATURATION=насыщение
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Активировать просмотр
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,34 +613,34 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Погрешность
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Количество игроков
+NAME_CURRENT_PLAYER=игрок
SING_OPTIONS_GAME_SONGMENU=Меню песен
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=рулетка
+OPTION_VALUE_CHESSBOARD=шахматная доска
+OPTION_VALUE_CAROUSEL=Карусель
+OPTION_VALUE_SLOT_MACHINE=Игровой автомат
+OPTION_VALUE_LIST=Список
+OPTION_VALUE_MOSAIC=Кафельная плитка
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Пение
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
+OPTION_VALUE_ACTUAL=верхний
+OPTION_VALUE_NEXT=Дно
+OPTION_VALUE_OTHER=Другие
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_GRAY=Серый
+OPTION_VALUE_WHITE=белый
+OPTION_VALUE_TURQUOISE=Бирюзовый
+OPTION_VALUE_SALMON=Лосось
+OPTION_VALUE_GREENYELLOW=Желто-зеленый
+OPTION_VALUE_LAVENDER=лаванда
+OPTION_VALUE_BEIGE=Бежевый
;TODO: OPTION_VALUE_TEAL=Teal
;TODO: OPTION_VALUE_ORCHID=Orchid
;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
@@ -710,7 +660,7 @@ OPTION_VALUE_TO_SING=Пение
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=прозрачность
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Цвет
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -739,12 +689,17 @@ JUKEBOX_OPTIONS_PLAYLIST=плэйлист
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Всё
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=игрок
+
+SING_ABOUT=Около
+SING_ABOUT_DESC=Около Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Около...
+ABOUT_USDX_DEVELOPEDBY=Разработано
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Разработано
+DEVELOPERS_OVERVIEW=Люди, которые внесли свой вклад в этот проект:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\nПосетите нас для получения дополнительной информации.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/Rom\303\242n\304\203.ini" "b/game/languages/Rom\303\242n\304\203.ini"
index bcd3d81b..6827beda 100644
--- "a/game/languages/Rom\303\242n\304\203.ini"
+++ "b/game/languages/Rom\303\242n\304\203.ini"
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Titlu
OPTION_VALUE_ARTIST=Artist
OPTION_VALUE_TITLE2=Titlu2
OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=An
+OPTION_VALUE_DECADE=Deceniu
;TODO: OPTION_VALUE_PLAYLIST=Playlist
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maximizat
OPTION_VALUE_WHENNOVIDEO=În cazul în care nu există video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Atunci când nu există video și Imagine
OPTION_VALUE_SMALL=Mic
OPTION_VALUE_BIG=Mare
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Automat
OPTION_VALUE_SEC=Al doilea
OPTION_VALUE_SECS=Secunde
-OPTION_VALUE_PLAIN=Simplu
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Stilizată
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
OPTION_VALUE_SIMPLE=Simplu
OPTION_VALUE_ZOOM=Apropiere
@@ -68,153 +68,137 @@ OPTION_VALUE_SING=Cântă
OPTION_VALUE_SELECT_PLAYERS=Alege Jucători
OPTION_VALUE_OPEN_MENU=Deschide Meniu
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Cursor hardware
-OPTION_VALUE_SOFTWARE_CURSOR=Cursor software
-
SING_LOADING=Încărcând ...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
SING_CHOOSE_MODE=Alege modul
SING_SING=Cântă!
-SING_SING_DESC=joc rapid: cântă singur sau în duet
+SING_SING_DESC=Joc rapid: cântă singur sau în duet
SING_MULTI=Party
-SING_MULTI_DESC=cântă în grup
+SING_MULTI_DESC=Cântă în grup
SING_TOOLS=Unelte
SING_STATS=Statistici
-SING_STATS_DESC=vezi statistici
-
-SING_EDITOR=Editor
-SING_EDITOR_DESC=creează melodia ta
+SING_STATS_DESC=Vezi statistici
SING_GAME_OPTIONS=Opţiuni de joc
-SING_GAME_OPTIONS_DESC=modifică opţiunile de joc
+SING_GAME_OPTIONS_DESC=Modifică opţiunile de joc
SING_EXIT=Ieşire
-SING_EXIT_DESC=ieşi din joc
+SING_EXIT_DESC=Ieşi din joc
SING_OPTIONS=Opţiuni
-SING_OPTIONS_DESC=modifică opţiunile
+SING_OPTIONS_DESC=Modifică opţiunile
SING_OPTIONS_WHEREAMI=Opţiuni
SING_OPTIONS_GAME=Joc
SING_OPTIONS_GRAPHICS=Grafică
SING_OPTIONS_SOUND=Sunet
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Versuri
SING_OPTIONS_THEMES=Aspect
-SING_OPTIONS_RECORD=Microfoane
+SING_OPTIONS_MICROPHONES=Microfoane
SING_OPTIONS_ADVANCED=Avansat
SING_OPTIONS_EXIT=Înapoi
SING_OPTIONS_GAME_WHEREAMI=Opţiuni de joc
-SING_OPTIONS_GAME_DESC=opţiuni de joc generale
+SING_OPTIONS_GAME_DESC=Opţiuni de joc generale
SING_OPTIONS_GAME_PLAYERS=Jucători
SING_OPTIONS_GAME_DIFFICULTY=Dificultate
SING_OPTIONS_GAME_LANGUAGE=Limbă
SING_OPTIONS_GAME_TABS=Etichete
SING_OPTIONS_GAME_SORTING=Sortează după
-SING_OPTIONS_GAME_DEBUG=Mod de depanare
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Activați gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Opţiuni grafice
-SING_OPTIONS_GRAPHICS_DESC=modifică configurația video
+SING_OPTIONS_GRAPHICS_DESC=Modifică configurația video
SING_OPTIONS_GRAPHICS_RESOLUTION=Rezoluție
SING_OPTIONS_GRAPHICS_FULLSCREEN=Ecran complet
-SING_OPTIONS_GRAPHICS_DEPTH=Adâncime de culoare
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efecte cântând
+SING_OPTIONS_GRAPHICS_SCREENFADE=Atenuare ecran
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Încarcă animaţie
SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizare
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloscop
SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus de linie
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Mărime video
SING_OPTIONS_SOUND_WHEREAMI=Opţiuni sunet
-SING_OPTIONS_SOUND_DESC=modifică configurația audio
+SING_OPTIONS_SOUND_DESC=Modifică configurația audio
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Ascultă microfon
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Muzică de fundal
-;TODO: SING_OPTIONS_SOUND_MIC_BOOST=Mic boost
SING_OPTIONS_SOUND_CLICK_ASSIST=Ajutor note
SING_OPTIONS_SOUND_BEAT_CLICK=Clic ritm
-;TODO: SING_OPTIONS_SOUND_THRESHOLD=Threshold
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mod 2 jucători
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Vezi volum
SING_OPTIONS_SOUND_PREVIEWFADING=Vezi atenuare
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Opţiuni versuri
-SING_OPTIONS_LYRICS_DESC=schimbă modul de afișare a versurilor
+SING_OPTIONS_LYRICS_DESC=Schimbă modul de afișare a versurilor
SING_OPTIONS_LYRICS_FONT=Set de caractere
SING_OPTIONS_LYRICS_EFFECT=Efect
SING_OPTIONS_LYRICS_SOLMIZATION=Solfegiu
SING_OPTIONS_LYRICS_NOTELINES=Partitură
SING_OPTIONS_THEMES_WHEREAMI=Opţiuni aspect
-SING_OPTIONS_THEMES_DESC=schimbă culori şi aspect
+SING_OPTIONS_THEMES_DESC=Schimbă culori şi aspect
SING_OPTIONS_THEMES_THEME=Temă
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Culoare
-SING_OPTIONS_RECORD_WHEREAMI=Opţiuni înregistrare
-SING_OPTIONS_RECORD_DESC=configurează microfon
-SING_OPTIONS_RECORD_CARD=Placă de sunet
-SING_OPTIONS_RECORD_INPUT=Intrare
-SING_OPTIONS_RECORD_CHANNEL=Canal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opţiuni înregistrare
+SING_OPTIONS_MICROPHONES_DESC=Configurează microfon
+SING_OPTIONS_MICROPHONES_CARD=Placă de sunet
+SING_OPTIONS_MICROPHONES_INPUT=Intrare
+SING_OPTIONS_MICROPHONES_CHANNEL=Canal
+;TODO: SING_OPTIONS_MICROPHONES_THRESHOLD=Threshold
+;TODO: SING_OPTIONS_MICROPHONES_MIC_BOOST=Mic boost
SING_OPTIONS_ADVANCED_WHEREAMI=Opțiuni avansate
-SING_OPTIONS_ADVANCED_DESC=opțiuni avansate
-SING_OPTIONS_ADVANCED_EFFECTSING=Efecte cântând
-SING_OPTIONS_ADVANCED_SCREENFADE=Atenuare ecran
-SING_OPTIONS_ADVANCED_LOADANIMATION=Încarcă animaţie
+SING_OPTIONS_ADVANCED_DESC=Opțiuni avansate
+SING_OPTIONS_ADVANCED_DEBUG=Mod de depanare
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloscop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Confirmă ştergere
SING_OPTIONS_ADVANCED_LINEBONUS=Bonus de linie
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=După alegere cântec..
SING_OPTIONS_ADVANCED_PARTYPOPUP=Meniu party automat
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=creează cântecul tău
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Încarcă text din fişier MIDI
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Înapoi
-SING_EDIT_BUTTON_CONVERT=Încarcă
-SING_EDIT_BUTTON_EXIT=Înapoi
-
-SING_EDIT_NAVIGATE=Navighează
-SING_EDIT_SELECT=Alege
-SING_EDIT_EXIT=Înapoi
-
SING_LEGEND_SELECT=Alege
SING_LEGEND_NAVIGATE=Navighează
SING_LEGEND_CONTINUE=Continuă
SING_LEGEND_ESC=Înapoi
-SING_PLAYER_DESC=scrie nume jucător(i)
-SING_PLAYER_WHEREAMI=Nume jucători
-SING_PLAYER_ENTER_NAME=Introduce nume
+SING_PLAYER_TITLE=Profiluri
+SING_PLAYER_READY=Jucătorii gata să cânte
+SING_PLAYER_COUNT=Număr de jucători
+SING_PLAYER_EDIT=Personalizați un jucător
+SING_PLAYER_NAME=Scrie-ti numele
+SING_PLAYER_COLOR=Alege o culoare
+SING_PLAYER_LEVEL=Alegeți un nivel
+SING_PLAYER_AVATAR=Selectați avatarul dvs
-SING_DIFFICULTY_DESC=selectează dificultatea
+SING_DIFFICULTY_DESC=Selectează dificultatea
SING_DIFFICULTY_WHEREAMI=Dificultate
SING_DIFFICULTY_CONTINUE=Alege cântec
SING_EASY=Uşor
SING_MEDIUM=Mediu
SING_HARD=Greu
-SING_SONG_SELECTION_DESC=alege-ți cântecul
+SING_SONG_SELECTION_DESC=Alege-ți cântecul
SING_SONG_SELECTION_WHEREAMI=Alege cântec
SING_SONG_SELECTION_GOTO=Du-te la ...
SING_SONG_SELECTION=Alege cântec
SING_SONG_SELECTION_MENU=Meniu
SING_SONG_SELECTION_PLAYLIST=Lista
+SING_SONG_IN_CAT=Cântec
SING_SONGS_IN_CAT=Cântece
PLAYLIST_CATTEXT=Lista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legendă
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=Total
SING_MODE=Cântă singur
SING_NOTES=Note
@@ -236,18 +220,18 @@ SING_SCORE_SUPERSTAR=Superstar
SING_SCORE_ULTRASTAR=Ultrastar
SING_TOP_5_CHARTS=Primii 5 jucători
-SING_TOP_5_CHARTS_WHEREAMI=primii 5
-SING_TOP_5_CHARTS_CONTINUE=la alegerea cântecului
+SING_TOP_5_CHARTS_WHEREAMI=Primii 5
+SING_TOP_5_CHARTS_CONTINUE=La alegerea cântecului
SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Schimbă dificultatea
-POPUP_PERFECT=perfect!
-POPUP_AWESOME=uimitor!
-POPUP_GREAT=grozav!
-POPUP_GOOD=bine!
-POPUP_NOTBAD=nu-i rău!
-POPUP_BAD=rău!
-POPUP_POOR=groaznic!
-POPUP_AWFUL=oribil!
+POPUP_PERFECT=Perfect!
+POPUP_AWESOME=Uimitor!
+POPUP_GREAT=Grozav!
+POPUP_GOOD=Bine!
+POPUP_NOTBAD=Nu-i rău!
+POPUP_BAD=Rău!
+POPUP_POOR=Groaznic!
+POPUP_AWFUL=Oribil!
IMPLODE_GLUE1=,
IMPLODE_GLUE2=și
@@ -255,7 +239,6 @@ IMPLODE_GLUE2=și
SONG_MENU_NAME_MAIN=Meniu cântece
SONG_MENU_PLAY=Cântă
SONG_MENU_CHANGEPLAYERS=Schimbă jucători
-SONG_MENU_EDIT=Editează
SONG_MENU_MODI=Cântă un Modi
SONG_MENU_CANCEL=Renunță
@@ -264,11 +247,11 @@ SONG_MENU_PLAYLIST_ADD=Adaugă cântec
SONG_MENU_PLAYLIST_DEL=Şterge cântec
SONG_MENU_NAME_PLAYLIST_ADD=Adaugă cântec
-SONG_MENU_PLAYLIST_ADD_NEW=la o listă nouă
-SONG_MENU_PLAYLIST_ADD_EXISTING=la o listă existentă
-SONG_MENU_PLAYLIST_NOEXISTING=nu sunt liste
+SONG_MENU_PLAYLIST_ADD_NEW=La o listă nouă
+SONG_MENU_PLAYLIST_ADD_EXISTING=La o listă existentă
+SONG_MENU_PLAYLIST_NOEXISTING=Nu sunt liste
-SONG_MENU_NAME_PLAYLIST_NEW=listă nouă de cântece
+SONG_MENU_NAME_PLAYLIST_NEW=Listă nouă de cântece
SONG_MENU_PLAYLIST_NEW_CREATE=Creează
SONG_MENU_PLAYLIST_NEW_UNNAMED=Nedenumit
@@ -285,7 +268,7 @@ SONG_MENU_NAME_PLAYLIST_DEL=Ştergi listă?
SONG_MENU_NAME_PARTY_MAIN=Meniu Party
SONG_MENU_JOKER=Cântă unul la întâmplare
-SONG_MENU_NAME_PARTY_JOKER=la întâmplare
+SONG_MENU_NAME_PARTY_JOKER=La întâmplare
SONG_JUMPTO_DESC=Caută cântec
SONG_JUMPTO_TYPE_DESC=Caută după:
@@ -293,7 +276,7 @@ SONG_JUMPTO_TYPE1=Toate
SONG_JUMPTO_TYPE2=Titlu
SONG_JUMPTO_TYPE3=Artist
SONG_JUMPTO_SONGSFOUND=%d cântec(e) găsite
-SONG_JUMPTO_NOSONGSFOUND=nu s-au găsit cântece
+SONG_JUMPTO_NOSONGSFOUND=Nu s-au găsit cântece
SONG_JUMPTO_HELP=Introduce textul de căutat
SONG_JUMPTO_CATTEXT=Caută: %s
@@ -310,21 +293,21 @@ PARTY_TEAMS_PLAYER3=Număr membri:
PARTY_LEGEND_CONTINUE=Continuă
-PARTY_OPTIONS_DESC=opţiuni mod party
+PARTY_OPTIONS_DESC=Opţiuni mod party
PARTY_OPTIONS_WHEREAMI=Opţiuni mod party
-PARTY_PLAYER_DESC=introduce numele jucătorilor şi al echipelor
+PARTY_PLAYER_DESC=Introduce numele jucătorilor şi al echipelor
PARTY_PLAYER_WHEREAMI=Numele echipei
PARTY_PLAYER_ENTER_NAME=_Introduce nume
-PARTY_ROUNDS_DESC=alege ce mod vrei să joci
+PARTY_ROUNDS_DESC=Alege ce mod vrei să joci
PARTY_ROUNDS_WHEREAMI=Runde party
PARTY_ROUNDS_LEGEND_CONTINUE=Pornește joc party
PARTY_ROUNDCOUNT=Numărul de runde
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_SELECTMODE=Rundă %d
-PARTY_ROUND_DESC=următorii jucători la microfoane
+PARTY_ROUND_DESC=Următorii jucători la microfoane
PARTY_ROUND_WHEREAMI=Urmatoarea rundă
PARTY_ROUND_LEGEND_CONTINUE=Pornește runda
@@ -332,7 +315,7 @@ PARTY_SONG_WHEREAMI=Alege cântec party
PARTY_SONG_LEGEND_CONTINUE=Cântă
PARTY_SONG_MENU=Meniu party
-PARTY_SCORE_DESC=scorul ultimei runde
+PARTY_SCORE_DESC=Scorul ultimei runde
PARTY_SCORE_WHEREAMI=Puncte party
PARTY_WIN_DESC=Echipa câştigătoare
@@ -341,7 +324,7 @@ PARTY_WIN_LEGEND_CONTINUE=înapoi la meniul principal
PARTY_ROUND=Runda
PARTY_ROUND_WINNER=Câştigător
-PARTY_NOTPLAYEDYET=nejucat încă
+PARTY_NOTPLAYEDYET=Nejucat încă
PARTY_NOBODY=Nimeni
NEXT_ROUND=Urmatoarea rundă:
@@ -350,10 +333,10 @@ PARTY_SCORE_WINS=%s
PARTY_SCORE_WINS2=Câștigă!
MODE_RANDOM_NAME=Mod aleatoriu
-MODE_RANDOM_DESC=un mod va fi ales aleatoriu
+MODE_RANDOM_DESC=Un mod va fi ales aleatoriu
MODE_HOLDTHELINE_NAME=Păstrează linia
-MODE_HOLDTHELINE_DESC=menține punctajul mai mare decât cel afişat pe ecran
+MODE_HOLDTHELINE_DESC=Menține punctajul mai mare decât cel afişat pe ecran
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
@@ -365,7 +348,7 @@ MODE_HOLDTHELINE_DESC=menține punctajul mai mare decât cel afişat pe ecran
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Până la 5000
-MODE_5000POINTS_DESC=câștigă cel care obţine primul 5000 de puncte.
+MODE_5000POINTS_DESC=Câștigă cel care obţine primul 5000 de puncte.
;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
@@ -377,13 +360,13 @@ MODE_5000POINTS_DESC=câștigă cel care obţine primul 5000 de puncte.
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duel
-MODE_DUEL_DESC=cântă un duel la 10000 de puncte.
+MODE_DUEL_DESC=Cântă un duel la 10000 de puncte.
MODE_TEAMDUEL_NAME=Duel de echipe
-MODE_TEAMDUEL_DESC=dă mai departe microfonul!
+MODE_TEAMDUEL_DESC=Dă mai departe microfonul!
MODE_BLIND_NAME=Mod Orb
-MODE_BLIND_DESC=duel fără să vadă notele.
+MODE_BLIND_DESC=Duel fără să vadă notele.
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
@@ -407,7 +390,7 @@ MODE_BLIND_DESC=duel fără să vadă notele.
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Statistici
-STAT_MAIN_DESC=general
+STAT_MAIN_DESC=General
STAT_MAIN_WHEREAMI=Statistici
STAT_OVERVIEW_INTRO=%0:s \nStatistici \nUltima reinițiere pe %1:.2d.%2:.2d.%3:d
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Statistici detaliate
STAT_NEXT=Următoarele
STAT_PREV=Anterioare
STAT_REVERSE=Schimbă ordinea
-STAT_PAGE=pagina %0:d din %1:d pagini\n (%2:d din %3:d elemente)
+STAT_PAGE=Pagina %0:d din %1:d \n Elemente %2:d din %3:d
STAT_DESC_SCORES=Top punctaje
STAT_DESC_SCORES_REVERSED=Cele mai mici punctaje
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=Nu s-a putut salva fișierul
ERROR_FILE_NOT_FOUND=Fişierul nu a fost găsit
ENCODING_ERROR_ASK_FOR_UTF8=Nu se pot salva modificările în codificarea actuală. Convertesc la UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=nici o pistă aleasă
MSG_ERROR_TITLE=Eroare
MSG_INFO_TITLE=Informaţii
@@ -465,17 +447,16 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Imposibil de încărcat cântecul: Fişierul n
ERROR_CORRUPT_SONG_NO_NOTES=Nu pot încărca cântecul: Nu există note
ERROR_CORRUPT_SONG_NO_BREAKS=Nu pot încărca cântecul: Nu sunt pauze de linie
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Imposibil de încărcat cântecul: Eroare în analiza liniei %0:d
-ERROR_NO_EDITOR=Această caracteristică nu este disponibilă în Linux/Mac
ERROR_PLAYER_DEVICE_ASSIGNMENT=Jucătorului %d i s-au atribuit mai multe microfoane. Verifică opţiunile de microfon.
ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Jucătorului %d nu i s-a atribuit nici un microfon. Verifică opţiunile de microfon.
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Optiuni de Internet
+SING_OPTIONS_NETWORK_DESC=Setări Internet generale
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Nume de utilizator
+SING_OPTIONS_NETWORK_PASSWORD=Parola
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
@@ -487,21 +468,21 @@ ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Jucătorului %d nu i s-a atribuit nici un micr
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-;TODO: OPTION_ALL_PLAYERS=All
-;TODO: OPTION_ALL_SCORES=All
+OPTION_PLAYER_1=Jucător 1
+OPTION_PLAYER_2=Jucător 2
+OPTION_PLAYER_3=Jucător 3
+OPTION_PLAYER_4=Jucător 4
+OPTION_PLAYER_5=Jucător 5
+OPTION_PLAYER_6=Jucător 6
+OPTION_ALL_PLAYERS=Toate
+OPTION_ALL_SCORES=Toate
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-;TODO: MSG_INSERT_USER_CANCEL=Cancel
+MSG_INSERT_USER_ADD=Adăuga
+MSG_INSERT_USER_CANCEL=Anulare
;TODO: WEBSITE_NO_CONNECTION=No website connection!
;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
@@ -531,7 +512,7 @@ ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Jucătorului %d nu i s-a atribuit nici un micr
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Jucător
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
@@ -565,36 +546,6 @@ ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Jucătorului %d nu i s-a atribuit nici un micr
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Fişier salvat
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ INFO_FILE_SAVED=Fişier salvat
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
;TODO: SONG_MENU_NAME_SONG=Song Menu
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -635,9 +584,10 @@ INFO_FILE_SAVED=Fişier salvat
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
;TODO: SING_OPTIONS_WEBCAM_EFFECT=Effect
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Strălucire
+SING_OPTIONS_WEBCAM_SATURATION=Saturare
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Activați previzualizarea
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,60 +613,60 @@ INFO_FILE_SAVED=Fişier salvat
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Număr de jucători
+NAME_CURRENT_PLAYER=Jucător
;TODO: SING_OPTIONS_GAME_SONGMENU=Song Menu
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Ruletă
+OPTION_VALUE_CHESSBOARD=Tablă de şah
+OPTION_VALUE_CAROUSEL=Carusel
+OPTION_VALUE_SLOT_MACHINE=Jocuri mecanice
+OPTION_VALUE_LIST=Listă
+OPTION_VALUE_MOSAIC=Ţiglă
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
;TODO: OPTION_VALUE_TO_SING=Sing
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Superior
+OPTION_VALUE_NEXT=Inferior
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_GRAY=Gri
+OPTION_VALUE_WHITE=Alb
+OPTION_VALUE_TURQUOISE=Turcoaz
+OPTION_VALUE_SALMON=Somon
+OPTION_VALUE_GREENYELLOW=Verde galben
+OPTION_VALUE_LAVENDER=Lavandă
+OPTION_VALUE_BEIGE=Bej
;TODO: OPTION_VALUE_TEAL=Teal
;TODO: OPTION_VALUE_ORCHID=Orchid
;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
+OPTION_VALUE_CHOCOLATE=Ciocolată
+OPTION_VALUE_GOLD=Aur
+OPTION_VALUE_DARKBLUE=Albastru inchis
+OPTION_VALUE_SKY=Cer
+OPTION_VALUE_HARLEQUIN=Arlechin
+OPTION_VALUE_CYAN=Cyan
+OPTION_VALUE_FLAME=Flacără
;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Color
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparenţă
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Culoare
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Roșu
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Verde
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Albastru
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -727,7 +677,7 @@ INFO_FILE_SAVED=Fişier salvat
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
+SING_SONG_CREDITS=Credite
;TODO: SING_JUKEBOX=Jukebox
;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
@@ -738,13 +688,18 @@ INFO_FILE_SAVED=Fişier salvat
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-;TODO: OPTION_VALUE_ALL=All
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_ALL=Toate
+OPTION_VALUE_PLAYER=Jucător
+
+SING_ABOUT=Despre
+SING_ABOUT_DESC=Despre Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Despre...
+ABOUT_USDX_DEVELOPEDBY=Dezvoltat de
+ABOUT_CHECK_CHECKING=Verificarea noilor actualizări...
+ABOUT_CHECK_AVAILABLE=Există o nouă versiune disponibilă
+ABOUT_CHECK_UPTODATE=WorldParty este actualizată
+ABOUT_CHECK_CONNECTION=Nu există o conexiune la Internet
+ABOUT_OVERVIEW=Descoperiți un nou mod de a cânta singur, în cuplu sau cu prietenii.\n Distracția este garantată.\n\nWorldParty este o fork a versiunii originale Ultrastar Deluxe 1.1 proiectat și dezvoltat de echipa UltraStar España, contează cu cea mai mare comunitate de karaoke.\n\n\nAcest program este gratuit și liber în baza licenței GPL. \n\n Vizitați-ne pentru mai multe informații.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Dezvoltat de
+DEVELOPERS_OVERVIEW=Persoane care au contribuit la acest proiect:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Vizitați-ne pentru mai multe informații.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/Slovensk\303\275.ini" "b/game/languages/Slovensk\303\275.ini"
index 7c92b8f5..3af564b3 100644
--- "a/game/languages/Slovensk\303\275.ini"
+++ "b/game/languages/Slovensk\303\275.ini"
@@ -5,28 +5,28 @@ OPTION_VALUE_EASY=Ľahká
OPTION_VALUE_MEDIUM=Stredná
OPTION_VALUE_HARD=Ťažká
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+OPTION_VALUE_ON=Na
+OPTION_VALUE_OFF=Preč
-;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_EDITION=Vydanie
+OPTION_VALUE_GENRE=štýl
OPTION_VALUE_LANGUAGE=Jazyk
OPTION_VALUE_FOLDER=Kategória
-OPTION_VALUE_TITLE=v názve skladby
-OPTION_VALUE_ARTIST=v mene autora
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_TITLE=V názve skladby
+OPTION_VALUE_ARTIST=V mene autora
+OPTION_VALUE_TITLE2=V názve skladby2
+OPTION_VALUE_ARTIST2=V mene autora2
+OPTION_VALUE_YEAR=Rok
+OPTION_VALUE_DECADE=Desaťročia
OPTION_VALUE_PLAYLIST=Playlist
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maximalizované
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Keď nie je video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Keď nie je Video a obrázok
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
+OPTION_VALUE_SMALL=Malý
+OPTION_VALUE_BIG=Veľký
;TODO: OPTION_VALUE_HALF=Half
;TODO: OPTION_VALUE_FULL_VID=Full (Video)
@@ -38,192 +38,176 @@ OPTION_VALUE_PLAYLIST=Playlist
;TODO: OPTION_VALUE_AUTO=Auto
;TODO: OPTION_VALUE_SEC=Second
-;TODO: OPTION_VALUE_SECS=Seconds
+OPTION_VALUE_SECS=Sekundy
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=štylizovaný
+OPTION_VALUE_OLINE1=S tenkou hranou
+;TODO: OPTION_VALUE_OLINE2=With thick edge
-;TODO: OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_SIMPLE=Prostý
;TODO: OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Lopta
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
+OPTION_VALUE_EURO=Euro
+OPTION_VALUE_JAPAN=Japonsko
+OPTION_VALUE_AMERICAN=Americký
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
+OPTION_VALUE_BLUE=Modrá
+OPTION_VALUE_GREEN=Zelená
+OPTION_VALUE_PINK=Ružová
+OPTION_VALUE_RED=červená
+OPTION_VALUE_VIOLET=Fialový
+OPTION_VALUE_ORANGE=Oranžový
+OPTION_VALUE_YELLOW=žltá
+OPTION_VALUE_BROWN=Hnedý
+OPTION_VALUE_BLACK=čierna
OPTION_VALUE_SING=Hra
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
+OPTION_VALUE_SELECT_PLAYERS=Vyberte možnosť Hráči
+OPTION_VALUE_OPEN_MENU=Otvorte ponuku
SING_LOADING=... nahráva sa hra !
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
-SING_CHOOSE_MODE=vyberte si z možností
+SING_CHOOSE_MODE=Vyberte si z možností
SING_SING=Hra
-SING_SING_DESC=sólo alebo duet
+SING_SING_DESC=Sólo alebo duet
SING_MULTI=Párty
-SING_MULTI_DESC=párty-mód
+SING_MULTI_DESC=Párty-mód
SING_TOOLS=Nástroje
SING_STATS=štatistika
-SING_STATS_DESC=zobraziť štatistiku
-
-SING_EDITOR=editor
-SING_EDITOR_DESC=vytvorte si vlastnú skladbu
+SING_STATS_DESC=Zobraziť štatistiku
-SING_GAME_OPTIONS=nastavenia
-SING_GAME_OPTIONS_DESC=nastavenia hry
+SING_GAME_OPTIONS=Nastavenia
+SING_GAME_OPTIONS_DESC=Nastavenia hry
SING_EXIT=Koniec
-SING_EXIT_DESC=návrat do systému
+SING_EXIT_DESC=Návrat do systému
-SING_OPTIONS=nastavenia
-SING_OPTIONS_DESC=zmeniť nastavenia
+SING_OPTIONS=Nastavenia
+SING_OPTIONS_DESC=Zmeniť nastavenia
SING_OPTIONS_WHEREAMI=Nastavenia
-SING_OPTIONS_GAME=hra
-SING_OPTIONS_GRAPHICS=grafika
-SING_OPTIONS_SOUND=zvuk
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=text
-SING_OPTIONS_THEMES=témy
-SING_OPTIONS_RECORD=mikrofón
-SING_OPTIONS_ADVANCED=iné
-SING_OPTIONS_EXIT=späť
+SING_OPTIONS_GAME=Hra
+SING_OPTIONS_GRAPHICS=Grafika
+SING_OPTIONS_SOUND=Zvuk
+SING_OPTIONS_LYRICS=Text
+SING_OPTIONS_THEMES=Témy
+SING_OPTIONS_MICROPHONES=Mikrofón
+SING_OPTIONS_ADVANCED=Iné
+SING_OPTIONS_EXIT=Späť
SING_OPTIONS_GAME_WHEREAMI=Nastavenia hry
-SING_OPTIONS_GAME_DESC=všeobecné nastavenia
+SING_OPTIONS_GAME_DESC=Všeobecné nastavenia
SING_OPTIONS_GAME_PLAYERS=Počet hráčov
SING_OPTIONS_GAME_DIFFICULTY=Obtiažnosť
SING_OPTIONS_GAME_LANGUAGE=Jazyk
SING_OPTIONS_GAME_TABS=Kategórie
SING_OPTIONS_GAME_SORTING=Zoradenie
-SING_OPTIONS_GAME_DEBUG=Debug mód
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivujte gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Grafika
-SING_OPTIONS_GRAPHICS_DESC=nastavenie grafických detailov
+SING_OPTIONS_GRAPHICS_DESC=Nastavenie grafických detailov
SING_OPTIONS_GRAPHICS_RESOLUTION=Rozlíšenie
SING_OPTIONS_GRAPHICS_FULLSCREEN=Celá obrazovka
-SING_OPTIONS_GRAPHICS_DEPTH=Far. hĺbka
-;TODO: SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efekty pri speve
+SING_OPTIONS_GRAPHICS_SCREENFADE=Jemný prechod
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animácia loading(u)
+SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizácia
SING_OPTIONS_GRAPHICS_LINEBONUS=Čiarový Bonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Zobrazenie videa
SING_OPTIONS_SOUND_WHEREAMI=Zvuk
-SING_OPTIONS_SOUND_DESC=nastavenie zvuku
-;TODO: SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-;TODO: SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Zosilnenie mikrof.
+SING_OPTIONS_SOUND_DESC=Nastavenie zvuku
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Počuj môj hlas
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hudba v pozadí
SING_OPTIONS_SOUND_CLICK_ASSIST=Pomocný klik
SING_OPTIONS_SOUND_BEAT_CLICK=Rytmický klik
-SING_OPTIONS_SOUND_THRESHOLD=Prah počuteľ.
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mód dvoch hráčov
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Náhľad(volume)
SING_OPTIONS_SOUND_PREVIEWFADING=Prechod skladieb
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Text
-SING_OPTIONS_LYRICS_DESC=nastavenia zobrazovania textov piesní
+SING_OPTIONS_LYRICS_DESC=Nastavenia zobrazovania textov piesní
SING_OPTIONS_LYRICS_FONT=Písmo
SING_OPTIONS_LYRICS_EFFECT=Efekt zvýraznenia
SING_OPTIONS_LYRICS_SOLMIZATION=Solmizácia
;TODO: SING_OPTIONS_LYRICS_NOTELINES=Staves
SING_OPTIONS_THEMES_WHEREAMI=Témy
-SING_OPTIONS_THEMES_DESC=zmena témy
+SING_OPTIONS_THEMES_DESC=Zmena témy
SING_OPTIONS_THEMES_THEME=Téma
SING_OPTIONS_THEMES_SKIN=Vzhľad
SING_OPTIONS_THEMES_COLOR=Farba
-SING_OPTIONS_RECORD_WHEREAMI=Mikrofón
-SING_OPTIONS_RECORD_DESC=nastavenie mikrofónu
-SING_OPTIONS_RECORD_CARD=Zvuková karta
-SING_OPTIONS_RECORD_INPUT=Vstup
-SING_OPTIONS_RECORD_CHANNEL=Kanál
+SING_OPTIONS_MICROPHONES_WHEREAMI=Mikrofón
+SING_OPTIONS_MICROPHONES_DESC=Nastavenie mikrofónu
+SING_OPTIONS_MICROPHONES_CARD=Zvuková karta
+SING_OPTIONS_MICROPHONES_INPUT=Vstup
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanál
+SING_OPTIONS_MICROPHONES_THRESHOLD=Prah počuteľ.
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Zosilnenie mikrof.
SING_OPTIONS_ADVANCED_WHEREAMI=Iné
-SING_OPTIONS_ADVANCED_DESC=rozširujúce nastavenia
-SING_OPTIONS_ADVANCED_EFFECTSING=Efekty pri speve
-SING_OPTIONS_ADVANCED_SCREENFADE=Jemný prechod
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animácia loading(u)
+SING_OPTIONS_ADVANCED_DESC=Rozširujúce nastavenia
+SING_OPTIONS_ADVANCED_DEBUG=Debug mód
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Potvrdzovanie
SING_OPTIONS_ADVANCED_LINEBONUS=Bonus za riadok
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Po zvolení skladby
SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto PartyMenu
-SING_EDIT=editor
-SING_EDIT_MENU_DESCRIPTION=vytvorte si vlastnú skladbu
-
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Import text from midi file
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=späť
-;TODO: SING_EDIT_BUTTON_CONVERT=Import
-SING_EDIT_BUTTON_EXIT=späť
-
-SING_EDIT_NAVIGATE=navigácia
-SING_EDIT_SELECT=výber
-SING_EDIT_EXIT=späť
+SING_LEGEND_SELECT=Výber
+SING_LEGEND_NAVIGATE=Navigácia
+SING_LEGEND_CONTINUE=Pokračovať
+SING_LEGEND_ESC=Späť
-SING_LEGEND_SELECT=výber
-SING_LEGEND_NAVIGATE=navigácia
-SING_LEGEND_CONTINUE=pokračovať
-SING_LEGEND_ESC=späť
-
-SING_PLAYER_DESC=zadajte meno hráča(ov)
-SING_PLAYER_WHEREAMI=Mená hráčov
-SING_PLAYER_ENTER_NAME=zadávanie mena
+SING_PLAYER_TITLE=Profily
+SING_PLAYER_READY=Hráči pripravené spievať
+SING_PLAYER_COUNT=Počet hráčov
+SING_PLAYER_EDIT=Prispôsobte si prehrávač
+SING_PLAYER_NAME=Napíšte svoje meno
+SING_PLAYER_COLOR=Vyberte farbu
+SING_PLAYER_LEVEL=Vyberte úroveň
+SING_PLAYER_AVATAR=Vyberte svoj avatar
SING_DIFFICULTY_DESC=Vyberte obtiažnosť
SING_DIFFICULTY_WHEREAMI=Obtiažnosť
-SING_DIFFICULTY_CONTINUE=pokračovať
+SING_DIFFICULTY_CONTINUE=Pokračovať
SING_EASY=Ľahká
SING_MEDIUM=Stredná
SING_HARD=Ťažká
SING_SONG_SELECTION_DESC=Vyberte skladbu
-SING_SONG_SELECTION_WHEREAMI=výber skladby
-SING_SONG_SELECTION_GOTO=choď na ..
-SING_SONG_SELECTION=výber skladby
-SING_SONG_SELECTION_MENU=menu
-SING_SONG_SELECTION_PLAYLIST=playlist
+SING_SONG_SELECTION_WHEREAMI=Výber skladby
+SING_SONG_SELECTION_GOTO=Choď na ..
+SING_SONG_SELECTION=Výber skladby
+SING_SONG_SELECTION_MENU=Menu
+SING_SONG_SELECTION_PLAYLIST=Playlist
+SING_SONG_IN_CAT=Pieseň
SING_SONGS_IN_CAT=Skladba
PLAYLIST_CATTEXT=Playlist: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=celkovo
-SING_MODE=spievať sólo
-SING_NOTES=noty
-SING_GOLDEN_NOTES=zlaté noty
-SING_PHRASE_BONUS=bonus za riadok
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
+
+SING_TOTAL=Celkovo
+SING_MODE=Spievať sólo
+SING_NOTES=Noty
+SING_GOLDEN_NOTES=Zlaté noty
+SING_PHRASE_BONUS=Bonus za riadok
SING_MENU=Hlavné Menu
-SONG_SCORE=hodnotenie
+SONG_SCORE=Hodnotenie
SONG_SCORE_WHEREAMI=Skóre
SING_SCORE_TONE_DEAF=Antitalent
@@ -235,19 +219,19 @@ SING_SCORE_LEAD_SINGER=Spevák
SING_SCORE_SUPERSTAR=Superstar
SING_SCORE_ULTRASTAR=Ultrastar
-SING_TOP_5_CHARTS=najlepších 5
-SING_TOP_5_CHARTS_WHEREAMI=top 5
-SING_TOP_5_CHARTS_CONTINUE=pre výber skladby
+SING_TOP_5_CHARTS=Najlepších 5
+SING_TOP_5_CHARTS_WHEREAMI=Top 5
+SING_TOP_5_CHARTS_CONTINUE=Pre výber skladby
;TODO: SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=neskutočné!
-POPUP_AWESOME=paráda!
-POPUP_GREAT=super!
-POPUP_GOOD=dobré!
-POPUP_NOTBAD=nie zlé!
-POPUP_BAD=zle!
-POPUP_POOR=bieda!
-POPUP_AWFUL=otrasné!
+POPUP_PERFECT=Neskutočné!
+POPUP_AWESOME=Paráda!
+POPUP_GREAT=Super!
+POPUP_GOOD=Dobré!
+POPUP_NOTBAD=Nie zlé!
+POPUP_BAD=Zle!
+POPUP_POOR=Bieda!
+POPUP_AWFUL=Otrasné!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= a
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= a
SONG_MENU_NAME_MAIN=Výber hudby
SONG_MENU_PLAY=Štart
SONG_MENU_CHANGEPLAYERS=Iný hráč
-SONG_MENU_EDIT=Uprav
SONG_MENU_MODI=Sing a Modi
SONG_MENU_CANCEL=Zrušiť
@@ -264,8 +247,8 @@ SONG_MENU_PLAYLIST_ADD=Pridaj skladbu
SONG_MENU_PLAYLIST_DEL=Zmaž skladbu
SONG_MENU_NAME_PLAYLIST_ADD=Pridaj Skladbu
-SONG_MENU_PLAYLIST_ADD_NEW=do nového playlistu
-SONG_MENU_PLAYLIST_ADD_EXISTING=do existujúceho playlistu
+SONG_MENU_PLAYLIST_ADD_NEW=Do nového playlistu
+SONG_MENU_PLAYLIST_ADD_EXISTING=Do existujúceho playlistu
SONG_MENU_PLAYLIST_NOEXISTING=Nie je dostupný žiadny playlist
SONG_MENU_NAME_PLAYLIST_NEW=Nový Playlist
@@ -277,27 +260,27 @@ SONG_MENU_YES=Áno
SONG_MENU_NO=Nie
SONG_MENU_NAME_PLAYLIST_LOAD=Načítaj Playlist
-SONG_MENU_PLAYLIST_LOAD=načítaj
-SONG_MENU_PLAYLIST_DELCURRENT=zmaž tento Playlist
+SONG_MENU_PLAYLIST_LOAD=Načítaj
+SONG_MENU_PLAYLIST_DELCURRENT=Zmaž tento Playlist
SONG_MENU_NAME_PLAYLIST_DEL=Zmazať Playlist?
SONG_MENU_NAME_PARTY_MAIN=Party Menu
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=použi jokera
+SONG_MENU_NAME_PARTY_JOKER=Použi jokera
-SONG_JUMPTO_DESC=hľadaj skladbu
-SONG_JUMPTO_TYPE_DESC=hľadaj:
-SONG_JUMPTO_TYPE1=všade
-SONG_JUMPTO_TYPE2=v názve skladby
-SONG_JUMPTO_TYPE3=v mene autora
+SONG_JUMPTO_DESC=Hľadaj skladbu
+SONG_JUMPTO_TYPE_DESC=Hľadaj:
+SONG_JUMPTO_TYPE1=Všade
+SONG_JUMPTO_TYPE2=V názve skladby
+SONG_JUMPTO_TYPE3=V mene autora
SONG_JUMPTO_SONGSFOUND=%d skladieb vyhovuje filtru
SONG_JUMPTO_NOSONGSFOUND=Žiadna skladba
SONG_JUMPTO_HELP=Napíš kľúčové slovo pre hľadanie
SONG_JUMPTO_CATTEXT=Hľadaj: %s
-PARTY_MODE=párty mód
+PARTY_MODE=Párty mód
PARTY_DIFFICULTY=Obtiažnosť
PARTY_PLAYLIST=Skladby z playlistu
PARTY_PLAYLIST_ALL=Všetky skladby
@@ -308,14 +291,14 @@ PARTY_TEAMS_PLAYER1=Hráčov v Tíme 1
PARTY_TEAMS_PLAYER2=Hráčov v Tíme 2
PARTY_TEAMS_PLAYER3=Hráčov v Tíme 3
-PARTY_LEGEND_CONTINUE=pokračovať
+PARTY_LEGEND_CONTINUE=Pokračovať
-PARTY_OPTIONS_DESC=nastavenia pre párty-mód
+PARTY_OPTIONS_DESC=Nastavenia pre párty-mód
PARTY_OPTIONS_WHEREAMI=Párty nastavenia
PARTY_PLAYER_DESC=Zadajte mená tímov a hráčov!
PARTY_PLAYER_WHEREAMI=Párty mená
-PARTY_PLAYER_ENTER_NAME=zadajte mená
+PARTY_PLAYER_ENTER_NAME=Zadajte mená
;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
@@ -324,30 +307,30 @@ PARTY_ROUNDS_LEGEND_CONTINUE=Pokračovať
;TODO: PARTY_ROUNDCOUNT=Number of rounds
;TODO: PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=párty pre hráčov
+PARTY_ROUND_DESC=Párty pre hráčov
PARTY_ROUND_WHEREAMI=List párty disciplín
PARTY_ROUND_LEGEND_CONTINUE=Štart disciplíny
PARTY_SONG_WHEREAMI=Párty - Výver Skladby
PARTY_SONG_LEGEND_CONTINUE=Štart
-PARTY_SONG_MENU=party menu
+PARTY_SONG_MENU=Party menu
-PARTY_SCORE_DESC=skóre posledného kola
+PARTY_SCORE_DESC=Skóre posledného kola
PARTY_SCORE_WHEREAMI=Párty skóre
PARTY_WIN_DESC=Víťaz párty
PARTY_WIN_WHEREAMI=Stupeň víťazov
-PARTY_WIN_LEGEND_CONTINUE=späť do hlavného menu
+PARTY_WIN_LEGEND_CONTINUE=Späť do hlavného menu
PARTY_ROUND=Kolo
PARTY_ROUND_WINNER=Víťaz
-PARTY_NOTPLAYEDYET=nehralo
-PARTY_NOBODY=ani jedno družstvo
+PARTY_NOTPLAYEDYET=Nehralo
+PARTY_NOBODY=Ani jedno družstvo
NEXT_ROUND=Ďalšie kolo:
PARTY_DISMISSED=Ukončené !
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=víťaz tohto kola
+PARTY_SCORE_WINS2=Víťaz tohto kola
;TODO: MODE_RANDOM_NAME=Random Mode
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Podrobná štatistika
STAT_NEXT=Ďalšia strana
STAT_PREV=Predošlá strana
STAT_REVERSE=Otoč poradie
-STAT_PAGE=%0:d. z %1:d strán\n (%2:d z %3:d položiek)
+STAT_PAGE=%0:d. z %1:d strán \n %2:d z %3:d Položiek
STAT_DESC_SCORES=Najvyššie skóre
STAT_DESC_SCORES_REVERSED=Najhoršie skóre
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx spievaná
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Chyba
;TODO: MSG_INFO_TITLE=Information
@@ -465,36 +447,35 @@ ERROR_CORRUPT_SONG=Skladbu sa nepodarilo nahrať.
;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Prehrávač %d je priradený k viac mikrofónov. Skontrolujte možnosti mikrofónu
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Prehrávač %d nie je priradený mikrofónu. Skontrolujte možnosti mikrofónu
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Možnosti internetu
;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Užívateľské meno
+SING_OPTIONS_NETWORK_PASSWORD=Heslo
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Prehrávač
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=všade
-OPTION_ALL_SCORES=všade
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Vymazať
+
+OPTION_PLAYER_1=Prehrávač 1
+OPTION_PLAYER_2=Prehrávač 2
+OPTION_PLAYER_3=Prehrávač 3
+OPTION_PLAYER_4=Prehrávač 4
+OPTION_PLAYER_5=Prehrávač 5
+OPTION_PLAYER_6=Prehrávač 6
+OPTION_ALL_PLAYERS=Všade
+OPTION_ALL_SCORES=Všade
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
@@ -531,7 +512,7 @@ MSG_INSERT_USER_CANCEL=Zrušiť
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Prehrávač
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
@@ -561,40 +542,10 @@ SCORE_DOWNLOAD_CANCEL=Zrušiť
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=párty pre hráčov
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Párty pre hráčov
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=párty pre hráčov
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Skladby
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -622,7 +571,7 @@ SONG_MENU_DELETE_SONG=Zmaž skladbu
;TODO: SONG_MENU_NAME_SORTING=Sort Menu
;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
;TODO: SONG_MENU_SORTING_TABS_OFF=Tabs Off
-SONG_MENU_SORTING_ALL=všade
+SONG_MENU_SORTING_ALL=Všade
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
@@ -636,8 +585,9 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Rozlíšenie
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Efekt zvýraznenia
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_SATURATION=Nasýtenia
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,45 +613,45 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Prah počuteľ.
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+;TODO: NAME_PLAYERS_COUNT=Počet hráčov
+;TODO: NAME_CURRENT_PLAYER=Prehrávač
SING_OPTIONS_GAME_SONGMENU=Skladby
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Ruleta
+OPTION_VALUE_CHESSBOARD=šachovnica
+OPTION_VALUE_CAROUSEL=Kolotoč
+OPTION_VALUE_SLOT_MACHINE=Automat
+OPTION_VALUE_LIST=Zoznam
+OPTION_VALUE_MOSAIC=Dlaždice
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Hra
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Vrchný
+OPTION_VALUE_NEXT=Dno
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
+OPTION_VALUE_GRAY=šedá
+OPTION_VALUE_WHITE=Biely
+OPTION_VALUE_TURQUOISE=Tyrkysová
+OPTION_VALUE_SALMON=Losos
;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+OPTION_VALUE_LAVENDER=Levanduľa
+OPTION_VALUE_BEIGE=Béžový
+OPTION_VALUE_TEAL=Modrozelený
+OPTION_VALUE_ORCHID=Orchidea
+OPTION_VALUE_STEELBLUE=Oceľová modrá
;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
+OPTION_VALUE_CHOCOLATE=čokoláda
+OPTION_VALUE_GOLD=Zlato
+OPTION_VALUE_DARKBLUE=Tmavomodrá
+OPTION_VALUE_SKY=Neba
+OPTION_VALUE_HARLEQUIN=Harlekýn
+OPTION_VALUE_CYAN=Tyrkysový
+OPTION_VALUE_FLAME=Plameň
;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
@@ -710,13 +660,13 @@ OPTION_VALUE_TO_SING=Hra
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Priehľadnosť
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Farba
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=červená
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zelená
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Modrá
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -738,13 +688,18 @@ JUKEBOX_OPTIONS_PLAYLIST=Playlist
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=všade
+OPTION_VALUE_ALL=Všade
;TODO: OPTION_VALUE_PLAYER=Player
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+SING_ABOUT=O
+SING_ABOUT_DESC=O Ultrastar Deluxe WorldParty
+ABOUT_MAIN=O...
+ABOUT_USDX_DEVELOPEDBY=Vyvinutý
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Objavte nový spôsob spevu, sám, v páre alebo s priateľmi. \n Zábava je zaručená.\n\nWorldParty je fork pôvodnej verzie Ultrastar Deluxe 1.1 navrhnutý a vyvinutý tímom UltraStar España, počíta s najväčšou karaoke komunitou.\n\n\nTento program je bezplatný a libre pod licenciou GPL. \n\n Navštívte nás pre viac informácií.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Vyvinutý
+DEVELOPERS_OVERVIEW=Ľudia, ktorí prispeli k tomuto projektu:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Navštívte nás pre viac informácií.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/Sloven\305\241\304\215ina.ini" "b/game/languages/Sloven\305\241\304\215ina.ini"
index 1283fc04..1d1e02ab 100644
--- "a/game/languages/Sloven\305\241\304\215ina.ini"
+++ "b/game/languages/Sloven\305\241\304\215ina.ini"
@@ -1,36 +1,110 @@
[Text]
LANGUAGE=Slovenščina
+SING_LOADING=Nalaganje...
+SING_LOADING_SONGS=Nalaganje skladb iz mape %s
+
+SING_SING=Poj
+SING_SING_DESC=Poj sam ali v duetu
+
+SING_MULTI=Zabava
+SING_MULTI_DESC=Poj v nacinu zabave
+
+;TODO: SING_JUKEBOX=Jukebox
+;TODO: SING_JUKEBOX_DESC=Listen to my collection
+
+SING_STATS=Statistika
+SING_STATS_DESC=Poglej statistiko
+
+SING_GAME_OPTIONS=Nastavitve igre
+SING_GAME_OPTIONS_DESC=Spremeni nastavitve igre
+
+SING_EXIT=Izhod
+SING_EXIT_DESC=Izhod iz igre
+
+SING_ABOUT=O
+SING_ABOUT_DESC=O Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profili
+SING_PLAYER_READY=Igralci pripravljeni na peti
+SING_PLAYER_COUNT=Število igralcev
+SING_PLAYER_EDIT=Prilagodite predvajalnik
+SING_PLAYER_NAME=Napiši svoje ime
+SING_PLAYER_COLOR=Izberite barvo
+SING_PLAYER_LEVEL=Izberite raven
+SING_PLAYER_AVATAR=Izberite svoj avatar
+
OPTION_VALUE_EASY=Enostavno
OPTION_VALUE_MEDIUM=Srednje
OPTION_VALUE_HARD=Težko
+SING_OPTIONS=Nastavitve
+
+SING_OPTIONS_GAME=Igra
+SING_OPTIONS_GRAPHICS=Izgled
+SING_OPTIONS_SOUND=Zvok
+SING_OPTIONS_LYRICS=Besedilo
+SING_OPTIONS_THEMES=Tema
+SING_OPTIONS_MICROPHONES=Mikrofoni
+SING_OPTIONS_ADVANCED=Napredno
+SING_OPTIONS_NETWORK=Internet
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+;TODO: SING_OPTIONS_JUKEBOX=Jukebox
+SING_OPTIONS_EXIT=Nazaj
+
+SING_OPTIONS_GAME_LANGUAGE=Jezik
+SING_OPTIONS_GAME_SONGMENU=Meni Pesem
+SING_OPTIONS_GAME_TABS=Mape
+SING_OPTIONS_GAME_SORTING=Sortiranje
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivirajte gamepad
+
+OPTION_VALUE_ROULETTE=Ruleta
+OPTION_VALUE_CHESSBOARD=Šahovnica
+OPTION_VALUE_CAROUSEL=Vrtiljaka
+OPTION_VALUE_SLOT_MACHINE=Igralni avtomat
+OPTION_VALUE_LIST=Seznam
+;TODO: OPTION_VALUE_MOSAIC=Tile
+
;TODO: OPTION_VALUE_ON=On
;TODO: OPTION_VALUE_OFF=Off
-;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_EDITION=Izdaja
+OPTION_VALUE_GENRE=Žanr
OPTION_VALUE_LANGUAGE=Jezik
OPTION_VALUE_FOLDER=Mapa
OPTION_VALUE_TITLE=Naslov
OPTION_VALUE_ARTIST=Avtor
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_ARTIST2=Avtor2
+OPTION_VALUE_YEAR=Leto
+OPTION_VALUE_DECADE=Desetletje
OPTION_VALUE_PLAYLIST=Seznam
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Celozaslonski nacin
+SING_OPTIONS_GRAPHICS_RESOLUTION=Locljivost
+SING_OPTIONS_GRAPHICS_SCREENFADE=Zamegljevanje prikaza
+SING_OPTIONS_GRAPHICS_EFFECTSING=Pevski efekt
+SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizacija
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa
+
+OPTION_VALUE_BORDERLESS=Brez robov
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
+OPTION_VALUE_WHENNOVIDEO=Kadar ni videa
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Kadar ni videa in slike
-;TODO: OPTION_VALUE_HALF=Half
-;TODO: OPTION_VALUE_FULL_VID=Full (Video)
-;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
+OPTION_VALUE_HALF=Polovica
+OPTION_VALUE_FULL_VID=Poln (Video)
+OPTION_VALUE_FULL_VID_BG=Poln (BG & Video)
+
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofonski Playback
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Glasbena podlaga
+SING_OPTIONS_SOUND_CLICK_ASSIST=Asistent klikanja
+SING_OPTIONS_SOUND_BEAT_CLICK=Klikanje po ritmu
+;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Glasnost predogleda
+SING_OPTIONS_SOUND_PREVIEWFADING=Narašcanje glasnosti
;TODO: OPTION_VALUE_GAIN_SOFT=Soft
;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
@@ -40,190 +114,214 @@ OPTION_VALUE_PLAYLIST=Seznam
;TODO: OPTION_VALUE_SEC=Second
;TODO: OPTION_VALUE_SECS=Seconds
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+SING_OPTIONS_LYRICS_FONT=Pisava
+SING_OPTIONS_LYRICS_EFFECT=Ucinek
+SING_OPTIONS_LYRICS_NOTELINES=Notno crtovje
+
+OPTION_VALUE_PLAIN=Stilizirano
+OPTION_VALUE_OLINE1=S tankim robom
+OPTION_VALUE_OLINE2=Z debelim robom
-;TODO: OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_SIMPLE=Preprosto
;TODO: OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Krogla
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
-
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
-
-OPTION_VALUE_SING=poj
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
-SING_LOADING=Nalaganje...
+SING_OPTIONS_THEMES_THEME=Tema
+SING_OPTIONS_THEMES_SKIN=Izgled
+SING_OPTIONS_THEMES_COLOR=Barva
-SING_CHOOSE_MODE=izberi nacin
-SING_SING=poj
-SING_SING_DESC=poj sam ali v duetu
+SING_OPTIONS_MICROPHONES_CARD=Vir zvoka
+SING_OPTIONS_MICROPHONES_INPUT=Vhod
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Prag
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Ojacitev mikrofona
-SING_MULTI=zabava
-SING_MULTI_DESC=poj v nacinu zabave
+SING_OPTIONS_ADVANCED_DEBUG=Odpravljanje hrošcev
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskop
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Po izboru pesmi
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Zašcitno vprašanje
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Samodejni nacin Zabava
+;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
+;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-SING_TOOLS=orodja
+OPTION_VALUE_ALL=Vse
+OPTION_VALUE_PLAYER=Igralec
-SING_STATS=statistika
-SING_STATS_DESC=poglej statistiko
+;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+SING_OPTIONS_NETWORK_USERNAME=Uporabniško ime
+SING_OPTIONS_NETWORK_PASSWORD=Geslo
+;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Igralec
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Vstavi
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Izbriši
+
+OPTION_PLAYER_1=Igralec 1
+OPTION_PLAYER_2=Igralec 2
+OPTION_PLAYER_3=Igralec 3
+OPTION_PLAYER_4=Igralec 4
+OPTION_PLAYER_5=Igralec 5
+OPTION_PLAYER_6=Igralec 6
+OPTION_ALL_PLAYERS=Vse
+OPTION_ALL_SCORES=Vse
+;TODO: OPTION_VALUE_SAVE=Save
+;TODO: OPTION_VALUE_SEND=Send
-SING_EDITOR=urednik
-SING_EDITOR_DESC=izdelaj svoje pesmi
+;TODO: MSG_INSERT_USER_TITLE=%0:s
+;TODO: MSG_INSERT_USER_DESC=Fill the fields:
+MSG_INSERT_USER_ADD=Dodaj
+MSG_INSERT_USER_CANCEL=Preklici
-SING_GAME_OPTIONS=nastavitve igre
-SING_GAME_OPTIONS_DESC=spremeni nastavitve igre
+;TODO: WEBSITE_NO_CONNECTION=No website connection!
+;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
+;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
+;TODO: WEBSITE_EXIST_USER=Existing user!
+;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
+;TODO: WEBSITE_OK_SEND=Score sent successfully!
+;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+;TODO: WEBSITE_ERROR_SONG=Song Not Found!
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-SING_EXIT=izhod
-SING_EXIT_DESC=izhod iz igre
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-SING_OPTIONS=nastavitve
-SING_OPTIONS_DESC=spremeni nastavitve
-SING_OPTIONS_WHEREAMI=Nastavitve
+;TODO: SONG_SCORE_MAX=Best:
+;TODO: SONG_SCORE_MEDIA=Average:
-SING_OPTIONS_GAME=igra
-SING_OPTIONS_GRAPHICS=izgled
-SING_OPTIONS_SOUND=zvok
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=besedilo
-SING_OPTIONS_THEMES=tema
-SING_OPTIONS_RECORD=snemanje
-SING_OPTIONS_ADVANCED=napredno
-SING_OPTIONS_EXIT=nazaj
+;TODO: SCORE_SEND_DESC=Send Score
+;TODO: SCORE_SEND=Send
+SCORE_SEND_PLAYER=Igralec
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
-SING_OPTIONS_GAME_WHEREAMI=Nastavitve Igre
-SING_OPTIONS_GAME_DESC=osnovne nastavitve
-SING_OPTIONS_GAME_PLAYERS=Igralci
-SING_OPTIONS_GAME_DIFFICULTY=Težavnost
-SING_OPTIONS_GAME_LANGUAGE=Jezik
-SING_OPTIONS_GAME_TABS=Mape
-SING_OPTIONS_GAME_SORTING=Sortiranje
-SING_OPTIONS_GAME_DEBUG=Odpravljanje hrošcev
+SCORE_DOWNLOAD_TITLE=Prenesi
+SCORE_DOWNLOAD_SONG=Pesem:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Preklici
+;TODO: SCORE_DOWNLOAD_OK=OK
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-SING_OPTIONS_GRAPHICS_WHEREAMI=Nastavitve prikaza
-SING_OPTIONS_GRAPHICS_DESC=nastavitve prikaza
-SING_OPTIONS_GRAPHICS_RESOLUTION=Locljivost
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Celozaslonski nacin
-SING_OPTIONS_GRAPHICS_DEPTH=Globina
-SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizacija
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop
-SING_OPTIONS_GRAPHICS_LINEBONUS=Vrsticni bonus
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Locljivost
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Ucinek
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
-SING_OPTIONS_SOUND_WHEREAMI=Nastavitve zvoka
-SING_OPTIONS_SOUND_DESC=nastavitve zvoka
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofonski Playback
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Glasbena podlaga
-SING_OPTIONS_SOUND_MIC_BOOST=Ojacitev mikrofona
-SING_OPTIONS_SOUND_CLICK_ASSIST=Asistent klikanja
-SING_OPTIONS_SOUND_BEAT_CLICK=Klikanje po ritmu
-SING_OPTIONS_SOUND_THRESHOLD=Prag
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Nacin za dva igralca
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Glasnost predogleda
-SING_OPTIONS_SOUND_PREVIEWFADING=narašcanje glasnosti
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Prag
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Preglednost
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Barva
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Rdeča
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zelena
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Modra
-SING_OPTIONS_LYRICS_WHEREAMI=Nastavitve besedila
-SING_OPTIONS_LYRICS_DESC=nastavitve besedila
-SING_OPTIONS_LYRICS_FONT=Pisava
-SING_OPTIONS_LYRICS_EFFECT=Ucinek
-SING_OPTIONS_LYRICS_SOLMIZATION=Solmizacija
-SING_OPTIONS_LYRICS_NOTELINES=Notno crtovje
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-SING_OPTIONS_THEMES_WHEREAMI=Nastavitve tem
-SING_OPTIONS_THEMES_DESC=nastavitve teme
-SING_OPTIONS_THEMES_THEME=Tema
-SING_OPTIONS_THEMES_SKIN=Izgled
-SING_OPTIONS_THEMES_COLOR=Barva
+OPTION_VALUE_TO_SING=Poj
+OPTION_VALUE_ACTUAL=Zgornja
+OPTION_VALUE_NEXT=Spodnja
+;TODO: OPTION_VALUE_OTHER=Other
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Modra
+OPTION_VALUE_GREEN=Zelena
+OPTION_VALUE_PINK=Roza
+OPTION_VALUE_RED=Rdeča
+OPTION_VALUE_VIOLET=Violet
+OPTION_VALUE_ORANGE=Oranžna
+OPTION_VALUE_YELLOW=Rumena
+OPTION_VALUE_BROWN=Rjav
+OPTION_VALUE_BLACK=Črna
+OPTION_VALUE_MAGENTA=Magenta
+;TODO: OPTION_VALUE_GRAY=Gray
+;TODO: OPTION_VALUE_WHITE=White
+;TODO: OPTION_VALUE_TURQUOISE=Turquoise
+;TODO: OPTION_VALUE_SALMON=Salmon
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+;TODO: OPTION_VALUE_LAVENDER=Lavender
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
+;TODO: OPTION_VALUE_GOLD=Gold
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+;TODO: OPTION_VALUE_SKY=Sky
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
-SING_OPTIONS_RECORD_WHEREAMI=Nastavitve snemanja
-SING_OPTIONS_RECORD_DESC=nastavitve mikrofona
-SING_OPTIONS_RECORD_CARD=Vir zvoka
-SING_OPTIONS_RECORD_INPUT=Vhod
-SING_OPTIONS_RECORD_CHANNEL=Kanal
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Napredne nastavitve
-SING_OPTIONS_ADVANCED_DESC=Napredne nastavitve
-SING_OPTIONS_ADVANCED_EFFECTSING=Pevski efekt
-SING_OPTIONS_ADVANCED_SCREENFADE=Zamegljevanje prikaza
-SING_OPTIONS_ADVANCED_LOADANIMATION=Zacetna animacija
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Zašcitno vprašanje
-SING_OPTIONS_ADVANCED_LINEBONUS=Bonus za vrstico
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=Po izboru pesmi
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Samodejni nacin Zabava
+SING_LEGEND_SELECT=Izberi
+SING_LEGEND_NAVIGATE=Premik
+SING_LEGEND_CONTINUE=Nadaljuj
+SING_LEGEND_ESC=Nazaj
-SING_EDIT=Urednik
-SING_EDIT_MENU_DESCRIPTION=Izdelaj lastno pesem
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Izvozi besedilo iz midi datoteke
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Nazaj
-SING_EDIT_BUTTON_CONVERT=Uvozi
-SING_EDIT_BUTTON_EXIT=Nazaj
-
-SING_EDIT_NAVIGATE=Navigacija
-SING_EDIT_SELECT=Izberi
-SING_EDIT_EXIT=Nazaj
-
-SING_LEGEND_SELECT=izberi
-SING_LEGEND_NAVIGATE=premik
-SING_LEGEND_CONTINUE=nadaljuj
-SING_LEGEND_ESC=nazaj
-
-SING_PLAYER_DESC=vpiši imena igralcev
-SING_PLAYER_WHEREAMI=Imena igralcev
-SING_PLAYER_ENTER_NAME=vnesi ime
-
-SING_DIFFICULTY_DESC=izberi težavnost
-SING_DIFFICULTY_WHEREAMI=Težavnost
-SING_DIFFICULTY_CONTINUE=k izbiri pesmi
-SING_EASY=Enostavno
-SING_MEDIUM=Srednje
-SING_HARD=Težko
-
-SING_SONG_SELECTION_DESC=izberi svojo pesem
-SING_SONG_SELECTION_WHEREAMI=Izbira pesmi
-SING_SONG_SELECTION_GOTO=pojdi na...
-SING_SONG_SELECTION=izbira pesmi
-SING_SONG_SELECTION_MENU=meni
-SING_SONG_SELECTION_PLAYLIST=seznam predvajanja
+SING_SONG_SELECTION=Izbira pesmi
+SING_SONG_SELECTION_MENU=Meni
+SING_SONG_SELECTION_PLAYLIST=Seznam predvajanja
SING_SONGS_IN_CAT=Pesmi
+SING_SONG_IN_CAT=Pesem
PLAYLIST_CATTEXT=Lista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
-SING_TOTAL=skupaj
+SING_TOTAL=Skupaj
SING_MODE=Petje
-SING_NOTES=note
-SING_GOLDEN_NOTES=zlate note
-SING_PHRASE_BONUS=bonus za vrstico
+SING_NOTES=Note
+SING_GOLDEN_NOTES=Zlate note
+SING_PHRASE_BONUS=Bonus za vrstico
SING_MENU=Glavni meni
-SONG_SCORE=rezultat petja
+SONG_SCORE=Rezultat petja
SONG_SCORE_WHEREAMI=Rezultat
SING_SCORE_TONE_DEAF=Gluhonem
@@ -235,28 +333,26 @@ SING_SCORE_LEAD_SINGER=Vodilni pevec
SING_SCORE_SUPERSTAR=Superzvezda
SING_SCORE_ULTRASTAR=Ultrazvezda
-SING_TOP_5_CHARTS=najboljših 5 pevcev
-SING_TOP_5_CHARTS_WHEREAMI=najboljših 5
-SING_TOP_5_CHARTS_CONTINUE=k izbiri pesmi
+SING_TOP_5_CHARTS=Najboljših 5 pevcev
+SING_TOP_5_CHARTS_WHEREAMI=Najboljših 5
+SING_TOP_5_CHARTS_CONTINUE=K izbiri pesmi
;TODO: SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=popolno!
-POPUP_AWESOME=odlicno!
-POPUP_GREAT=zelo dobro!
-POPUP_GOOD=dobro!
-POPUP_NOTBAD=ni slabo!
-POPUP_BAD=slabo!
-POPUP_POOR=zelo slabo!
-POPUP_AWFUL=obupno!
+POPUP_PERFECT=Popolno!
+POPUP_AWESOME=Odlicno!
+POPUP_GREAT=Zelo dobro!
+POPUP_GOOD=Dobro!
+POPUP_NOTBAD=Ni slabo!
+POPUP_BAD=Slabo!
+POPUP_POOR=Zelo slabo!
+POPUP_AWFUL=Obupno!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= in
-SONG_MENU_NAME_MAIN=meni pesmi
+SONG_MENU_NAME_MAIN=Meni pesmi
SONG_MENU_PLAY=Poj
SONG_MENU_CHANGEPLAYERS=Spremeni igralca
-SONG_MENU_EDIT=Uredi
-SONG_MENU_MODI=Poj "a Modi"
SONG_MENU_CANCEL=Preklici
SONG_MENU_NAME_PLAYLIST=Meni Pesem
@@ -264,8 +360,8 @@ SONG_MENU_PLAYLIST_ADD=Dodaj pesem
SONG_MENU_PLAYLIST_DEL=Izbriši pesem
SONG_MENU_NAME_PLAYLIST_ADD=Dodaj pesem
-SONG_MENU_PLAYLIST_ADD_NEW=dodaj nov seznam
-SONG_MENU_PLAYLIST_ADD_EXISTING=dodaj shranjen seznam
+SONG_MENU_PLAYLIST_ADD_NEW=Dodaj nov seznam
+SONG_MENU_PLAYLIST_ADD_EXISTING=Dodaj shranjen seznam
SONG_MENU_PLAYLIST_NOEXISTING=Ni seznamov
SONG_MENU_NAME_PLAYLIST_NEW=Nov seznam
@@ -277,27 +373,20 @@ SONG_MENU_YES=Da
SONG_MENU_NO=Ne
SONG_MENU_NAME_PLAYLIST_LOAD=Odpri seznam
-SONG_MENU_PLAYLIST_LOAD=odpri
-SONG_MENU_PLAYLIST_DELCURRENT=izbriši trenuten seznam
+SONG_MENU_PLAYLIST_LOAD=Odpri
+SONG_MENU_PLAYLIST_DELCURRENT=Izbriši trenuten seznam
SONG_MENU_NAME_PLAYLIST_DEL=Izbrišem seznam?
SONG_MENU_NAME_PARTY_MAIN=Meni Zabava
SONG_MENU_JOKER=Joker
-SONG_MENU_NAME_PARTY_JOKER=izkoristi jokerja
+SONG_MENU_NAME_PARTY_JOKER=Izkoristi jokerja
-SONG_JUMPTO_DESC=poišci pesem
+SONG_JUMPTO_DESC=Poišci pesem
SONG_JUMPTO_TYPE_DESC=Isci po:
-SONG_JUMPTO_TYPE1=Vse
-SONG_JUMPTO_TYPE2=Naslov
-SONG_JUMPTO_TYPE3=Avtor
-SONG_JUMPTO_SONGSFOUND=%d pesmi najdenih
-SONG_JUMPTO_NOSONGSFOUND=Ne najdem
-SONG_JUMPTO_HELP=Vpiši besedilo za iskanje
-SONG_JUMPTO_CATTEXT=Išci po: %s
-
-PARTY_MODE=zabava
+
+PARTY_MODE=Zabava
PARTY_DIFFICULTY=Težavnost
PARTY_PLAYLIST=Izbor
PARTY_PLAYLIST_ALL=Vse pesmi
@@ -308,46 +397,43 @@ PARTY_TEAMS_PLAYER1=Igralec Ekipa1
PARTY_TEAMS_PLAYER2=Igralec Ekipa2
PARTY_TEAMS_PLAYER3=Igralec Ekipa3
-PARTY_LEGEND_CONTINUE=nadaljuj
-
-PARTY_OPTIONS_DESC=nastavitve za nacin zabave
-PARTY_OPTIONS_WHEREAMI=nastavitve zabave
+PARTY_LEGEND_CONTINUE=Nadaljuj
-PARTY_PLAYER_DESC=vpiši igralce in imena ekip!
-PARTY_PLAYER_WHEREAMI=Imena
-PARTY_PLAYER_ENTER_NAME=vpiši imena
+PARTY_OPTIONS_DESC=Nastavitve za nacin zabave
+PARTY_OPTIONS_WHEREAMI=Nastavitve zabave
+PARTY_PLAYER_ENTER_NAME=Vpiši imena
-;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
-;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=zacni zabavo
+PARTY_ROUNDS_LEGEND_CONTINUE=Zacni zabavo
;TODO: PARTY_ROUNDCOUNT=Number of rounds
;TODO: PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=naslednji igralec k mikrofonu
-PARTY_ROUND_WHEREAMI=Naslednja runda
-PARTY_ROUND_LEGEND_CONTINUE=zacni rundo
+PARTY_ROUND_LEGEND_CONTINUE=Zacni rundo
PARTY_SONG_WHEREAMI=Izbor pesmi - Zabava
-PARTY_SONG_LEGEND_CONTINUE=poj
-PARTY_SONG_MENU=meni Zabava
+PARTY_SONG_LEGEND_CONTINUE=Poj
+PARTY_SONG_MENU=Meni Zabava
-PARTY_SCORE_DESC=tocke zadnje runde
+OPTION_VALUE_SING=Poj
+OPTION_VALUE_SELECT_PLAYERS=Izberite igralce
+OPTION_VALUE_OPEN_MENU=Odpri meni
+
+PARTY_SCORE_DESC=Tocke zadnje runde
PARTY_SCORE_WHEREAMI=Tocke v zabavi
PARTY_WIN_DESC=Zmagovalec
PARTY_WIN_WHEREAMI=Zmagovalec
-PARTY_WIN_LEGEND_CONTINUE=nazaj k glavnemu meniju
+PARTY_WIN_LEGEND_CONTINUE=Nazaj k glavnemu meniju
PARTY_ROUND=Runda
PARTY_ROUND_WINNER=Zmagovalec
-PARTY_NOTPLAYEDYET=neizvedeno
-PARTY_NOBODY=nobeden
+PARTY_NOTPLAYEDYET=Neizvedeno
+PARTY_NOBODY=Nobeden
NEXT_ROUND=Naslednja runda:
PARTY_DISMISSED=Zakljucena!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=zmaga!
+PARTY_SCORE_WINS2=Zmaga!
;TODO: MODE_RANDOM_NAME=Random Mode
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -407,8 +493,6 @@ MODE_BLIND_NAME=Slepi dvoboj
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Statika
-STAT_MAIN_DESC=Splošno
-STAT_MAIN_WHEREAMI=Statistika
STAT_OVERVIEW_INTRO=%0:s Statistika. \n Nazadnje ponastavljeno %2:.2d.%1:.2d.%3:d
STAT_OVERVIEW_SONG=%0:d Pesmi(%3:d z videom), od katerih je bilo %1:d že zapetih in %2:d ne.\n Najbolj priljubljena pesem je %5:s od %4:s.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Podrobna statistika
STAT_NEXT=Naslednja stran
STAT_PREV=Prejšnja stran
STAT_REVERSE=Obratni vrstni red
-STAT_PAGE=Stran %0:d od %1:d strani\n (%2:d od %3:d zapisov)
+STAT_PAGE=Stran %0:d od %1:d \n Zapisov %2:d od %3:d
STAT_DESC_SCORES=Najboljši rezultati
STAT_DESC_SCORES_REVERSED=Najslabši rezultati
@@ -440,119 +524,12 @@ STAT_DESC_BANDS=Najbolj popularen izvajalec
STAT_DESC_BANDS_REVERSED=Najmanj popularen izvajalec
STAT_FORMAT_BANDS=%0:s \n %1:dx igrano
-;TODO: SCREENSHOT_SAVED=Screenshot saved
-;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
-;TODO: ERROR_FILE_NOT_FOUND=File not found
-
-;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
-
-MSG_ERROR_TITLE=Napaka
-;TODO: MSG_INFO_TITLE=Information
-MSG_QUESTION_TITLE=Vprašanje
-MSG_QUIT_USDX=Želite zapustiti Ultrastar?
-MSG_END_PARTY=Koncam zabavo?
-
-ERROR_NO_SONGS=Ni pesmi: Naloži jih v mapo Songs
-ERROR_NO_PLUGINS=Ni vkljuckov
-;TODO: ERROR_NO_MODES_FOR_CURRENT_SETUP=No modes available for current player/team setup
-;TODO: ERROR_CAN_NOT_START_PARTY=An error occurred starting the party game
-ERROR_CORRUPT_SONG=Ne morem naložiti pesmi.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Ne morem naložiti pesmi: Ne najdem datoteke
-ERROR_CORRUPT_SONG_NO_NOTES=Ne morem naloziti pesmi: Ne najdem not.
-ERROR_CORRUPT_SONG_NO_BREAKS=Ne morem naložiti pesmi: Ne najdem prelomov vrstic.
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Ne morem naložiti pesmi: Napaka v parsanju vrstice %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Vse
-OPTION_ALL_SCORES=Vse
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Preklici
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Preklici
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
;TODO: PARTY_SELECT_MODE=Mode
;TODO: PARTY_MODE_CLASSIC=Classic
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -561,43 +538,10 @@ SCORE_DOWNLOAD_CANCEL=Preklici
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=naslednji igralec k mikrofonu
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Naslednji igralec k mikrofonu
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
;TODO: JUKEBOX_RANDOM=Random
;TODO: JUKEBOX_REPEAT=Repeat
@@ -609,8 +553,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=naslednji igralec k mikrofonu
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Meni Pesem
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Vse
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Locljivost
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Ucinek
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Prag
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
;TODO: SONG_MENU_OPEN_CATEGORY=Open category
@@ -666,58 +581,6 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Prag
;TODO: NAME_PLAYERS_COUNT=Number of Players
;TODO: NAME_CURRENT_PLAYER=Player
-SING_OPTIONS_GAME_SONGMENU=Meni Pesem
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=poj
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Barva
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
-
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
@@ -727,24 +590,37 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Barva
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
JUKEBOX_OPTIONS_PLAYLIST=Seznam
;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Vse
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_MAIN=O...
+;TODO: ABOUT_USDX_DEVELOPEDBY=Developed by
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Odkrijte nov način petja, samega, v paru ali s prijatelji. \n Zabava je zajamčena.\n\nWorldParty je fork originalne verzije Ultrastar Deluxe 1.1 ki ga je razvila in izdelala ekipa UltraStar España, šteje pri največji skupini karaoke.\n\n\nTa program je brezplačen in libre pod licenco GPL. \n\n Obiščite nas za več informacij.\n\nhttps://ultrastar-es.org
+
+;TODO: DEVELOPERS_TITLE=Developed by
+DEVELOPERS_OVERVIEW=Ljudje, ki so prispevali k temu projektu:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Obiščite nas za več informacij.\n\nhttps://ultrastar-es.org
+
+;TODO: SCREENSHOT_SAVED=Screenshot saved
+;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
+
+MSG_ERROR_TITLE=Napaka
+;TODO: MSG_INFO_TITLE=Information
+MSG_QUESTION_TITLE=Vprašanje
+MSG_QUIT_USDX=Želite zapustiti Ultrastar?
+MSG_END_PARTY=Koncam zabavo?
+
+ERROR_NO_SONGS=Ni pesmi: Naloži jih v mapo Songs
+ERROR_NO_PLUGINS=Ni vkljuckov
+ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Ne morem naložiti pesmi.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Ne morem naložiti pesmi: Ne najdem datoteke
+ERROR_CORRUPT_SONG_NO_NOTES=Ne morem naloziti pesmi: Ne najdem not.
+ERROR_CORRUPT_SONG_NO_BREAKS=Ne morem naložiti pesmi: Ne najdem prelomov vrstic.
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Ne morem naložiti pesmi: Napaka v parsanju vrstice %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Igralec %d je dodeljena več mikrofonom. Preverite možnosti mikrofona
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Igralec %d ni dodeljen mikrofonu. Preverite možnosti mikrofona
\ No newline at end of file
diff --git a/game/languages/Suomi.ini b/game/languages/Suomi.ini
index 15fb7d2c..623a8b95 100644
--- a/game/languages/Suomi.ini
+++ b/game/languages/Suomi.ini
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Nimi
OPTION_VALUE_ARTIST=Artisti
OPTION_VALUE_TITLE2=Nimi2
OPTION_VALUE_ARTIST2=Artisti2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Vuosi
+OPTION_VALUE_DECADE=Vuosikymmen
OPTION_VALUE_PLAYLIST=Kappalelista
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Reunuksettomat
OPTION_VALUE_WHENNOVIDEO=Kun ei videota
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Kun ei ole videota ja kuvaa
OPTION_VALUE_SMALL=Pieni
OPTION_VALUE_BIG=Iso
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Auto
OPTION_VALUE_SEC=Sekunti
OPTION_VALUE_SECS=Sekuntia
-OPTION_VALUE_PLAIN=Perus
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Tyylitelty
+OPTION_VALUE_OLINE1=Ohut reuna
+OPTION_VALUE_OLINE2=Paksu reuna
OPTION_VALUE_SIMPLE=Yksinkertainen
OPTION_VALUE_ZOOM=Zoom
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Laula
OPTION_VALUE_SELECT_PLAYERS=Valitse pelaajat
OPTION_VALUE_OPEN_MENU=Avaa valikko
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
SING_LOADING=Moikkamoi! Tää systeemi niinku lataa...
+SING_LOADING_SONGS=Ladataan kappaleita %s
SING_CHOOSE_MODE=Valitse moodi
SING_SING=Laula
@@ -87,9 +83,6 @@ SING_TOOLS=Työkalut
SING_STATS=Tilastot
SING_STATS_DESC=Katso tilastoja
-SING_EDITOR=Editori
-SING_EDITOR_DESC=Luo uusia kappaleita peliin
-
SING_GAME_OPTIONS=Peliasetukset
SING_GAME_OPTIONS_DESC=Muuta pelin asetuksia
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Asetukset
SING_OPTIONS_GAME=Peli
SING_OPTIONS_GRAPHICS=Kuva
SING_OPTIONS_SOUND=Äänet
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Lyriikat
SING_OPTIONS_THEMES=Teemat
-SING_OPTIONS_RECORD=Mikrofonit
+SING_OPTIONS_MICROPHONES=Mikrofonit
SING_OPTIONS_ADVANCED=Erikoiset
SING_OPTIONS_EXIT=Takaisin
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Vaikeustaso
SING_OPTIONS_GAME_LANGUAGE=Kieli
SING_OPTIONS_GAME_TABS=Välilehdet
SING_OPTIONS_GAME_SORTING=Järjestys
-SING_OPTIONS_GAME_DEBUG=Virheentunnistus
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivoi peliohjain
SING_OPTIONS_GRAPHICS_WHEREAMI=Kuva-asetukset
SING_OPTIONS_GRAPHICS_DESC=Kuva-asetukset
SING_OPTIONS_GRAPHICS_RESOLUTION=Resoluutio
SING_OPTIONS_GRAPHICS_FULLSCREEN=Kokoruutu
-SING_OPTIONS_GRAPHICS_DEPTH=Syvyys
+SING_OPTIONS_GRAPHICS_EFFECTSING=Laulun efektit
+SING_OPTIONS_GRAPHICS_SCREENFADE=Kuvan feidaus
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animaatiot
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisointi
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Ääniaallokko
SING_OPTIONS_GRAPHICS_LINEBONUS=Rivibonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Videon koko
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Ääniasetukset
SING_OPTIONS_SOUND_DESC=Ääniasetukset
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Laulusi kuuluu kaittimista
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Tausta musiikki
-SING_OPTIONS_SOUND_MIC_BOOST=Mikkiboosti
SING_OPTIONS_SOUND_CLICK_ASSIST=Klikkausapuri
SING_OPTIONS_SOUND_BEAT_CLICK=Biitti klikkaaja
-SING_OPTIONS_SOUND_THRESHOLD=Aloituspiste
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Kaksinpelimoodi
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Esikatselutaso
SING_OPTIONS_SOUND_PREVIEWFADING=Esikatselufeidaus
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Sanoitusasetukset
SING_OPTIONS_LYRICS_DESC=Sanoitusasetukset
SING_OPTIONS_LYRICS_FONT=Fontti
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Teema
SING_OPTIONS_THEMES_SKIN=Tyyli
SING_OPTIONS_THEMES_COLOR=Väri
-SING_OPTIONS_RECORD_WHEREAMI=Mikrofoniasetukset
-SING_OPTIONS_RECORD_DESC=Määritä mikrofonit
-SING_OPTIONS_RECORD_CARD=Äänikortti
-SING_OPTIONS_RECORD_INPUT=Tulo
-SING_OPTIONS_RECORD_CHANNEL=Kanava
+SING_OPTIONS_MICROPHONES_WHEREAMI=Mikrofoniasetukset
+SING_OPTIONS_MICROPHONES_DESC=Määritä mikrofonit
+SING_OPTIONS_MICROPHONES_CARD=Äänikortti
+SING_OPTIONS_MICROPHONES_INPUT=Tulo
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanava
+SING_OPTIONS_MICROPHONES_THRESHOLD=Aloituspiste
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikkiboosti
SING_OPTIONS_ADVANCED_WHEREAMI=Erikoisasetukset
SING_OPTIONS_ADVANCED_DESC=Erikoisasetukset
-SING_OPTIONS_ADVANCED_EFFECTSING=Laulun efektit
-SING_OPTIONS_ADVANCED_SCREENFADE=Kuvan feidaus
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animaatiot
+SING_OPTIONS_ADVANCED_DEBUG=Virheentunnistus
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Ääniaallokko
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Turvakyselyt
SING_OPTIONS_ADVANCED_LINEBONUS=Rivibonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Kappaleen valinnan jälkeen
SING_OPTIONS_ADVANCED_PARTYPOPUP=Automaattinen tiimipeli
-SING_EDIT=Editori
-SING_EDIT_MENU_DESCRIPTION=Luo oma laulusi
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Tuo teksti midi- tiedostosta
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Takaisin
-SING_EDIT_BUTTON_CONVERT=Tuo
-SING_EDIT_BUTTON_EXIT=Takaisin
-
-SING_EDIT_NAVIGATE=Liiku
-SING_EDIT_SELECT=Valitse
-SING_EDIT_EXIT=Takaisin
-
SING_LEGEND_SELECT=Valitse
SING_LEGEND_NAVIGATE=Selaa
SING_LEGEND_CONTINUE=Eteenpäin
SING_LEGEND_ESC=Takaisin
-SING_PLAYER_DESC=Kirjoita pelinimet
-SING_PLAYER_WHEREAMI=Pelinimet
-SING_PLAYER_ENTER_NAME=Kirjoita nimi
+SING_PLAYER_TITLE=Profiilit
+SING_PLAYER_READY=Pelaajat valmiina laulamaan
+SING_PLAYER_COUNT=Pelaajien lukumäärä
+SING_PLAYER_EDIT=Muokkaa soitinta
+SING_PLAYER_NAME=Kirjoita nimesi
+SING_PLAYER_COLOR=Valitse väri
+SING_PLAYER_LEVEL=Valitse taso
+SING_PLAYER_AVATAR=Valitse avatar
SING_DIFFICULTY_DESC=Valitse vaikeustaso
SING_DIFFICULTY_WHEREAMI=Vaikeustaso
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Siirry...
SING_SONG_SELECTION=Kappale
SING_SONG_SELECTION_MENU=Valikko
SING_SONG_SELECTION_PLAYLIST=Kappalelista
+SING_SONG_IN_CAT=Laulu
SING_SONGS_IN_CAT=Kappaletta
PLAYLIST_CATTEXT=Kappalelista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duetto
-;TODO: SING_TIME=TIME
SING_TOTAL=Pisteesi
SING_MODE=Soololaulu
SING_NOTES=Nuotilleen
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= ja
SONG_MENU_NAME_MAIN=Kappalevalikko
SONG_MENU_PLAY=Laula
SONG_MENU_CHANGEPLAYERS=Vaihda pelinimeä
-SONG_MENU_EDIT=Muokkaa
SONG_MENU_MODI=Laula modi
SONG_MENU_CANCEL=Peruuta
@@ -358,19 +341,19 @@ MODE_RANDOM_NAME=Satunnaismoodi
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Asti 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
-MODE_5000POINTS_NAME=♥5000♥
+MODE_5000POINTS_NAME=Asti 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Asti 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Tarkat tilastot
STAT_NEXT=Seuraava sivu
STAT_PREV=Edellinen sivu
STAT_REVERSE=Käänteinen järjestys
-STAT_PAGE=Seite %0:d of %1:d Pages\n (%2:d of %3:d Entrys)
+STAT_PAGE=Seite %0:d of %1:d \n %2:d of %3:d
STAT_DESC_SCORES=Korkeimmat pisteet
STAT_DESC_SCORES_REVERSED=Surikeimmat pisteet
@@ -440,15 +423,14 @@ STAT_DESC_BANDS=Suosituimmat yhtyeet
STAT_DESC_BANDS_REVERSED=Epäsuosituimmat yhtyeet
STAT_FORMAT_BANDS=%0:s \n %1:dx Laulettu
-SCREENSHOT_SAVED=Screenshot saved
-SCREENSHOT_FAILED=Couldn''t save screenshot
+;TODO: SCREENSHOT_SAVED=Screenshot saved
+;TODO: SCREENSHOT_FAILED=Couldn''t save screenshot
-INFO_FILE_SAVED=File saved
-ERROR_SAVE_FILE_FAILED=Couldn''t save file
-ERROR_FILE_NOT_FOUND=File not found
+;TODO: INFO_FILE_SAVED=File saved
+;TODO: ERROR_SAVE_FILE_FAILED=Couldn''t save file
+;TODO: ERROR_FILE_NOT_FOUND=File not found
-ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
+;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
MSG_ERROR_TITLE=Virhe
MSG_INFO_TITLE=Informaatio
@@ -465,20 +447,19 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Kappaletta ei voitu avata: Tiedostoa ei löyty
ERROR_CORRUPT_SONG_NO_NOTES=Kappaletta ei voitu avata: Ei löytynyt yhtään nuottia
ERROR_CORRUPT_SONG_NO_BREAKS=Kappaletta ei voitu avata: Ei löytynyt yhtään rivinvaihtoa
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Kappaletta ei voitu avata: Virhe jäsentäessä riviä %0:d
-ERROR_NO_EDITOR=This feature is not available on this version.
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphones. Please check your record options
+;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Pelaaja %d is assigned to multiple microphones. Tarkista mikrofoniasetukset
+;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Pelaaja %d is not assigned to a microphones. Tarkista mikrofoniasetukset
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Internet-asetukset
+SING_OPTIONS_NETWORK_DESC=Internetin yleiset asetukset
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Käyttäjätunnus
+SING_OPTIONS_NETWORK_PASSWORD=Salasana
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Pelaaja
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,18 +468,18 @@ SING_OPTIONS_NETWORK_AUTO_MODE=Auto
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Pelaaja 1
+OPTION_PLAYER_2=Pelaaja 2
+OPTION_PLAYER_3=Pelaaja 3
+OPTION_PLAYER_4=Pelaaja 4
+OPTION_PLAYER_5=Pelaaja 5
+OPTION_PLAYER_6=Pelaaja 6
OPTION_ALL_PLAYERS=Kaikki
OPTION_ALL_SCORES=Kaikki
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
;TODO: MSG_INSERT_USER_ADD=Add
MSG_INSERT_USER_CANCEL=Peruuta
@@ -526,17 +507,17 @@ MSG_INSERT_USER_CANCEL=Peruuta
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MAX=Parhaat:
+SONG_SCORE_MEDIA=Keskiverto:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Pelaaja
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_SONG=Laulu:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=Peruuta
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Seuraavat laulajat mikrofoneille
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ INFO_FILE_SAVED=File saved
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Kappalelistavalikko
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -635,9 +584,10 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Resoluutio
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Tehoste
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Kirkkaus
+SING_OPTIONS_WEBCAM_SATURATION=Kyllästys
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,45 +613,45 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Aloituspiste
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Pelaajien määrä
+NAME_CURRENT_PLAYER=Pelaaja
SING_OPTIONS_GAME_SONGMENU=Kappalelistavalikko
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Ruletti
+OPTION_VALUE_CHESSBOARD=Shakkilauta
+OPTION_VALUE_CAROUSEL=Karuselli
+OPTION_VALUE_SLOT_MACHINE=Peliautomaatti
+OPTION_VALUE_LIST=Lista
+OPTION_VALUE_MOSAIC=Laatta
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Laula
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Ylempi
+OPTION_VALUE_NEXT=Pohja
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
+OPTION_VALUE_GRAY=Harmaa
+OPTION_VALUE_WHITE=Valkoinen
+OPTION_VALUE_TURQUOISE=Turkoosi
+OPTION_VALUE_SALMON=Lohi
+OPTION_VALUE_GREENYELLOW=Vihreä keltainen
+OPTION_VALUE_LAVENDER=Laventeli
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Tavi
+OPTION_VALUE_ORCHID=Orkidea
+OPTION_VALUE_STEELBLUE=Terässininen
+OPTION_VALUE_PLUM=Luumu
+OPTION_VALUE_CHOCOLATE=Suklaa
+OPTION_VALUE_GOLD=Kulta
+OPTION_VALUE_DARKBLUE=Tummansininen
+OPTION_VALUE_SKY=Taivas
+OPTION_VALUE_HARLEQUIN=Harlekiini
+OPTION_VALUE_CYAN=Syaani
+OPTION_VALUE_FLAME=Liekki
;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
@@ -710,7 +660,7 @@ OPTION_VALUE_TO_SING=Laula
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Läpinäkyvyys
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Väri
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -742,9 +692,14 @@ OPTION_VALUE_ALL=Kaikki
;TODO: OPTION_VALUE_PLAYER=Player
;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
+;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+;TODO: ABOUT_USDX_DEVELOPEDBY=Developed by
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+;TODO: DEVELOPERS_TITLE=Developed by
+;TODO: DEVELOPERS_OVERVIEW=People who has contributed to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
diff --git a/game/languages/Svenska.ini b/game/languages/Svenska.ini
index f6e60d95..152d8c89 100644
--- a/game/languages/Svenska.ini
+++ b/game/languages/Svenska.ini
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Titel
OPTION_VALUE_ARTIST=Artist
OPTION_VALUE_TITLE2=Titel2
OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=År
+OPTION_VALUE_DECADE=Årtionde
OPTION_VALUE_PLAYLIST=Spellista
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Maximerad
OPTION_VALUE_WHENNOVIDEO=När video saknas
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=När ingen video och bild
OPTION_VALUE_SMALL=Liten
OPTION_VALUE_BIG=Stor
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Auto
OPTION_VALUE_SEC=Sekund
OPTION_VALUE_SECS=Sekunder
-OPTION_VALUE_PLAIN=Slät
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Stiliserade
+OPTION_VALUE_OLINE1=Med tunn kant
+OPTION_VALUE_OLINE2=Med tjock kant
OPTION_VALUE_SIMPLE=Enkel
OPTION_VALUE_ZOOM=Zoom
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=Sjung
OPTION_VALUE_SELECT_PLAYERS=Välj spelare
OPTION_VALUE_OPEN_MENU=Öppna meny
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Systempekare
-OPTION_VALUE_SOFTWARE_CURSOR=Programpekare
-
SING_LOADING=Läser in...
+SING_LOADING_SONGS=Läser in låtar från mapp %s
SING_CHOOSE_MODE=Välj läge
SING_SING=Sjung
@@ -87,9 +83,6 @@ SING_TOOLS=Verktyg
SING_STATS=Statistik
SING_STATS_DESC=Kolla statistiken
-SING_EDITOR=Editor
-SING_EDITOR_DESC=Skapa din egen låt
-
SING_GAME_OPTIONS=Spelinställningar
SING_GAME_OPTIONS_DESC=Ändra spelets inställningar
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Inställningar
SING_OPTIONS_GAME=Spel
SING_OPTIONS_GRAPHICS=Grafik
SING_OPTIONS_SOUND=Ljud
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Text
SING_OPTIONS_THEMES=Teman
-SING_OPTIONS_RECORD=Inspelning
+SING_OPTIONS_MICROPHONES=Inspelning
SING_OPTIONS_ADVANCED=Avancerat
SING_OPTIONS_EXIT=Tillbaka
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Svårighetsnivå
SING_OPTIONS_GAME_LANGUAGE=Språk
SING_OPTIONS_GAME_TABS=Tabbar
SING_OPTIONS_GAME_SORTING=Sortering
-SING_OPTIONS_GAME_DEBUG=Debuggning
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivera gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Inställningar Grafik
SING_OPTIONS_GRAPHICS_DESC=Grafikinställningar
SING_OPTIONS_GRAPHICS_RESOLUTION=Upplösning
SING_OPTIONS_GRAPHICS_FULLSCREEN=Helskärm
-SING_OPTIONS_GRAPHICS_DEPTH=Färgdjup
+SING_OPTIONS_GRAPHICS_EFFECTSING=Sångeffekter
+SING_OPTIONS_GRAPHICS_SCREENFADE=Skärmtoning
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Inläsningsanimation
SING_OPTIONS_GRAPHICS_VISUALIZER=Visualisering
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Oscilloskop
SING_OPTIONS_GRAPHICS_LINEBONUS=Radbonus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Filmstorlek
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Inställningar Ljud
SING_OPTIONS_SOUND_DESC=Ljudinställningar
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Mikrofonuppspelning
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Bakgrundsmusik
-SING_OPTIONS_SOUND_MIC_BOOST=Mikrofonförstärkning
SING_OPTIONS_SOUND_CLICK_ASSIST=Hjälpljud
SING_OPTIONS_SOUND_BEAT_CLICK=Taktljud
-SING_OPTIONS_SOUND_THRESHOLD=Ljudtröskel
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tvåspelarläge
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Volym i låtvalsmenyn
SING_OPTIONS_SOUND_PREVIEWFADING=Toning i låtvalsmenyn
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Inställningar Text
SING_OPTIONS_LYRICS_DESC=Sångtextinställningar
SING_OPTIONS_LYRICS_FONT=Typsnitt
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Utseende
SING_OPTIONS_THEMES_COLOR=Färg
-SING_OPTIONS_RECORD_WHEREAMI=Inställningar Inspelning
-SING_OPTIONS_RECORD_DESC=Mikrofoninställningar
-SING_OPTIONS_RECORD_CARD=Ljudkort
-SING_OPTIONS_RECORD_INPUT=Ingång
-SING_OPTIONS_RECORD_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Inställningar Inspelning
+SING_OPTIONS_MICROPHONES_DESC=Mikrofoninställningar
+SING_OPTIONS_MICROPHONES_CARD=Ljudkort
+SING_OPTIONS_MICROPHONES_INPUT=Ingång
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Ljudtröskel
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Mikrofonförstärkning
+SING_OPTIONS_ADVANCED_DEBUG=Debuggning
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Oscilloskop
SING_OPTIONS_ADVANCED_WHEREAMI=Inställningar Avancerat
SING_OPTIONS_ADVANCED_DESC=Avancerade inställningar
-SING_OPTIONS_ADVANCED_EFFECTSING=Sångeffekter
-SING_OPTIONS_ADVANCED_SCREENFADE=Skärmtoning
-SING_OPTIONS_ADVANCED_LOADANIMATION=Inläsningsanimation
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Säkerhetsfråga
SING_OPTIONS_ADVANCED_LINEBONUS=Radbonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Vid låtval
SING_OPTIONS_ADVANCED_PARTYPOPUP=Automatisk Partymeny
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Skapa din egen låt
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importera text från MIDI-fil
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Tillbaka
-SING_EDIT_BUTTON_CONVERT=Importera
-SING_EDIT_BUTTON_EXIT=Tillbaka
-
-SING_EDIT_NAVIGATE=Navigera
-SING_EDIT_SELECT=Välj
-SING_EDIT_EXIT=Tillbaka
-
SING_LEGEND_SELECT=Välj
SING_LEGEND_NAVIGATE=Navigera
SING_LEGEND_CONTINUE=Fortsätt
SING_LEGEND_ESC=Tillbaka
-SING_PLAYER_DESC=Skriv in spelarnamn
-SING_PLAYER_WHEREAMI=Spelarnamn
-SING_PLAYER_ENTER_NAME=Skriv namn
+SING_PLAYER_TITLE=Profiler
+SING_PLAYER_READY=Spelare redo att sjunga
+SING_PLAYER_COUNT=Antal spelare
+SING_PLAYER_EDIT=Anpassa en spelare
+SING_PLAYER_NAME=Skriv ditt namn
+SING_PLAYER_COLOR=Välj en färg
+SING_PLAYER_LEVEL=Välj en nivå
+SING_PLAYER_AVATAR=Välj din avatar
SING_DIFFICULTY_DESC=Välj svårighetsgrad
SING_DIFFICULTY_WHEREAMI=Svårighetsgrad
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Gå till...
SING_SONG_SELECTION=Låtval
SING_SONG_SELECTION_MENU=Meny
SING_SONG_SELECTION_PLAYLIST=Spellista
+SING_SONG_IN_CAT=Låt
SING_SONGS_IN_CAT=Låtar
PLAYLIST_CATTEXT=Spellista: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Legend
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duett
-;TODO: SING_TIME=TIME
SING_TOTAL=Totalt
SING_MODE=Sjung solo
SING_NOTES=Noter
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= och
SONG_MENU_NAME_MAIN=Låtmeny
SONG_MENU_PLAY=Sjung
SONG_MENU_CHANGEPLAYERS=Ändra spelare
-SONG_MENU_EDIT=Redigera
SONG_MENU_MODI=Sjung på ett sätt
SONG_MENU_CANCEL=Ångra
@@ -321,8 +304,8 @@ PARTY_PLAYER_ENTER_NAME=skriv namn
;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
PARTY_ROUNDS_LEGEND_CONTINUE=starta partyspel
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDCOUNT=Antal rundor
+PARTY_SELECTMODE=Runda %d
PARTY_ROUND_DESC=nästa spelare till mikrofonerna
PARTY_ROUND_WHEREAMI=Party Nästa omgång
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_NAME=Håll god ton
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Fram till 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Blind 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Till 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Blind 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Fram till 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Blind 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duell
@@ -388,7 +371,7 @@ MODE_BLIND_NAME=Blindläge
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
+MODE_1000BLIND_NAME = +1000 Blind
;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
;TODO: MODE_DEAF_NAME = Deaf
@@ -397,7 +380,7 @@ MODE_BLIND_NAME=Blindläge
;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Blind
;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Detaljerad statistik
STAT_NEXT=Nästa sida
STAT_PREV=Föregående sida
STAT_REVERSE=Omvänd ordning
-STAT_PAGE=Sida %0:d av %1:d sidor\n (%2:d av %3:d poster)
+STAT_PAGE=Sida %0:d av %1:d sidor \n %2:d av %3:d Poster
STAT_DESC_SCORES=Högsta resultat
STAT_DESC_SCORES_REVERSED=Lägsta resultat
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx sjungna
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Fel
;TODO: MSG_INFO_TITLE=Information
@@ -465,34 +447,33 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Låten kunde inte laddas: Filen kunde inte hit
ERROR_CORRUPT_SONG_NO_NOTES=Låten kunde inte laddas: Kan inte hitta toner
ERROR_CORRUPT_SONG_NO_BREAKS=Låten kunde inte laddas: Kan inte hitta radbrytningar
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Låten kunde inte laddas: Fel på rad %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Spelare %d är tilldelad flera mikrofoner. Kontrollera dina mikrofonalternativ
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Spelare %d är inte tilldelad en mikrofon. Kontrollera dina mikrofonalternativ
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK_WHEREAMI=Internet-alternativ
+SING_OPTIONS_NETWORK_DESC=Internet allmänna inställningar
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Användarnamn
+SING_OPTIONS_NETWORK_PASSWORD=Lösenord
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Spelare
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+SING_OPTIONS_NETWORK_LEGEND_INSERT=Föra in
+SING_OPTIONS_NETWORK_LEGEND_DELETE=Radera
+
+OPTION_PLAYER_1=Spelare 1
+OPTION_PLAYER_2=Spelare 2
+OPTION_PLAYER_3=Spelare 3
+OPTION_PLAYER_4=Spelare 4
+OPTION_PLAYER_5=Spelare 5
+OPTION_PLAYER_6=Spelare 6
OPTION_ALL_PLAYERS=Alla
OPTION_ALL_SCORES=Alla
;TODO: OPTION_VALUE_SAVE=Save
@@ -526,17 +507,17 @@ MSG_INSERT_USER_CANCEL=Ångra
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MAX=Bäst:
+SONG_SCORE_MEDIA=Genomsnitt:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Spelare
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_TITLE=Ladda ner
+SCORE_DOWNLOAD_SONG=Låt:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=Ångra
@@ -555,9 +536,9 @@ SCORE_DOWNLOAD_CANCEL=Ångra
;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
-;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-;TODO: PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Number of rounds
-;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
+PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Antal spelare
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Antal rundor
+PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Slutlig
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
@@ -565,52 +546,20 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=nästa spelare till mikrofonerna
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
-;TODO: JUKEBOX_RANDOM=Random
-;TODO: JUKEBOX_REPEAT=Repeat
-;TODO: JUKEBOX_FIND=Find:
-;TODO: JUKEBOX_SORT=Sort:
-;TODO: JUKEBOX_SONGLIST=List of Songs
+JUKEBOX_RANDOM=Slumpmässig
+JUKEBOX_REPEAT=Upprepa
+JUKEBOX_FIND=Hitta:
+JUKEBOX_SORT=Sortera:
+JUKEBOX_SONGLIST=Lista över låtar
;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-;TODO: SONG_MENU_SONG=Song
+SONG_MENU_SONG=Låt
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Låtmeny
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -635,9 +584,10 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Upplösning
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Effekt
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_BRIGHTNESS=Ljusstyrka
+SING_OPTIONS_WEBCAM_SATURATION=Mättnad
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Aktivera förhandsgranskning
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,67 +613,67 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Ljudtröskel
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Antal spelare
+NAME_CURRENT_PLAYER=Spelare
SING_OPTIONS_GAME_SONGMENU=Låtmeny
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Roulett
+OPTION_VALUE_CHESSBOARD=schackbräde
+OPTION_VALUE_CAROUSEL=karusell
+OPTION_VALUE_SLOT_MACHINE=Spelautomat
+OPTION_VALUE_LIST=Lista
+OPTION_VALUE_MOSAIC=Bricka
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Sjung
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Övre
+OPTION_VALUE_NEXT=Botten
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+OPTION_VALUE_GRAY=Grå
+OPTION_VALUE_WHITE=Vit
+OPTION_VALUE_TURQUOISE=Turkos
+OPTION_VALUE_SALMON=Lax
+OPTION_VALUE_GREENYELLOW=Grön gul
+OPTION_VALUE_LAVENDER=Lavendel
+OPTION_VALUE_BEIGE=Beige
+OPTION_VALUE_TEAL=Kricka
+OPTION_VALUE_ORCHID=Orkide
+OPTION_VALUE_STEELBLUE=Stålblå
+OPTION_VALUE_PLUM=Plommon
+OPTION_VALUE_CHOCOLATE=Choklad
+OPTION_VALUE_GOLD=Guld
+OPTION_VALUE_DARKBLUE=Mörkblå
+OPTION_VALUE_SKY=Himmel
+OPTION_VALUE_HARLEQUIN=Harlekin
+OPTION_VALUE_CYAN=Cyan
+OPTION_VALUE_FLAME=Flamma
+
+JUKEBOX_SONGOPTIONS_VIDEO=Videoalternativ
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspekt
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Bredd
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Höjd
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Storlek
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Genomskinlighet
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Färg
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Linje
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Röd
JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Grön
JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blå
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
+JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Sträcka
+JUKEBOX_SONGOPTIONS_VIDEO_CROP=Beskära
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
;TODO: JUKEBOX_SONGOPTIONS_SAVE=Save
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
+JUKEBOX_SONGOPTIONS_CLOSE=Stänga
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
@@ -739,12 +689,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Spellista
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Alla
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Spelare
+
+SING_ABOUT=Handla om
+SING_ABOUT_DESC=Handla om Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Handla om...
+ABOUT_USDX_DEVELOPEDBY=Utvecklad av
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Upptäck ett nytt sätt att sjunga, ensam, i par eller med vänner. \n Fun är garanterad.\n\nWorldParty är en fork av den ursprungliga versionen Ultrastar Deluxe 1.1 designad och utvecklad av UltraStar España-laget, räknas det med den största karaoke-gemenskapen.\n\n\nDetta program är gratis och libre under GPL-licensen. \n\n Besök oss för mer information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Utvecklad av
+DEVELOPERS_OVERVIEW=Personer som har bidragit till detta projekt:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Besök oss för mer information.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/\303\215slenska.ini" "b/game/languages/\303\215slenska.ini"
index 2617a008..bb9316b4 100644
--- "a/game/languages/\303\215slenska.ini"
+++ "b/game/languages/\303\215slenska.ini"
@@ -16,14 +16,14 @@ OPTION_VALUE_TITLE=Titill
OPTION_VALUE_ARTIST=Flytjandi
OPTION_VALUE_TITLE2=Titill2
OPTION_VALUE_ARTIST2=Flytjandi2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Ár
+OPTION_VALUE_DECADE=Áratugur
OPTION_VALUE_PLAYLIST=Lagalisti
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Landamæralaus
OPTION_VALUE_WHENNOVIDEO=Þegar ekkert myndband
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Þegar engin myndband og mynd
OPTION_VALUE_SMALL=Lítill
OPTION_VALUE_BIG=Stór
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=Sjálfvirkt
OPTION_VALUE_SEC=Sekúnda
OPTION_VALUE_SECS=Sekúndur
-OPTION_VALUE_PLAIN=Plain
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+;TODO: OPTION_VALUE_PLAIN=Stylized
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
OPTION_VALUE_SIMPLE=Einfalt
OPTION_VALUE_ZOOM=Zoom
@@ -68,87 +68,73 @@ OPTION_VALUE_SING=Syngja
OPTION_VALUE_SELECT_PLAYERS=Velja Leikmenn
OPTION_VALUE_OPEN_MENU=Opna Valmynd
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Vélbúnaðarbendill
-OPTION_VALUE_SOFTWARE_CURSOR=Hugbúnaðarbendill
-
SING_LOADING=Hleður...
+SING_LOADING_SONGS=Hleður lög frá möppu %s
-SING_CHOOSE_MODE=velja valmynd
-SING_SING=syngja
-SING_SING_DESC=stuttur leikur: syngja soló eða dúett
-
-SING_MULTI=partí
-SING_MULTI_DESC=syngja með partí-sniði
+SING_CHOOSE_MODE=Velja valmynd
+SING_SING=Syngja
+SING_SING_DESC=Stuttur leikur: syngja soló eða dúett
-SING_TOOLS=tól
+SING_MULTI=Partí
+SING_MULTI_DESC=Syngja með partí-sniði
-SING_STATS=tölfræði
-SING_STATS_DESC=skoða tölfræði
+SING_TOOLS=Tól
-SING_EDITOR=lagasmiður
-SING_EDITOR_DESC=búa til eigið lag
+SING_STATS=Tölfræði
+SING_STATS_DESC=Skoða tölfræði
-SING_GAME_OPTIONS=leikstillingar
-SING_GAME_OPTIONS_DESC=breyta leikstillingum
+SING_GAME_OPTIONS=Leikstillingar
+SING_GAME_OPTIONS_DESC=Breyta leikstillingum
-SING_EXIT=hætta
-SING_EXIT_DESC=hætta leik
+SING_EXIT=Hætta
+SING_EXIT_DESC=Hætta leik
-SING_OPTIONS=stillingar
-SING_OPTIONS_DESC=breyta stillingum
+SING_OPTIONS=Stillingar
+SING_OPTIONS_DESC=Breyta stillingum
SING_OPTIONS_WHEREAMI=Stillingar
-SING_OPTIONS_GAME=leikur
-SING_OPTIONS_GRAPHICS=mynd
-SING_OPTIONS_SOUND=hljóð
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=lagatextar
-SING_OPTIONS_THEMES=snið
-SING_OPTIONS_RECORD=upptaka
-SING_OPTIONS_ADVANCED=fleiri stillingar
-SING_OPTIONS_EXIT=til baka
+SING_OPTIONS_GAME=Leikur
+SING_OPTIONS_GRAPHICS=Mynd
+SING_OPTIONS_SOUND=Hljóð
+SING_OPTIONS_LYRICS=Lagatextar
+SING_OPTIONS_THEMES=Snið
+SING_OPTIONS_MICROPHONES=Upptaka
+SING_OPTIONS_ADVANCED=Fleiri stillingar
+SING_OPTIONS_EXIT=Til baka
SING_OPTIONS_GAME_WHEREAMI=Stillingar Leikur
-SING_OPTIONS_GAME_DESC=almennar leikstillingar
+SING_OPTIONS_GAME_DESC=Almennar leikstillingar
SING_OPTIONS_GAME_PLAYERS=Leikmenn
SING_OPTIONS_GAME_DIFFICULTY=Erfiðleikastig
SING_OPTIONS_GAME_LANGUAGE=Tungumál
SING_OPTIONS_GAME_TABS=Flipar
SING_OPTIONS_GAME_SORTING=Röðun
-SING_OPTIONS_GAME_DEBUG=Villuprófun
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Virkja gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Stillingar Mynd
-SING_OPTIONS_GRAPHICS_DESC=myndstillingar
+SING_OPTIONS_GRAPHICS_DESC=Myndstillingar
SING_OPTIONS_GRAPHICS_RESOLUTION=Skjáupplausn
SING_OPTIONS_GRAPHICS_FULLSCREEN=Skjáfyllir
-SING_OPTIONS_GRAPHICS_DEPTH=Dýpt
+SING_OPTIONS_GRAPHICS_EFFECTSING=Söngbrellur
+SING_OPTIONS_GRAPHICS_SCREENFADE=Skjá útþynning
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Hlaða hreyfimynd
SING_OPTIONS_GRAPHICS_VISUALIZER=Sýning
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Sveiflusjá
SING_OPTIONS_GRAPHICS_LINEBONUS=Línubónus
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Stærð Myndbands
SING_OPTIONS_SOUND_WHEREAMI=Stillingar hljóð
-SING_OPTIONS_SOUND_DESC=hljóðstillingar
+SING_OPTIONS_SOUND_DESC=Hljóðstillingar
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Spilun af hljóðnema
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Bakgrunnstónlist
-SING_OPTIONS_SOUND_MIC_BOOST=Hljóðnemaaukning
SING_OPTIONS_SOUND_CLICK_ASSIST=Taktstuðningur
SING_OPTIONS_SOUND_BEAT_CLICK=Slá takt
-SING_OPTIONS_SOUND_THRESHOLD=Þröskuldur
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Tveir leikmenn
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Forsýn hljóðstyrkur
SING_OPTIONS_SOUND_PREVIEWFADING=Forsýn útþynning
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Stillingar Textar
-SING_OPTIONS_LYRICS_DESC=textastillingar
+SING_OPTIONS_LYRICS_DESC=Textastillingar
SING_OPTIONS_LYRICS_FONT=Leturgerð
SING_OPTIONS_LYRICS_EFFECT=Brellur
SING_OPTIONS_LYRICS_SOLMIZATION=Solmization
@@ -160,70 +146,69 @@ SING_OPTIONS_THEMES_THEME=Þema
SING_OPTIONS_THEMES_SKIN=Skinn
SING_OPTIONS_THEMES_COLOR=Litur
-SING_OPTIONS_RECORD_WHEREAMI=Stillingar Upptaka
-SING_OPTIONS_RECORD_DESC=hljóðnemastillingar
-SING_OPTIONS_RECORD_CARD=Hljóðkort
-SING_OPTIONS_RECORD_INPUT=Inntak
-SING_OPTIONS_RECORD_CHANNEL=Rás
+SING_OPTIONS_MICROPHONES_WHEREAMI=Stillingar Upptaka
+SING_OPTIONS_MICROPHONES_DESC=Hljóðnemastillingar
+SING_OPTIONS_MICROPHONES_CARD=Hljóðkort
+SING_OPTIONS_MICROPHONES_INPUT=Inntak
+SING_OPTIONS_MICROPHONES_CHANNEL=Rás
+SING_OPTIONS_MICROPHONES_THRESHOLD=Þröskuldur
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Hljóðnemaaukning
SING_OPTIONS_ADVANCED_WHEREAMI=Stillingar Meira
-SING_OPTIONS_ADVANCED_DESC=fleiri stillingar
-SING_OPTIONS_ADVANCED_EFFECTSING=Söngbrellur
-SING_OPTIONS_ADVANCED_SCREENFADE=Skjá útþynning
-SING_OPTIONS_ADVANCED_LOADANIMATION=Hlaða hreyfimynd
+SING_OPTIONS_ADVANCED_DESC=Fleiri stillingar
+SING_OPTIONS_ADVANCED_DEBUG=Villuprófun
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Sveiflusjá
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Öryggisspurningar
SING_OPTIONS_ADVANCED_LINEBONUS=Línubónus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Eftir Lagaval
SING_OPTIONS_ADVANCED_PARTYPOPUP=Sjálfvirk Partívalmynd
-SING_EDIT=Lagasmiður
-SING_EDIT_MENU_DESCRIPTION=búðu til eigið lag
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Flytja inn texta frá midi skrá
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=til baka
-SING_EDIT_BUTTON_CONVERT=Flytja inn
-SING_EDIT_BUTTON_EXIT=til baka
-
-SING_EDIT_NAVIGATE=stýra
-SING_EDIT_SELECT=velja
-SING_EDIT_EXIT=til baka
-
-SING_LEGEND_SELECT=velja
-SING_LEGEND_NAVIGATE=stýra
+SING_LEGEND_SELECT=Velja
+SING_LEGEND_NAVIGATE=Stýra
SING_LEGEND_CONTINUE=áfram
-SING_LEGEND_ESC=til baka
-
-SING_PLAYER_DESC=sláið inn nöfn leikmanna
-SING_PLAYER_WHEREAMI=Nöfn leikmanna
-SING_PLAYER_ENTER_NAME=sláðu inn nafn
-
-SING_DIFFICULTY_DESC=veldu erfiðleikastig
+SING_LEGEND_ESC=Til baka
+
+SING_PLAYER_TITLE=Snið
+SING_PLAYER_READY=Leikmenn tilbúinn að syngja
+SING_PLAYER_COUNT=Fjöldi leikmanna
+SING_PLAYER_EDIT=Sérsníða leikmann
+SING_PLAYER_NAME=Skrifaðu nafnið þitt
+SING_PLAYER_COLOR=Veldu lit
+SING_PLAYER_LEVEL=Veldu stig
+SING_PLAYER_AVATAR=Veldu avatar þinn
+
+SING_DIFFICULTY_DESC=Veldu erfiðleikastig
SING_DIFFICULTY_WHEREAMI=Erfiðleikastig
SING_DIFFICULTY_CONTINUE=í lagaval
SING_EASY=Auðvelt
SING_MEDIUM=Miðlungs
SING_HARD=Erfitt
-SING_SONG_SELECTION_DESC=veldu lag
+SING_SONG_SELECTION_DESC=Veldu lag
SING_SONG_SELECTION_WHEREAMI=Lagaval
-SING_SONG_SELECTION_GOTO=fara til ..
-SING_SONG_SELECTION=lagaval
-SING_SONG_SELECTION_MENU=valmynd
-SING_SONG_SELECTION_PLAYLIST=lagalisti
+SING_SONG_SELECTION_GOTO=Fara til ..
+SING_SONG_SELECTION=Lagaval
+SING_SONG_SELECTION_MENU=Valmynd
+SING_SONG_SELECTION_PLAYLIST=Lagalisti
+SING_SONG_IN_CAT=Song
SING_SONGS_IN_CAT=Lög
PLAYLIST_CATTEXT=Lagalisti: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=samtals
-SING_MODE=syngja sóló
-SING_NOTES=nótur
-SING_GOLDEN_NOTES=gullnótur
-SING_PHRASE_BONUS=línubónus
+;TODO: SING_SONG_SELECTION_LEGEND_TITLE=Legend
+;TODO: SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+;TODO: SING_SONG_SELECTION_LEGEND_DUET=Duet
+
+SING_TOTAL=Samtals
+SING_MODE=Syngja sóló
+SING_NOTES=Nótur
+SING_GOLDEN_NOTES=Gullnótur
+SING_PHRASE_BONUS=Línubónus
SING_MENU=Aðalvalmynd
-SONG_SCORE=stigagjöf
+SONG_SCORE=Stigagjöf
SONG_SCORE_WHEREAMI=Dómur
SING_SCORE_TONE_DEAF=Falskt
@@ -235,27 +220,26 @@ SING_SCORE_LEAD_SINGER=Forsöngvari
SING_SCORE_SUPERSTAR=Súperstjarna
SING_SCORE_ULTRASTAR=Últrastjarna
-SING_TOP_5_CHARTS=topp 5 leikmenn
-SING_TOP_5_CHARTS_WHEREAMI=topp 5
+SING_TOP_5_CHARTS=Topp 5 leikmenn
+SING_TOP_5_CHARTS_WHEREAMI=Topp 5
SING_TOP_5_CHARTS_CONTINUE=í lagaval
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=breyta erfiðleikastigi
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Breyta erfiðleikastigi
-POPUP_PERFECT=fullkomið!
+POPUP_PERFECT=Fullkomið!
POPUP_AWESOME=æðislegt!
-POPUP_GREAT=frábært!
-POPUP_GOOD=gott!
-POPUP_NOTBAD=ekki slæmt!
-POPUP_BAD=slæmt!
-POPUP_POOR=lélegt!
-POPUP_AWFUL=hræðilegt!
-
-;TODO: IMPLODE_GLUE1=,
+POPUP_GREAT=Frábært!
+POPUP_GOOD=Gott!
+POPUP_NOTBAD=Ekki slæmt!
+POPUP_BAD=Slæmt!
+POPUP_POOR=Lélegt!
+POPUP_AWFUL=Hræðilegt!
+
+IMPLODE_GLUE1=,
IMPLODE_GLUE2= og
-SONG_MENU_NAME_MAIN=lagavalmynd
+SONG_MENU_NAME_MAIN=Lagavalmynd
SONG_MENU_PLAY=Syngja
SONG_MENU_CHANGEPLAYERS=Breyta um leikmenn
-SONG_MENU_EDIT=Breyta
SONG_MENU_MODI=Singja Modi
SONG_MENU_CANCEL=Hætta við
@@ -277,17 +261,17 @@ SONG_MENU_YES=Já
SONG_MENU_NO=Nei
SONG_MENU_NAME_PLAYLIST_LOAD=Opna Lagalista
-SONG_MENU_PLAYLIST_LOAD=opna
-SONG_MENU_PLAYLIST_DELCURRENT=eyða núverandi Lagalista
+SONG_MENU_PLAYLIST_LOAD=Opna
+SONG_MENU_PLAYLIST_DELCURRENT=Eyða núverandi Lagalista
SONG_MENU_NAME_PLAYLIST_DEL=Eyða Lagalista?
SONG_MENU_NAME_PARTY_MAIN=Partívalmynd
SONG_MENU_JOKER=Jóker
-SONG_MENU_NAME_PARTY_JOKER=taka jóker
+SONG_MENU_NAME_PARTY_JOKER=Taka jóker
-SONG_JUMPTO_DESC=lagaleit
+SONG_JUMPTO_DESC=Lagaleit
SONG_JUMPTO_TYPE_DESC=Leita að:
SONG_JUMPTO_TYPE1=Öllu
SONG_JUMPTO_TYPE2=Titli
@@ -297,57 +281,57 @@ SONG_JUMPTO_NOSONGSFOUND=Engin lög fundust
SONG_JUMPTO_HELP=Sláðu inn texta til að leita að
SONG_JUMPTO_CATTEXT=Leita að: %s
-PARTY_MODE=partísnið
+PARTY_MODE=Partísnið
PARTY_DIFFICULTY=Erfiðleikastig
PARTY_PLAYLIST=Lagalista Stilling
PARTY_PLAYLIST_ALL=Öll lög
PARTY_PLAYLIST_CATEGORY=Mappa
PARTY_PLAYLIST_PLAYLIST=Lagalisti
-PARTY_TEAMS=fjöldi liða
-PARTY_TEAMS_PLAYER1=fjöldi söngvara
-PARTY_TEAMS_PLAYER2=fjöldi söngvara
-PARTY_TEAMS_PLAYER3=fjöldi söngvara
+PARTY_TEAMS=Fjöldi liða
+PARTY_TEAMS_PLAYER1=Fjöldi söngvara
+PARTY_TEAMS_PLAYER2=Fjöldi söngvara
+PARTY_TEAMS_PLAYER3=Fjöldi söngvara
PARTY_LEGEND_CONTINUE=áfram
-PARTY_OPTIONS_DESC=stillingar fyrir partíleik
+PARTY_OPTIONS_DESC=Stillingar fyrir partíleik
PARTY_OPTIONS_WHEREAMI=Partí Stillingar
-PARTY_PLAYER_DESC=sláðu inn nöfn leikmanna og liða!
+PARTY_PLAYER_DESC=Sláðu inn nöfn leikmanna og liða!
PARTY_PLAYER_WHEREAMI=Partí Nöfn
-PARTY_PLAYER_ENTER_NAME=sláðu inn nöfn
+PARTY_PLAYER_ENTER_NAME=Sláðu inn nöfn
PARTY_ROUNDS_DESC= veljið hvaða snið þið viljið spila
PARTY_ROUNDS_WHEREAMI=Partí Umferðir
-PARTY_ROUNDS_LEGEND_CONTINUE=byrja partí-leik
-PARTY_ROUNDCOUNT=fjöldi umferða
-PARTY_SELECTMODE=umferð %d
+PARTY_ROUNDS_LEGEND_CONTINUE=Byrja partí-leik
+PARTY_ROUNDCOUNT=Fjöldi umferða
+PARTY_SELECTMODE=Umferð %d
-PARTY_ROUND_DESC=næstu leikmenn að hljóðnemunum
+PARTY_ROUND_DESC=Næstu leikmenn að hljóðnemunum
PARTY_ROUND_WHEREAMI=Partí Næsta Umferð
-PARTY_ROUND_LEGEND_CONTINUE=byrja umferð
+PARTY_ROUND_LEGEND_CONTINUE=Byrja umferð
PARTY_SONG_WHEREAMI=Partí Lagaval
-PARTY_SONG_LEGEND_CONTINUE=syngja
-PARTY_SONG_MENU=partí valmynd
+PARTY_SONG_LEGEND_CONTINUE=Syngja
+PARTY_SONG_MENU=Partí valmynd
-PARTY_SCORE_DESC=stig síðustu umferðar
+PARTY_SCORE_DESC=Stig síðustu umferðar
PARTY_SCORE_WHEREAMI=Partí Stig
-PARTY_WIN_DESC=sigurvegari partí-leiks
+PARTY_WIN_DESC=Sigurvegari partí-leiks
PARTY_WIN_WHEREAMI=Partí Sigurvegari
-PARTY_WIN_LEGEND_CONTINUE=aftur að aðalvalmynd
+PARTY_WIN_LEGEND_CONTINUE=Aftur að aðalvalmynd
PARTY_ROUND=Umferð
PARTY_ROUND_WINNER=Sigurvegari
-PARTY_NOTPLAYEDYET=ekki spilað enn
-PARTY_NOBODY=enginn
+PARTY_NOTPLAYEDYET=Ekki spilað enn
+PARTY_NOBODY=Enginn
NEXT_ROUND=Næsta umferð:
PARTY_DISMISSED=Úr leik!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=sigrar!
+PARTY_SCORE_WINS2=Sigrar!
MODE_RANDOM_NAME=Tilviljanakennt snið
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -422,7 +406,7 @@ STAT_DETAIL_WHEREAMI=Ítarleg Tölfræði
STAT_NEXT=Næsta síða
STAT_PREV=Fyrri síða
STAT_REVERSE=Öfug röð
-STAT_PAGE=Blaðsíða %0:d af %1:d blaðsíðum (%2:d af %3:d færslum)
+STAT_PAGE=Blaðsíða %0:d af %1:d \n Færslum %2:d af %3:d
STAT_DESC_SCORES=Hæstu stig
STAT_DESC_SCORES_REVERSED=Lægstu stig
@@ -448,7 +432,6 @@ ERROR_SAVE_FILE_FAILED=Gat ekki vistað skrá
ERROR_FILE_NOT_FOUND=Skrá finnst ekki
ENCODING_ERROR_ASK_FOR_UTF8=Get ekki vistað breytingar með núverandi stafasetti. Breyta í UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Ekkert lag valið
MSG_ERROR_TITLE=Villa
MSG_INFO_TITLE=Upplýsingar
@@ -458,27 +441,26 @@ MSG_END_PARTY=Virkilega hætta í Partí?
ERROR_NO_SONGS=Engum lögum hlaðið inn
ERROR_NO_PLUGINS=Engum viðbótum hlaðið inn
-ERROR_NO_MODES_FOR_CURRENT_SETUP=engin snið tiltæk fyrir núverandi leikmann/lið
+ERROR_NO_MODES_FOR_CURRENT_SETUP=Engin snið tiltæk fyrir núverandi leikmann/lið
ERROR_CAN_NOT_START_PARTY= villa kom upp við upphaf partíleiks
ERROR_CORRUPT_SONG=Ekki var hægt að hlaða inn lagi.
ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Ekki var hægt að hlaða inn lagi: Skrá finnst ekki.
ERROR_CORRUPT_SONG_NO_NOTES=Ekki var hægt að hlaða inn lagi: Finn engar nótur
ERROR_CORRUPT_SONG_NO_BREAKS=Ekki var hægt að hlaða inn lagi: Finn engar línuskiptingar
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Ekki var hægt að hlaða inn lagi: Villa við þáttun línu %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Leikmaður %d er úthlutað til margra hljóðnema. Athugaðu hljóðnemann valkosti þína
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Leikmaður %d er ekki úthlutað í hljóðnema. Athugaðu hljóðnemann valkosti þína
-;TODO: SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK=Internet
;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Notendanafn
+SING_OPTIONS_NETWORK_PASSWORD=Lykilorð
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
SING_OPTIONS_NETWORK_AUTO_MODE=Sjálfvirkt
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Leikmaður
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,20 +469,20 @@ SING_OPTIONS_NETWORK_AUTO_MODE=Sjálfvirkt
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Leikmaður 1
+OPTION_PLAYER_2=Leikmaður 2
+OPTION_PLAYER_3=Leikmaður 3
+OPTION_PLAYER_4=Leikmaður 4
+OPTION_PLAYER_5=Leikmaður 5
+OPTION_PLAYER_6=Leikmaður 6
OPTION_ALL_PLAYERS=Öllu
OPTION_ALL_SCORES=Öllu
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_ADD=Bæta við
MSG_INSERT_USER_CANCEL=Hætta við
;TODO: WEBSITE_NO_CONNECTION=No website connection!
@@ -515,14 +497,14 @@ MSG_INSERT_USER_CANCEL=Hætta við
;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+SONG_MENU_REFRESH_SCORES_TITLE=Uppfæra
;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+SONG_MENU_REFRESH_SCORES_REFRESH=Uppfæra
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
@@ -535,7 +517,7 @@ MSG_INSERT_USER_CANCEL=Hætta við
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
+SCORE_DOWNLOAD_TITLE=Sækja
;TODO: SCORE_DOWNLOAD_SONG=Song:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
@@ -556,45 +538,15 @@ SCORE_DOWNLOAD_CANCEL=Hætta við
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-PARTY_MODE_TOURNAMENT_OPTIONS_DESC=fjöldi umferða
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Fjöldi umferða
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=næstu leikmenn að hljóðnemunum
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Næstu leikmenn að hljóðnemunum
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Skrá vistuð
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +561,6 @@ INFO_FILE_SAVED=Skrá vistuð
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Lagavalmynd
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -638,7 +588,8 @@ SING_OPTIONS_WEBCAM_EFFECT=Brellur
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+SING_OPTIONS_WEBCAM_PREVIEW=Virkja forskoðun
+SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Virkja forskoðun
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
@@ -663,29 +614,29 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Þröskuldur
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Fjöldi leikmanna
+NAME_CURRENT_PLAYER=Leikmaður
SING_OPTIONS_GAME_SONGMENU=Lagavalmynd
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
+OPTION_VALUE_ROULETTE=Rúlletta
+OPTION_VALUE_CHESSBOARD=Skákborð
;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_SLOT_MACHINE=Spilakassi
+OPTION_VALUE_LIST=Listi
+OPTION_VALUE_MOSAIC=Flísar
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Syngja
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Efri
+OPTION_VALUE_NEXT=Neðst
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
+OPTION_VALUE_WHITE=Hvítur
;TODO: OPTION_VALUE_TURQUOISE=Turquoise
;TODO: OPTION_VALUE_SALMON=Salmon
;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
@@ -695,8 +646,8 @@ OPTION_VALUE_TO_SING=Syngja
;TODO: OPTION_VALUE_ORCHID=Orchid
;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
+OPTION_VALUE_CHOCOLATE=Súkkulaði
+OPTION_VALUE_GOLD=Gull
;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
;TODO: OPTION_VALUE_SKY=Sky
;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
@@ -708,9 +659,9 @@ OPTION_VALUE_TO_SING=Syngja
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Stærð
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Gagnsæi
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Litur
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -722,14 +673,14 @@ JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blár
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-;TODO: JUKEBOX_SONGOPTIONS_SAVE=Save
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
-;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
-;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
+JUKEBOX_SONGOPTIONS_SAVE=Vista
+JUKEBOX_SONGOPTIONS_CLOSE=Loka
+JUKEBOX_SONGOPTIONS_DEFAULT=Sjálfgefið
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Vistuð!
;TODO: SING_SONG_CREDITS=Credits
;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
+SING_JUKEBOX_DESC=Hlustaðu lögin mín
;TODO: JUKEBOX_MODE=Jukebox Mode
;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
@@ -739,12 +690,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Lagalisti
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Öllu
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Leikmaður
+
+SING_ABOUT=Um
+SING_ABOUT_DESC=Um Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Um...
+ABOUT_USDX_DEVELOPEDBY=Þróað af
+ABOUT_CHECK_CHECKING=Athugar nýjum uppfærslum...
+ABOUT_CHECK_AVAILABLE=Það er ný útgáfa í boði
+ABOUT_CHECK_UPTODATE=WorldParty er upp til dagsetning
+ABOUT_CHECK_CONNECTION=Það er engin internettenging
+ABOUT_OVERVIEW=Uppgötvaðu nýja leið til að syngja, einn, í pari eða með vinum. \n Gaman er tryggð.\n\nWorldParty er fork af upprunalegu útgáfunni Ultrastar Deluxe 1.1 hannað og þróað af UltraStar España lið, telja það með stærsta Karaoke samfélag.\n\n\nÞetta forrit er ókeypis og libre undir GPL leyfinu. \n\n Heimsókn til okkar fyrir frekari upplýsingar.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Þróað af
+DEVELOPERS_OVERVIEW=Fólk sem hefur lagt sitt af mörkum við þetta verkefni:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Heimsókn til okkar fyrir frekari upplýsingar.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/\304\214e\305\241tina.ini" "b/game/languages/\304\214e\305\241tina.ini"
index 33ffe79b..6269ddb3 100644
--- "a/game/languages/\304\214e\305\241tina.ini"
+++ "b/game/languages/\304\214e\305\241tina.ini"
@@ -1,10 +1,71 @@
[Text]
LANGUAGE=Čeština
+SING_LOADING=Načítání...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
+
+SING_SING=Zpívat
+SING_SING_DESC=Rychlá hra: zpívej sólo nebo duet
+
+SING_MULTI=Párty
+SING_MULTI_DESC=Zpívejte v párty-módu
+
+;TODO: SING_JUKEBOX=Jukebox
+;TODO: SING_JUKEBOX_DESC=Listen to my collection
+
+SING_STATS=Statistiky
+SING_STATS_DESC=Zobrazit statistiky
+
+SING_GAME_OPTIONS=Herní možnosti
+SING_GAME_OPTIONS_DESC=Změnit nastavení hry
+
+SING_EXIT=Ukončit
+SING_EXIT_DESC=Ukončit hru
+
+;TODO: SING_ABOUT=About
+;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
+
+SING_PLAYER_TITLE=Profily
+;TODO: SING_PLAYER_READY=Players ready to sing
+SING_PLAYER_COUNT=Počet hráčů
+SING_PLAYER_EDIT=Přizpůsobte si přehrávač
+SING_PLAYER_NAME=Napište své jméno
+SING_PLAYER_COLOR=Vyber barvu
+SING_PLAYER_LEVEL=Vyberte úroveň
+SING_PLAYER_AVATAR=Vyberte svůj avatar
+
OPTION_VALUE_EASY=Snadná
OPTION_VALUE_MEDIUM=Střední
OPTION_VALUE_HARD=Těžká
+SING_OPTIONS=Možnosti
+
+SING_OPTIONS_GAME=Hra
+SING_OPTIONS_GRAPHICS=Grafika
+SING_OPTIONS_SOUND=Zvuk
+SING_OPTIONS_LYRICS=Text
+SING_OPTIONS_THEMES=Vzhled
+SING_OPTIONS_MICROPHONES=Mikrofony
+SING_OPTIONS_ADVANCED=Pokročilé
+SING_OPTIONS_NETWORK=Internet
+;TODO: SING_OPTIONS_WEBCAM=Webcam
+;TODO: SING_OPTIONS_JUKEBOX=Jukebox
+SING_OPTIONS_EXIT=Zpět
+
+SING_OPTIONS_GAME_LANGUAGE=Jazyk
+SING_OPTIONS_GAME_SONGMENU=Menu skladeb
+SING_OPTIONS_GAME_TABS=Složky
+SING_OPTIONS_GAME_SORTING=Řazení
+;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Aktivujte gamepad
+
+OPTION_VALUE_ROULETTE=Ruleta
+OPTION_VALUE_CHESSBOARD=Šachovnice
+OPTION_VALUE_CAROUSEL=Kolotoč
+;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
+OPTION_VALUE_LIST=Seznam
+OPTION_VALUE_MOSAIC=Dlaždice
+
OPTION_VALUE_ON=Zap
OPTION_VALUE_OFF=Vyp
@@ -14,35 +75,52 @@ OPTION_VALUE_LANGUAGE=Jazyk
OPTION_VALUE_FOLDER=Složka
OPTION_VALUE_TITLE=Název
OPTION_VALUE_ARTIST=Interpret
-OPTION_VALUE_TITLE2=Název 2
OPTION_VALUE_ARTIST2=Interpret 2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_YEAR=Rok
+OPTION_VALUE_DECADE=Desetiletí
OPTION_VALUE_PLAYLIST=Seznam stop
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-OPTION_VALUE_WHENNOVIDEO=Neobsahuje-li video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+SING_OPTIONS_GRAPHICS_FULLSCREEN=Na celou obrazovku
+SING_OPTIONS_GRAPHICS_RESOLUTION=Rozlišení
+SING_OPTIONS_GRAPHICS_SCREENFADE=Přechody obrazu
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efekty u zpěvu
+SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizace
+SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa
-OPTION_VALUE_SMALL=Malé
-OPTION_VALUE_BIG=Velké
+OPTION_VALUE_BORDERLESS=Maximalizovat
+
+OPTION_VALUE_WHENNOVIDEO=Neobsahuje-li video
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Pokud žádné video a obrázek
OPTION_VALUE_HALF=Poloviční
OPTION_VALUE_FULL_VID=Úplné (video)
OPTION_VALUE_FULL_VID_BG=Úplné (pozadí & video)
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Přehrávání z mikrof.
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hudba na pozadí
+SING_OPTIONS_SOUND_CLICK_ASSIST=Pomocné tikání
+SING_OPTIONS_SOUND_BEAT_CLICK=Další rytmika
+;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
+SING_OPTIONS_SOUND_PREVIEWVOLUME=Hlasitost ukázky
+SING_OPTIONS_SOUND_PREVIEWFADING=Odeznění ukázky
+
;TODO: OPTION_VALUE_GAIN_SOFT=Soft
;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
;TODO: OPTION_VALUE_GAIN_HARD=Hard
OPTION_VALUE_AUTO=Auto
-OPTION_VALUE_SEC=sekunda
-OPTION_VALUE_SECS=sekundy
+OPTION_VALUE_SEC=Sekunda
+OPTION_VALUE_SECS=Sekundy
+
+SING_OPTIONS_LYRICS_FONT=Písmo
+SING_OPTIONS_LYRICS_EFFECT=Efekt
+SING_OPTIONS_LYRICS_NOTELINES=Notová osnova
-OPTION_VALUE_PLAIN=Prosté
-OPTION_VALUE_OLINE1=Obtažené 1
-OPTION_VALUE_OLINE2=Obtažené 2
+OPTION_VALUE_PLAIN=Stylizovaný
+;TODO: OPTION_VALUE_OLINE1=With thin edge
+;TODO: OPTION_VALUE_OLINE2=With thick edge
OPTION_VALUE_SIMPLE=Jednoduchý
OPTION_VALUE_ZOOM=Zvětšení
@@ -50,180 +128,200 @@ OPTION_VALUE_SLIDE=Skluz
OPTION_VALUE_BALL=Míč
OPTION_VALUE_SHIFT=Posun
-OPTION_VALUE_EURO=Evropské
-OPTION_VALUE_JAPAN=Japonské
-OPTION_VALUE_AMERICAN=Americké
-
-OPTION_VALUE_BLUE=Modrá
-OPTION_VALUE_GREEN=Zelená
-OPTION_VALUE_PINK=Růžová
-OPTION_VALUE_RED=Červená
-OPTION_VALUE_VIOLET=Fialová
-OPTION_VALUE_ORANGE=Oranžová
-OPTION_VALUE_YELLOW=Žlutá
-OPTION_VALUE_BROWN=Hnědá
-OPTION_VALUE_BLACK=Černá
-
-OPTION_VALUE_SING=Zpívat
-OPTION_VALUE_SELECT_PLAYERS=Výběr hráčů
-OPTION_VALUE_OPEN_MENU=Otevřít menu
+SING_OPTIONS_THEMES_THEME=Téma
+SING_OPTIONS_THEMES_SKIN=Skin
+SING_OPTIONS_THEMES_COLOR=Barva
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=Hardwarový kurzor
-OPTION_VALUE_SOFTWARE_CURSOR=Softwarový kurzor
+SING_OPTIONS_MICROPHONES_CARD=Zvuková karta
+SING_OPTIONS_MICROPHONES_INPUT=Vstup
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanál
+SING_OPTIONS_MICROPHONES_THRESHOLD=Práh
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Zesílení mikrofonu
-SING_LOADING=Načítání...
-
-SING_CHOOSE_MODE=vybrat mód
-SING_SING=zpívat
-SING_SING_DESC=rychlá hra: zpívej sólo nebo duet
+SING_OPTIONS_ADVANCED_DEBUG=Ladění programu
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskop
+SING_OPTIONS_ADVANCED_ONSONGCLICK=Po výběru skladby
+SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Potvrzovací dialogy
+SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto párty-menu
+;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
+;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-SING_MULTI=párty
-SING_MULTI_DESC=zpívejte v párty-módu
+OPTION_VALUE_ALL=Všude
+OPTION_VALUE_PLAYER=Hráč
-SING_TOOLS=nástroje
+;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
+;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
+;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
+;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
+SING_OPTIONS_NETWORK_AUTO_MODE=Auto
+;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
+;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
+;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
+;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
+;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
+;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-SING_STATS=statistiky
-SING_STATS_DESC=zobrazit statistiky
+OPTION_PLAYER_1=Hráč 1
+OPTION_PLAYER_2=Hráč 2
+OPTION_PLAYER_3=Hráč 3
+OPTION_PLAYER_4=Hráč 4
+OPTION_PLAYER_5=Hráč 5
+OPTION_PLAYER_6=Hráč 6
+OPTION_ALL_PLAYERS=Všude
+OPTION_ALL_SCORES=Všude
+;TODO: OPTION_VALUE_SAVE=Save
+;TODO: OPTION_VALUE_SEND=Send
-SING_EDITOR=editor
-SING_EDITOR_DESC=vytvořit vlastní skladbu
+;TODO: MSG_INSERT_USER_TITLE=%0:s
+;TODO: MSG_INSERT_USER_DESC=Fill the fields:
+;TODO: MSG_INSERT_USER_ADD=Add
+MSG_INSERT_USER_CANCEL=Zrušit
-SING_GAME_OPTIONS=herní možnosti
-SING_GAME_OPTIONS_DESC=změnit nastavení hry
+;TODO: WEBSITE_NO_CONNECTION=No website connection!
+;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
+;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
+;TODO: WEBSITE_EXIST_USER=Existing user!
+;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
+;TODO: WEBSITE_OK_SEND=Score sent successfully!
+;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
+;TODO: WEBSITE_ERROR_SONG=Song Not Found!
+;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
+;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-SING_EXIT=ukončit
-SING_EXIT_DESC=ukončit hru
+;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
+;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
+;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
+;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
+;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
+;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
+;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
+;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-SING_OPTIONS=možnosti
-SING_OPTIONS_DESC=změnit nastavení
-SING_OPTIONS_WHEREAMI=Možnosti
+;TODO: SONG_SCORE_MAX=Best:
+;TODO: SONG_SCORE_MEDIA=Average:
-SING_OPTIONS_GAME=hra
-SING_OPTIONS_GRAPHICS=grafika
-SING_OPTIONS_SOUND=zvuk
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=text
-SING_OPTIONS_THEMES=vzhled
-SING_OPTIONS_RECORD=záznam
-SING_OPTIONS_ADVANCED=pokročilé
-SING_OPTIONS_EXIT=zpět
+;TODO: SCORE_SEND_DESC=Send Score
+;TODO: SCORE_SEND=Send
+;TODO: SCORE_SEND_PLAYER=Player
+;TODO: SCORE_SEND_OTHER_USER= Other Username
+;TODO: SCORE_SAVE=Save
-SING_OPTIONS_GAME_WHEREAMI=Možnosti hry
-SING_OPTIONS_GAME_DESC=obecné herní nastavení
-SING_OPTIONS_GAME_PLAYERS=Hráči
-SING_OPTIONS_GAME_DIFFICULTY=Obtížnost
-SING_OPTIONS_GAME_LANGUAGE=Jazyk
-SING_OPTIONS_GAME_TABS=Složky
-SING_OPTIONS_GAME_SORTING=Řazení
-SING_OPTIONS_GAME_DEBUG=Ladění programu
+;TODO: SCORE_DOWNLOAD_TITLE=Download
+;TODO: SCORE_DOWNLOAD_SONG=Song:
+;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
+;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
+SCORE_DOWNLOAD_CANCEL=Zrušit
+;TODO: SCORE_DOWNLOAD_OK=OK
+;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-SING_OPTIONS_GRAPHICS_WHEREAMI=Možnosti grafiky
-SING_OPTIONS_GRAPHICS_DESC=grafické nastavení
-SING_OPTIONS_GRAPHICS_RESOLUTION=Rozlišení
-SING_OPTIONS_GRAPHICS_FULLSCREEN=Na celou obrazovku
-SING_OPTIONS_GRAPHICS_DEPTH=Barevná hloubka
-SING_OPTIONS_GRAPHICS_VISUALIZER=Vizualizace
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop
-SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus za řádek
-SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velikost videa
+;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_RESOLUTION=Rozlišení
+;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
+;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
+;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
+;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_EFFECT=Efekt
+SING_OPTIONS_WEBCAM_PREVIEW=Aktivovat náhled
-SING_OPTIONS_SOUND_WHEREAMI=Možnosti zvuku
-SING_OPTIONS_SOUND_DESC=zvukové nastavení
-SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Přehrávání z mikrof.
-SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Hudba na pozadí
-SING_OPTIONS_SOUND_MIC_BOOST=Zesílení mikrofonu
-SING_OPTIONS_SOUND_CLICK_ASSIST=Pomocné tikání
-SING_OPTIONS_SOUND_BEAT_CLICK=Další rytmika
-SING_OPTIONS_SOUND_THRESHOLD=Práh
-SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Pro dva hráče
-;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
-SING_OPTIONS_SOUND_PREVIEWVOLUME=Hlasitost ukázky
-SING_OPTIONS_SOUND_PREVIEWFADING=Odeznění ukázky
+;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
+;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
+;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
+SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Práh
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
+;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Průhlednost
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
+JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Barva
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Červená
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zelená
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Modrá
-SING_OPTIONS_LYRICS_WHEREAMI=Možnosti textů
-SING_OPTIONS_LYRICS_DESC=nastavení textů
-SING_OPTIONS_LYRICS_FONT=Písmo
-SING_OPTIONS_LYRICS_EFFECT=Efekt
-SING_OPTIONS_LYRICS_SOLMIZATION=Názvy tónů
-SING_OPTIONS_LYRICS_NOTELINES=Notová osnova
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
+;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-SING_OPTIONS_THEMES_WHEREAMI=Možnosti vzhledu
-SING_OPTIONS_THEMES_DESC=nastavení vzhledu
-SING_OPTIONS_THEMES_THEME=Téma
-SING_OPTIONS_THEMES_SKIN=Skin
-SING_OPTIONS_THEMES_COLOR=Barva
+OPTION_VALUE_TO_SING=Zpívat
+OPTION_VALUE_ACTUAL=Horní
+OPTION_VALUE_NEXT=Dno
+;TODO: OPTION_VALUE_OTHER=Other
+;TODO: OPTION_VALUE_FILL=Fill
+;TODO: OPTION_VALUE_OUTLINE=Outline
+OPTION_VALUE_BLUE=Modrá
+OPTION_VALUE_GREEN=Zelená
+OPTION_VALUE_PINK=Růžová
+OPTION_VALUE_RED=Červená
+OPTION_VALUE_VIOLET=Fialová
+OPTION_VALUE_ORANGE=Oranžová
+OPTION_VALUE_YELLOW=Žlutá
+OPTION_VALUE_BROWN=Hnědá
+OPTION_VALUE_BLACK=Černá
+OPTION_VALUE_MAGENTA=Magenta
+OPTION_VALUE_GRAY=Šedá
+OPTION_VALUE_WHITE=Bílý
+OPTION_VALUE_TURQUOISE=Tyrkysový
+OPTION_VALUE_SALMON=Losos
+;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
+;TODO: OPTION_VALUE_LAVENDER=Lavender
+;TODO: OPTION_VALUE_BEIGE=Beige
+;TODO: OPTION_VALUE_TEAL=Teal
+;TODO: OPTION_VALUE_ORCHID=Orchid
+;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
+;TODO: OPTION_VALUE_PLUM=Plum
+;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
+;TODO: OPTION_VALUE_GOLD=Gold
+;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
+;TODO: OPTION_VALUE_SKY=Sky
+;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
+;TODO: OPTION_VALUE_CYAN=Cyan
+;TODO: OPTION_VALUE_FLAME=Flame
-SING_OPTIONS_RECORD_WHEREAMI=Možnosti záznamu
-SING_OPTIONS_RECORD_DESC=nastavení mikrofonu
-SING_OPTIONS_RECORD_CARD=Zvuková karta
-SING_OPTIONS_RECORD_INPUT=Vstup
-SING_OPTIONS_RECORD_CHANNEL=Kanál
-
-SING_OPTIONS_ADVANCED_WHEREAMI=Pokročilé možnosti
-SING_OPTIONS_ADVANCED_DESC=pokročilé nastavení
-SING_OPTIONS_ADVANCED_EFFECTSING=Efekty u zpěvu
-SING_OPTIONS_ADVANCED_SCREENFADE=Přechody obrazu
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animace načítání
-SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Potvrzovací dialogy
-SING_OPTIONS_ADVANCED_LINEBONUS=Bonus za řádek
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
-SING_OPTIONS_ADVANCED_ONSONGCLICK=Po výběru skladby
-SING_OPTIONS_ADVANCED_PARTYPOPUP=Auto párty-menu
+SING_LEGEND_SELECT=Vybrat
+SING_LEGEND_NAVIGATE=Navigace
+SING_LEGEND_CONTINUE=Pokračovat
+SING_LEGEND_ESC=Zpět
-SING_EDIT=Editor
-SING_EDIT_MENU_DESCRIPTION=Vytvořit vlastní skladbu
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Importovat ze souboru midi
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=zpět
-SING_EDIT_BUTTON_CONVERT=Importovat
-SING_EDIT_BUTTON_EXIT=zpět
-
-SING_EDIT_NAVIGATE=navigace
-SING_EDIT_SELECT=vybrat
-SING_EDIT_EXIT=zpět
-
-SING_LEGEND_SELECT=vybrat
-SING_LEGEND_NAVIGATE=navigace
-SING_LEGEND_CONTINUE=pokračovat
-SING_LEGEND_ESC=zpět
-
-SING_PLAYER_DESC=zadejte jméno hráče (jména hráčů)
-SING_PLAYER_WHEREAMI=Jména hráčů
-SING_PLAYER_ENTER_NAME=zadejte jména
-
-SING_DIFFICULTY_DESC=zvolte obtížnost
-SING_DIFFICULTY_WHEREAMI=Otížnost
-SING_DIFFICULTY_CONTINUE=na výběr skladby
-SING_EASY=Snadná
-SING_MEDIUM=Střední
-SING_HARD=Těžká
-
-SING_SONG_SELECTION_DESC=vyberte skladbu
-SING_SONG_SELECTION_WHEREAMI=Výběr skladby
-SING_SONG_SELECTION_GOTO=jdi na ..
-SING_SONG_SELECTION=výběr skladby
-SING_SONG_SELECTION_MENU=menu
-SING_SONG_SELECTION_PLAYLIST=seznam stop
-SING_SONGS_IN_CAT=skladby
+SING_SONG_SELECTION=Výběr skladby
+SING_SONG_SELECTION_MENU=Menu
+SING_SONG_SELECTION_PLAYLIST=Seznam stop
+SING_SONG_IN_CAT=Cançon
+SING_SONGS_IN_CAT=Skladby
PLAYLIST_CATTEXT=Seznam stop: %s
-
-;TODO: SING_TIME=TIME
-SING_TOTAL=celkem
-SING_MODE=zpívat sólo
-SING_NOTES=noty
-SING_GOLDEN_NOTES=zlaté noty
-SING_PHRASE_BONUS=bonus za řádek
+SING_SONG_SELECTION_LEGEND_TITLE=Legenda
+SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Duet
+
+SING_TOTAL=Celkem
+SING_MODE=Zpívat sólo
+SING_NOTES=Noty
+SING_GOLDEN_NOTES=Zlaté noty
+SING_PHRASE_BONUS=Bonus za řádek
SING_MENU=Hlavní menu
-SONG_SCORE=skóre za skladbu
+SONG_SCORE=Skóre za skladbu
SONG_SCORE_WHEREAMI=Skóre
SING_SCORE_TONE_DEAF=Hudební hluch
@@ -237,26 +335,24 @@ SING_SCORE_ULTRASTAR=Ultrastar
SING_TOP_5_CHARTS=5 nejlepších
SING_TOP_5_CHARTS_WHEREAMI=5 nej
-SING_TOP_5_CHARTS_CONTINUE=na výběr skladby
-SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=přepnout obtížnost
+SING_TOP_5_CHARTS_CONTINUE=Na výběr skladby
+SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Přepnout obtížnost
-POPUP_PERFECT=výborně!
-POPUP_AWESOME=paráda!
-POPUP_GREAT=super!
-POPUP_GOOD=dobře!
+POPUP_PERFECT=Výborně!
+POPUP_AWESOME=Paráda!
+POPUP_GREAT=Super!
+POPUP_GOOD=Dobře!
POPUP_NOTBAD=šlo to!
POPUP_BAD=špatně!
-POPUP_POOR=bída!
-POPUP_AWFUL=hrůza!
+POPUP_POOR=Bída!
+POPUP_AWFUL=Hrůza!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= a
-SONG_MENU_NAME_MAIN=menu skladby
+SONG_MENU_NAME_MAIN=Menu skladby
SONG_MENU_PLAY=Zpívat
SONG_MENU_CHANGEPLAYERS=Změnit hráče
-SONG_MENU_EDIT=Upravit
-SONG_MENU_MODI=Zpívat "Modi"
SONG_MENU_CANCEL=Zrušit
SONG_MENU_NAME_PLAYLIST=Menu skladeb
@@ -264,8 +360,8 @@ SONG_MENU_PLAYLIST_ADD=Přidat skladbu
SONG_MENU_PLAYLIST_DEL=Odebrat skladbu
SONG_MENU_NAME_PLAYLIST_ADD=Přidat skladbu
-SONG_MENU_PLAYLIST_ADD_NEW=do nového playlistu
-SONG_MENU_PLAYLIST_ADD_EXISTING=do existujícího seznamu stop
+SONG_MENU_PLAYLIST_ADD_NEW=Do nového playlistu
+SONG_MENU_PLAYLIST_ADD_EXISTING=Do existujícího seznamu stop
SONG_MENU_PLAYLIST_NOEXISTING=Žádný seznam stop nevytvořen
SONG_MENU_NAME_PLAYLIST_NEW=Nový seznam stop
@@ -277,27 +373,20 @@ SONG_MENU_YES=Ano
SONG_MENU_NO=Ne
SONG_MENU_NAME_PLAYLIST_LOAD=Otevřít seznam stop
-SONG_MENU_PLAYLIST_LOAD=otevřít
-SONG_MENU_PLAYLIST_DELCURRENT=smazat tento seznam stop
+SONG_MENU_PLAYLIST_LOAD=Otevřít
+SONG_MENU_PLAYLIST_DELCURRENT=Smazat tento seznam stop
SONG_MENU_NAME_PLAYLIST_DEL=Smazat seznam stop?
SONG_MENU_NAME_PARTY_MAIN=Párty menu
SONG_MENU_JOKER=Žolík
-SONG_MENU_NAME_PARTY_JOKER=vzít žolíka
+SONG_MENU_NAME_PARTY_JOKER=Vzít žolíka
-SONG_JUMPTO_DESC=hledat skladbu
+SONG_JUMPTO_DESC=Hledat skladbu
SONG_JUMPTO_TYPE_DESC=Hledat:
-SONG_JUMPTO_TYPE1=Všude
-SONG_JUMPTO_TYPE2=V názvech
-SONG_JUMPTO_TYPE3=V interpretech
-SONG_JUMPTO_SONGSFOUND=Nalezeno %d skladeb
-SONG_JUMPTO_NOSONGSFOUND=Žádné skladby nenalezeny
-SONG_JUMPTO_HELP=Zadejte text pro hledání
-SONG_JUMPTO_CATTEXT=Hledat: %s
-
-PARTY_MODE=párty mód
+
+PARTY_MODE=Párty mód
PARTY_DIFFICULTY=Obtížnost
PARTY_PLAYLIST=Mód seznamu stop
PARTY_PLAYLIST_ALL=Všechny skladby
@@ -308,46 +397,43 @@ PARTY_TEAMS_PLAYER1=Hráčů týmu 1
PARTY_TEAMS_PLAYER2=Hráčů týmu 2
PARTY_TEAMS_PLAYER3=Hráčů týmu 3
-PARTY_LEGEND_CONTINUE=pokračovat
+PARTY_LEGEND_CONTINUE=Pokračovat
-PARTY_OPTIONS_DESC=nastavení pro hru na párty
+PARTY_OPTIONS_DESC=Nastavení pro hru na párty
PARTY_OPTIONS_WHEREAMI=Možnosti párty
-PARTY_PLAYER_DESC=zadejte jména hráčů a týmů!
-PARTY_PLAYER_WHEREAMI=Jména párty
-PARTY_PLAYER_ENTER_NAME=vložit jména
+PARTY_PLAYER_ENTER_NAME=Vložit jména
-
-PARTY_ROUNDS_DESC=Vyberte, ve kterých režimech chcete hrát
-PARTY_ROUNDS_WHEREAMI=Kola párty
-PARTY_ROUNDS_LEGEND_CONTINUE=spustit párty-hru
-PARTY_ROUNDCOUNT=počet kol
+PARTY_ROUNDS_LEGEND_CONTINUE=Spustit párty-hru
+PARTY_ROUNDCOUNT=Počet kol
PARTY_SELECTMODE=%d kola
-PARTY_ROUND_DESC=další hráč k mikrofonu
-PARTY_ROUND_WHEREAMI=Další kolo
-PARTY_ROUND_LEGEND_CONTINUE=začít kolo
+PARTY_ROUND_LEGEND_CONTINUE=Začít kolo
PARTY_SONG_WHEREAMI=Výběr skladeb na párty
-PARTY_SONG_LEGEND_CONTINUE=zpívat
-PARTY_SONG_MENU=párty menu
+PARTY_SONG_LEGEND_CONTINUE=Zpívat
+PARTY_SONG_MENU=Párty menu
+
+OPTION_VALUE_SING=Zpívat
+OPTION_VALUE_SELECT_PLAYERS=Výběr hráčů
+OPTION_VALUE_OPEN_MENU=Otevřít menu
-PARTY_SCORE_DESC=skóre posledního kola
+PARTY_SCORE_DESC=Skóre posledního kola
PARTY_SCORE_WHEREAMI=Párty body
PARTY_WIN_DESC=Vítěz hry párty
PARTY_WIN_WHEREAMI=Vítěz párty
-PARTY_WIN_LEGEND_CONTINUE=zpět do hlavního menu
+PARTY_WIN_LEGEND_CONTINUE=Zpět do hlavního menu
PARTY_ROUND=Kolo
PARTY_ROUND_WINNER=Vítěz
-PARTY_NOTPLAYEDYET=ještě se nehrálo
-PARTY_NOBODY=nikdo
+PARTY_NOTPLAYEDYET=Ještě se nehrálo
+PARTY_NOBODY=Nikdo
NEXT_ROUND=Další kolo:
PARTY_DISMISSED=Zrušeno!
PARTY_SCORE_WINS=%s
-PARTY_SCORE_WINS2=vítězství!
+PARTY_SCORE_WINS2=Vítězství!
MODE_RANDOM_NAME=Náhodný režim
;TODO: MODE_RANDOM_DESC=Keep yourself on your toes! The game will select a mode for you at random!
@@ -407,8 +493,6 @@ MODE_BLIND_NAME=Slepý režim
;TODO: MODE_HARDCORE_DESC=Battle for a three-line lead on your opponent!
STAT_MAIN=Statistiky
-STAT_MAIN_DESC=Obecné
-STAT_MAIN_WHEREAMI=Statistiky
STAT_OVERVIEW_INTRO=%0:s Statistiky. \n Naposledy vynulováno %1:.2d. %2:.2d. %3:d
STAT_OVERVIEW_SONG=%0:d skladeb (%3:d s videem), z čehož %1:d už bylo hráno a %2:d zatím hráno nebylo.\n Nejpopulárnější skladba je %5:s od %4:s.
@@ -422,7 +506,7 @@ STAT_DETAIL_WHEREAMI=Podrobné statistiky
STAT_NEXT=Další stránka
STAT_PREV=Předchozí stránka
STAT_REVERSE=Opačné pořadí
-STAT_PAGE=Strana %0:d z %1:d stránek\n (%2:d z %3:d záznamů)
+STAT_PAGE=Strana %0:d z %1:d stránek \n Záznamů %2:d z %3:d
STAT_DESC_SCORES=Nejvyšší skóre
STAT_DESC_SCORES_REVERSED=Nejnižší skóre
@@ -440,164 +524,24 @@ STAT_DESC_BANDS=Nejoblíbenější kapela
STAT_DESC_BANDS_REVERSED=Nejneoblíbenější kapela
STAT_FORMAT_BANDS=%0:s \n %1:dx zpíváno
-SCREENSHOT_SAVED=Snímek obrazovky uložen
-SCREENSHOT_FAILED=Uložení snímku obrazovky selhalo
-
-INFO_FILE_SAVED=Soubor uložen
-ERROR_SAVE_FILE_FAILED=Uložení souboru selhalo
-ERROR_FILE_NOT_FOUND=Soubor nenalezen
-
-ENCODING_ERROR_ASK_FOR_UTF8=Nelze uložit změny v tomto kódování. Změnit na UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=Nevybrána žádná stopa
-
-MSG_ERROR_TITLE=Chyba
-MSG_INFO_TITLE=Info
-MSG_QUESTION_TITLE=Potvrzení
-MSG_QUIT_USDX=Opravdu ukončit UltraStar?
-MSG_END_PARTY=Opravdu ukončit párty mód?
-
-ERROR_NO_SONGS=Žádné skladby nenačteny
-ERROR_NO_PLUGINS=Žádné doplňky nenačteny
-ERROR_NO_MODES_FOR_CURRENT_SETUP=pro vybrané nastavení hráčů/týmů nejsou dostupné žádné režimy
-ERROR_CAN_NOT_START_PARTY= během spouštění párty-módu se objevila chyba
-ERROR_CORRUPT_SONG=Skladbu se nepodařilo načíst.
-ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Skladbu se nepodařilo načíst: Soubor nenalezen
-ERROR_CORRUPT_SONG_NO_NOTES=Skladbu se nepodařilo načíst: Noty nenalezeny
-ERROR_CORRUPT_SONG_NO_BREAKS=Skladbu se nepodařilo načíst: Nenalezeny informace o rozdělení do řádků
-ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Skladbu se nepodařilo načíst: Chyba při zpracování řádku %0:d
-ERROR_NO_EDITOR=Tato funkce není dostupná pro Linux/Mac
-ERROR_PLAYER_DEVICE_ASSIGNMENT=Hráč %d je přiřazen k vícero mikrofonům. Zkontrolujte prosím nastavení záznamu
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Hráč %d není přiřazen k mikrofonu. Zkontrolujte prosím nastavení záznamu
-
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
-;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
-;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
-;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
-SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
-;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
-;TODO: SING_OPTIONS_NETWORK_NO_DLL=No compatible leaderboard-plugin found!
-;TODO: SING_OPTIONS_NETWORK_DELETE_PLAYER=Really delete the user %0:s of the website %1:s?
-;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
-;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
-OPTION_ALL_PLAYERS=Všude
-OPTION_ALL_SCORES=Všude
-;TODO: OPTION_VALUE_SAVE=Save
-;TODO: OPTION_VALUE_SEND=Send
-
-;TODO: MSG_INSERT_USER_TITLE=%0:s
-;TODO: MSG_INSERT_USER_DESC=Fill the fields:
-;TODO: MSG_INSERT_USER_ADD=Add
-MSG_INSERT_USER_CANCEL=Zrušit
-
-;TODO: WEBSITE_NO_CONNECTION=No website connection!
-;TODO: WEBSITE_LOGIN_ERROR=Login Incorrect!
-;TODO: WEBSITE_BLANK_LOGIN=There are blank fields!
-;TODO: WEBSITE_EXIST_USER=Existing user!
-;TODO: WEBSITE_ERROR_SCORE=Scoring Error!
-;TODO: WEBSITE_OK_SEND=Score sent successfully!
-;TODO: WEBSITE_ERROR_SCORE_DUPLICATED=Existing Score!
-;TODO: WEBSITE_ERROR_SONG=Song Not Found!
-;TODO: WEBSITE_SAVE_SCORE=Score save successfully!
-;TODO: WEBSITE_NO_CONNECTION_SAVE=No website connection! Save user anyway?
-
-;TODO: SONG_MENU_REFRESH_SCORES=Update Scores
-;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
-;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
-;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
-;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
-;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
-
-;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
-
-;TODO: SCORE_SEND_DESC=Send Score
-;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
-;TODO: SCORE_SEND_OTHER_USER= Other Username
-;TODO: SCORE_SAVE=Save
-
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
-;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
-;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
-SCORE_DOWNLOAD_CANCEL=Zrušit
-;TODO: SCORE_DOWNLOAD_OK=OK
-;TODO: SCORE_DOWNLOAD_SONG_UPDATE=%0:d song(s) change(s) by web!
-
-;TODO: SING_OPTIONS_GAME_SHOWSCORES=Show Scores
-;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
-
;TODO: PARTY_SELECT_MODE=Mode
;TODO: PARTY_MODE_CLASSIC=Classic
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-PARTY_MODE_TOURNAMENT_OPTIONS_DESC=počet kol
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Počet kol
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=další hráč k mikrofonu
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Další hráč k mikrofonu
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=Soubor uložen
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
-;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
-;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
-
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
;TODO: JUKEBOX_RANDOM=Random
;TODO: JUKEBOX_REPEAT=Repeat
@@ -609,8 +553,6 @@ INFO_FILE_SAVED=Soubor uložen
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Menu skladeb
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,33 +568,6 @@ SONG_MENU_SORTING_ALL=Všude
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
-;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
-;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
-SING_OPTIONS_WEBCAM_RESOLUTION=Rozlišení
-;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
-;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
-;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
-SING_OPTIONS_WEBCAM_EFFECT=Efekt
-;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
-;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
-;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
-;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
-
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NORMAL=Normal
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GRAYSCALE=Grayscale
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BLACK_WHITE=Black & White
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_NEGATIVE=Negative
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_BINARY_IMAGE=Binary Image
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_DILATE=Dilate
-SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Práh
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EDGES=Edges
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_GAUSSIAN_BLUR=Gaussian Blur
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_EQUALIZED=Equalized
-;TODO: SING_OPTIONS_WEBCAM_EFFECT_ERODE=Erode
-
;TODO: PARTY_PLAYLIST_MANUAL=Manual Selection
;TODO: PARTY_MODE_JUKEBOX_NO_SONGS=Playlist is empty!
;TODO: SONG_MENU_OPEN_CATEGORY=Open category
@@ -666,85 +581,46 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Práh
;TODO: NAME_PLAYERS_COUNT=Number of Players
;TODO: NAME_CURRENT_PLAYER=Player
-SING_OPTIONS_GAME_SONGMENU=Menu skladeb
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
-
-;TODO: SING_OPTIONS_JUKEBOX=Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
-;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
-
-OPTION_VALUE_TO_SING=zpívat
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
-;TODO: OPTION_VALUE_OTHER=Other
-;TODO: OPTION_VALUE_FILL=Fill
-;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
-JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Barva
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Červená
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Zelená
-JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Modrá
-
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_LETTERBOX=LetterBox
-;TODO: JUKEBOX_SONGOPTIONS_SAVE=Save
-;TODO: JUKEBOX_SONGOPTIONS_CLOSE=Close
+JUKEBOX_SONGOPTIONS_SAVE=Uložit
+JUKEBOX_SONGOPTIONS_CLOSE=Zavřít
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
-;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
+JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Uložené!
-;TODO: SING_SONG_CREDITS=Credits
-;TODO: SING_JUKEBOX=Jukebox
-;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
-;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
-;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
JUKEBOX_OPTIONS_PLAYLIST=Seznam stop
;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
-;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
-;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
-OPTION_VALUE_ALL=Všude
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_USDX_DEVELOPEDBY=Vyvinuto
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+ABOUT_OVERVIEW=Objevte nový způsob zpěvu, sám, v páru nebo s přáteli. \n Zábava je zaručena.\n\nWorldParty je fork původní verze Ultrastar Deluxe 1.1 navržený a vyvinutý týmem UltraStar España, to se počítá s největší karaoke komunitou.\n\n\nTento program je zdarma a libre pod licencí GPL. \n\n Navštivte nás pro více informací.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Vyvinuto
+DEVELOPERS_OVERVIEW=Lidé, kteří přispěli k tomuto projektu:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Navštivte nás pro více informací.\n\nhttps://ultrastar-es.org
+
+SCREENSHOT_SAVED=Snímek obrazovky uložen
+SCREENSHOT_FAILED=Uložení snímku obrazovky selhalo
+
+MSG_ERROR_TITLE=Chyba
+MSG_INFO_TITLE=Info
+MSG_QUESTION_TITLE=Potvrzení
+MSG_QUIT_USDX=Opravdu ukončit UltraStar?
+MSG_END_PARTY=Opravdu ukončit párty mód?
+
+ERROR_NO_SONGS=Žádné skladby nenačteny
+ERROR_NO_PLUGINS=Žádné doplňky nenačteny
+;TODO: ERROR_LOADING_SONGS=Wait for loading all the songs
+ERROR_CORRUPT_SONG=Skladbu se nepodařilo načíst.
+ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Skladbu se nepodařilo načíst: Soubor nenalezen
+ERROR_CORRUPT_SONG_NO_NOTES=Skladbu se nepodařilo načíst: Noty nenalezeny
+ERROR_CORRUPT_SONG_NO_BREAKS=Skladbu se nepodařilo načíst: Nenalezeny informace o rozdělení do řádků
+ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Skladbu se nepodařilo načíst: Chyba při zpracování řádku %0:d
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Hráč %d je přiřazen k vícero mikrofonům. Zkontrolujte možnosti mikrofonu
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Hráč %d není přiřazen k mikrofonu. Zkontrolujte možnosti mikrofonu
diff --git "a/game/languages/\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254.ini" "b/game/languages/\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254.ini"
index 4a981d3d..d4b984e1 100644
--- "a/game/languages/\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254.ini"
+++ "b/game/languages/\316\225\316\273\316\273\316\267\316\275\316\271\316\272\316\254.ini"
@@ -5,8 +5,8 @@ OPTION_VALUE_EASY=Εύκολο
OPTION_VALUE_MEDIUM=Μέτριο
OPTION_VALUE_HARD=Δύσκολο
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+OPTION_VALUE_ON=Επί
+OPTION_VALUE_OFF=Σβηστός
;TODO: OPTION_VALUE_EDITION=Edition
;TODO: OPTION_VALUE_GENRE=Genre
@@ -14,66 +14,62 @@ OPTION_VALUE_LANGUAGE=Γλώσσα
OPTION_VALUE_FOLDER=Φάκελος
OPTION_VALUE_TITLE=Τίτλος
OPTION_VALUE_ARTIST=Καλλιτέχνης
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
+OPTION_VALUE_TITLE2=Τίτλος2
+OPTION_VALUE_ARTIST2=Καλλιτέχνης2
+OPTION_VALUE_YEAR=Ετος
+OPTION_VALUE_DECADE=Δεκαετία
OPTION_VALUE_PLAYLIST=Λίστα
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Μεγιστοποιημένη
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Όταν δεν υπάρχει βίντεο
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Όταν δεν υπάρχει βίντεο και εικόνα
-;TODO: OPTION_VALUE_SMALL=Small
-;TODO: OPTION_VALUE_BIG=Big
+OPTION_VALUE_SMALL=Μικρό
+OPTION_VALUE_BIG=Μεγάλο
;TODO: OPTION_VALUE_HALF=Half
;TODO: OPTION_VALUE_FULL_VID=Full (Video)
;TODO: OPTION_VALUE_FULL_VID_BG=Full (BG & Video)
;TODO: OPTION_VALUE_GAIN_SOFT=Soft
-;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
-;TODO: OPTION_VALUE_GAIN_HARD=Hard
+OPTION_VALUE_GAIN_MEDIUM=Μεσαίο
+OPTION_VALUE_GAIN_HARD=Σκληρά
-;TODO: OPTION_VALUE_AUTO=Auto
-;TODO: OPTION_VALUE_SEC=Second
-;TODO: OPTION_VALUE_SECS=Seconds
+OPTION_VALUE_AUTO=Auto
+OPTION_VALUE_SEC=Δεύτερος
+OPTION_VALUE_SECS=Δευτερόλεπτα
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Στυλιζαρισμένο
+OPTION_VALUE_OLINE1=Με λεπτή άκρη
+OPTION_VALUE_OLINE2=Με παχιά άκρη
-;TODO: OPTION_VALUE_SIMPLE=Simple
+OPTION_VALUE_SIMPLE=Απλός
;TODO: OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Μπάλα
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
+OPTION_VALUE_EURO=Ευρώ
+OPTION_VALUE_JAPAN=Ιαπωνία
+OPTION_VALUE_AMERICAN=Αμερικανός
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
+OPTION_VALUE_BLUE=Μπλε
+OPTION_VALUE_GREEN=Πράσινος
+OPTION_VALUE_PINK=Ροζ
+OPTION_VALUE_RED=κόκκινο
+OPTION_VALUE_VIOLET=Βιολέτα
+OPTION_VALUE_ORANGE=Πορτοκάλι
+OPTION_VALUE_YELLOW=Κίτρινος
+OPTION_VALUE_BROWN=Καστανός
+OPTION_VALUE_BLACK=Μαύρος
OPTION_VALUE_SING=Τραγουδήστε
;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
+OPTION_VALUE_OPEN_MENU=Ανοίξτε μενού
SING_LOADING=Φόρτωνει...
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
SING_CHOOSE_MODE=Επιλογή τρόπου παιχνιδιού
SING_SING=Τραγούδηστε
@@ -87,9 +83,6 @@ SING_TOOLS=Εργαλεία
SING_STATS=Στατιστικά
SING_STATS_DESC=Δείτε τα στατιστικά
-SING_EDITOR=Δημιουργία
-SING_EDITOR_DESC=Φτιάξτε το δικό σας τραγούδι
-
SING_GAME_OPTIONS=Επιλογές παιχνιδιού
SING_GAME_OPTIONS_DESC=Αλλάξτε τις επιλογές του παιχνιδιού
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=Επιλογές
SING_OPTIONS_GAME=Παιχνίδι
SING_OPTIONS_GRAPHICS=Γραφικά
SING_OPTIONS_SOUND=Ήχος
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=Στίχοι
SING_OPTIONS_THEMES=Θέματα
-SING_OPTIONS_RECORD=Ηχογράφηση
+SING_OPTIONS_MICROPHONES=Ηχογράφηση
SING_OPTIONS_ADVANCED=Για προχωρημένους
SING_OPTIONS_EXIT=Πίσω
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=Δυσκολία
SING_OPTIONS_GAME_LANGUAGE=Γλώσσα
SING_OPTIONS_GAME_TABS=Ετικέτες
SING_OPTIONS_GAME_SORTING=Ταξινόμιση
-SING_OPTIONS_GAME_DEBUG=Αποσυμφόρηση
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Ενεργοποίηση gamepad
SING_OPTIONS_GRAPHICS_WHEREAMI=Επιλογές γραφικών
SING_OPTIONS_GRAPHICS_DESC=Ρυθμίσεις γραφικών
SING_OPTIONS_GRAPHICS_RESOLUTION=Ανάλυση
SING_OPTIONS_GRAPHICS_FULLSCREEN=Πλήρης οθόνη
-SING_OPTIONS_GRAPHICS_DEPTH=Βάθος
+SING_OPTIONS_GRAPHICS_EFFECTSING=Εφέ τραγουδιού
+SING_OPTIONS_GRAPHICS_SCREENFADE=Σβήσιμο εικόνας
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Φόρτωση κινούμενων εικόνων
SING_OPTIONS_GRAPHICS_VISUALIZER=Κινούμενο φόντο
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Οσκιλοσκόπιο
SING_OPTIONS_GRAPHICS_LINEBONUS=Μπόνους γραμμής
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Μέγεθος βίντεο
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=Επιλογές ήχου
SING_OPTIONS_SOUND_DESC=Επιλογές ήχου
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Ήχος μικροφώνου
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Μουσική στο μενού
-SING_OPTIONS_SOUND_MIC_BOOST=Ισχύς μικροφώνου
SING_OPTIONS_SOUND_CLICK_ASSIST=Βοήθεια με κλίκ
SING_OPTIONS_SOUND_BEAT_CLICK=Βοήθεια ρυθμού
-SING_OPTIONS_SOUND_THRESHOLD=Ευαισθησία μικροφώνου
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Με δύο παίχτες
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Ένταση προεπισκόπισης
SING_OPTIONS_SOUND_PREVIEWFADING=Σβήσιμο προεπισκόπισης
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Επιλογές στίχων
SING_OPTIONS_LYRICS_DESC=Ρυθμίσιες στίχων
SING_OPTIONS_LYRICS_FONT=Γραμματοσειρά
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=Θέμα
SING_OPTIONS_THEMES_SKIN=Μορφή θέματος
SING_OPTIONS_THEMES_COLOR=Χρώμα
-SING_OPTIONS_RECORD_WHEREAMI=Επιλογές μικροφώνου
-SING_OPTIONS_RECORD_DESC=Ρυθμίσεις μικροφώνου
-SING_OPTIONS_RECORD_CARD=Κάρτα ήχου
-SING_OPTIONS_RECORD_INPUT=Επιλογή μικροφώνου
-SING_OPTIONS_RECORD_CHANNEL=Κανάλι
+SING_OPTIONS_MICROPHONES_WHEREAMI=Επιλογές μικροφώνου
+SING_OPTIONS_MICROPHONES_DESC=Ρυθμίσεις μικροφώνου
+SING_OPTIONS_MICROPHONES_CARD=Κάρτα ήχου
+SING_OPTIONS_MICROPHONES_INPUT=Επιλογή μικροφώνου
+SING_OPTIONS_MICROPHONES_CHANNEL=Κανάλι
+SING_OPTIONS_MICROPHONES_THRESHOLD=Ευαισθησία μικροφώνου
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Ισχύς μικροφώνου
SING_OPTIONS_ADVANCED_WHEREAMI=Επιλογές για προχωρημένους
SING_OPTIONS_ADVANCED_DESC=Ρυθμίσεις για προχωρημένους
-SING_OPTIONS_ADVANCED_EFFECTSING=Εφέ τραγουδιού
-SING_OPTIONS_ADVANCED_SCREENFADE=Σβήσιμο εικόνας
-SING_OPTIONS_ADVANCED_LOADANIMATION=Φόρτωση κινούμενων εικόνων
+SING_OPTIONS_ADVANCED_DEBUG=Αποσυμφόρηση
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Οσκιλοσκόπιο
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Ερωτήσεις ασφαλείας
SING_OPTIONS_ADVANCED_LINEBONUS=Μπόνους γραμμής
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Μετά απο την επιλογή τραγουδιού
SING_OPTIONS_ADVANCED_PARTYPOPUP=Αυτόματο μενού "Πάρτυ"
-SING_EDIT=Δημιουργία
-SING_EDIT_MENU_DESCRIPTION=Φτιάξτε το δικό σας τραγούδι
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Εισαγωγή αρχείου κειμένου
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=Πίσω
-SING_EDIT_BUTTON_CONVERT=Εισαγωγή
-SING_EDIT_BUTTON_EXIT=Πίσω
-
-SING_EDIT_NAVIGATE=Εξερέυνηση
-SING_EDIT_SELECT=Επέλεξε
-SING_EDIT_EXIT=Πίσω
-
SING_LEGEND_SELECT=Επέλεξε
SING_LEGEND_NAVIGATE=Εξερέυνηση
SING_LEGEND_CONTINUE=Συνέχισε
SING_LEGEND_ESC=Πίσω
-SING_PLAYER_DESC=Γράψε ονόμα(τα) παιχτ-η/ων
-SING_PLAYER_WHEREAMI=Ονόματα παιχτών
-SING_PLAYER_ENTER_NAME=Γράψε όνομα
+SING_PLAYER_TITLE=Προφίλ
+SING_PLAYER_READY=Οι παίκτες έτοιμοι να τραγουδήσουν
+SING_PLAYER_COUNT=Αριθμός παικτών
+SING_PLAYER_EDIT=Προσαρμόστε έναν παίκτη
+SING_PLAYER_NAME=Γράψετε το όνομά σας
+SING_PLAYER_COLOR=Διάλεξε ένα χρώμα
+SING_PLAYER_LEVEL=Επιλέξτε ένα επίπεδο
+SING_PLAYER_AVATAR=Επιλέξτε το avatar σας
SING_DIFFICULTY_DESC=Διάλεξε δυσκολία
SING_DIFFICULTY_WHEREAMI=Δυσκολία
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=Πήγαινε σε...
SING_SONG_SELECTION=Επιλογή τραγουδιου
SING_SONG_SELECTION_MENU=Μενού
SING_SONG_SELECTION_PLAYLIST=Λίστα
+SING_SONG_IN_CAT=Τραγούδι
SING_SONGS_IN_CAT=Τραγούδια
PLAYLIST_CATTEXT=Λίστα: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Θρύλος
+SING_SONG_SELECTION_LEGEND_VIDEO=βίντεο
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Ντουέτο
-;TODO: SING_TIME=TIME
SING_TOTAL=Σύνολο
SING_MODE=Τραγούδα σόλο
SING_NOTES=Νότες
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= και
SONG_MENU_NAME_MAIN=Μενού τραγουδιών
SONG_MENU_PLAY=Τραγουδήστε
SONG_MENU_CHANGEPLAYERS=Αλλάξτε παίχτες
-SONG_MENU_EDIT=Επεξεργασία
SONG_MENU_MODI=Τραγουδήστε μιά τροποποίηση
SONG_MENU_CANCEL=Ακύρωση
@@ -321,8 +304,8 @@ PARTY_PLAYER_ENTER_NAME=Γράψε ονόματα
;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
PARTY_ROUNDS_LEGEND_CONTINUE=Ξεκίνα το παιχνίδι "Πάρτυ"
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
-;TODO: PARTY_SELECTMODE=Round %d
+PARTY_ROUNDCOUNT=Αριθμός γύρων
+PARTY_SELECTMODE=Γύρος %d
PARTY_ROUND_DESC=Επόμενοι παίχτες
PARTY_ROUND_WHEREAMI=Επόμενος γύρος "Πάρτυ"
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_NAME=Μείνε πάνω από τη μπάρα!
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Μέχρι 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Τυφλός 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Μέχρι 5000 πόντους
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Τυφλός 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Μέχρι 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Τυφλός 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Μονομαχία
@@ -388,16 +371,16 @@ MODE_BLIND_NAME=Στα τυφλά
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
+MODE_1000BLIND_NAME = +1000 Τυφλός
;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
-;TODO: MODE_DEAF_NAME = Deaf
+MODE_DEAF_NAME = Κουφός
;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Τυφλός
;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Λεπτομερή στατιστικά
STAT_NEXT=Επόμενη Σελίδα
STAT_PREV=Προηγούμενη σελίδα
STAT_REVERSE=Αντίστροφα
-STAT_PAGE=Seite %0:d από %1:d σελίδες\n (%2:d of %3:d εισαγωγές)
+STAT_PAGE=Seite %0:d από %1:d σελίδες \n %2:d of %3:d εισαγωγές
STAT_DESC_SCORES=Υψηλότερες Βαθμολογίες
STAT_DESC_SCORES_REVERSED=Χαμηλότερες βαθμολογίες
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx τραγουδήθηκαν
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Σφάλμα
;TODO: MSG_INFO_TITLE=Information
@@ -465,20 +447,19 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=Το τραγούδι δεν ήταν δυνα
ERROR_CORRUPT_SONG_NO_NOTES=Το τραγούδι δεν ήταν δυνατό να φορτώσει: Δεν βρέθηκαν νότες
ERROR_CORRUPT_SONG_NO_BREAKS=Το τραγούδι δεν ήταν δυνατό να φορτώσει: Δεν βρέθηκαν κενά ανάμεσα στις νότες
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Το τραγούδι δεν ήταν δυνατό να φορτώσει: Λάθος στην επικόληση της γραμμής %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Παίχτης %d έχει εκχωρηθεί σε πολλαπλά μικρόφωνα. Ελέγξτε τις επιλογές μικροφώνου σας
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Παίχτης %d δεν έχει αντιστοιχιστεί σε ένα μικρόφωνο. Ελέγξτε τις επιλογές μικροφώνου σας
-;TODO: SING_OPTIONS_NETWORK=Internet
+SING_OPTIONS_NETWORK=Διαδίκτυο
;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Όνομα χρήστη
+SING_OPTIONS_NETWORK_PASSWORD=Κωδικός πρόσβασης
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Παίχτης
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,18 +468,18 @@ ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Το τραγούδι δεν ήταν δυν
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Παίχτης 1
+OPTION_PLAYER_2=Παίχτης 2
+OPTION_PLAYER_3=Παίχτης 3
+OPTION_PLAYER_4=Παίχτης 4
+OPTION_PLAYER_5=Παίχτης 5
+OPTION_PLAYER_6=Παίχτης 6
OPTION_ALL_PLAYERS=Όλα
OPTION_ALL_SCORES=Όλα
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
;TODO: MSG_INSERT_USER_ADD=Add
MSG_INSERT_USER_CANCEL=Ακύρωση
@@ -520,23 +501,23 @@ MSG_INSERT_USER_CANCEL=Ακύρωση
;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
-;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
-;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
+SONG_MENU_REFRESH_SCORES_ALL_SONGS=Ολα τα τραγούδια
+SONG_MENU_REFRESH_SCORES_ONLY_SONG=Αυτό το τραγούδι
;TODO: SONG_MENU_REFRESH_SCORES_REFRESH=Update
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_CONNECTION=Error connect to the website: %0:s!
;TODO: SONG_MENU_REFRESH_SCORES_ERROR_FILE=File not found: '%0:s [Download Scores]'!
;TODO: SONG_SCORE_MAX=Best:
-;TODO: SONG_SCORE_MEDIA=Average:
+SONG_SCORE_MEDIA=Μέσος:
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Παίχτης
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_TITLE=Κατεβάστε
+SCORE_DOWNLOAD_SONG=Τραγούδι:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=Ακύρωση
@@ -555,8 +536,8 @@ SCORE_DOWNLOAD_CANCEL=Ακύρωση
;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
-;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
-;TODO: PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Number of rounds
+PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Αριθμός παικτών
+PARTY_MODE_TOURNAMENT_OPTIONS_DESC=Αριθμός γύρων
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_FINAL=Final
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
@@ -565,52 +546,20 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Επόμενοι παίχτες
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
-;TODO: JUKEBOX_RANDOM=Random
-;TODO: JUKEBOX_REPEAT=Repeat
-;TODO: JUKEBOX_FIND=Find:
+JUKEBOX_RANDOM=Τυχαίος
+JUKEBOX_REPEAT=Επαναλαμβάνω
+JUKEBOX_FIND=Εύρημα:
;TODO: JUKEBOX_SORT=Sort:
;TODO: JUKEBOX_SONGLIST=List of Songs
;TODO: SING_ERROR_DUET_MODE_PARTY = Duet! Not playable in Party Mode!
-;TODO: SONG_MENU_SONG=Song
+SONG_MENU_SONG=Τραγούδι
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Μενού τραγουδιού
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -623,7 +572,7 @@ SONG_MENU_DELETE_SONG=Διέγραψε τραγούδι
;TODO: SONG_MENU_SORTING_TABS_ON=Tabs On
;TODO: SONG_MENU_SORTING_TABS_OFF=Tabs Off
SONG_MENU_SORTING_ALL=Όλα
-;TODO: SONG_MENU_SORTING_DUET=Duets
+SONG_MENU_SORTING_DUET=Ντουέτες
;TODO: SONG_MENU_SORTING_APPLY=Apply
;TODO: SING_OPTIONS_WEBCAM=Webcam
@@ -636,8 +585,9 @@ SING_OPTIONS_WEBCAM_RESOLUTION=Ανάλυση
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Εφέ
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_SATURATION=Κορεσμός
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+SING_OPTIONS_WEBCAM_PREVIEW=Ενεργοποίηση προεπισκόπησης
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -667,56 +617,56 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Ευαισθησία μικροφώνου
;TODO: NAME_CURRENT_PLAYER=Player
SING_OPTIONS_GAME_SONGMENU=Μενού τραγουδιού
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Ρουλέτα
+OPTION_VALUE_CHESSBOARD=Σκακιέρα
+OPTION_VALUE_CAROUSEL=Στροβιλοδρόμιο
+OPTION_VALUE_SLOT_MACHINE=Κουλοχέρης
+OPTION_VALUE_LIST=Λίστα
+OPTION_VALUE_MOSAIC=Πλακάκι
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=Τραγουδήστε
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=Άνω
+OPTION_VALUE_NEXT=Κάτω μέρος
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
+OPTION_VALUE_GRAY=Γκρί
+OPTION_VALUE_WHITE=άσπρο
+OPTION_VALUE_TURQUOISE=Τουρκουάζ
+OPTION_VALUE_SALMON=Σολομός
+OPTION_VALUE_GREENYELLOW=Πράσινο κίτρινο
+OPTION_VALUE_LAVENDER=Λεβάντα
+OPTION_VALUE_BEIGE=Μπεζ
+OPTION_VALUE_TEAL=Βάσκας
+OPTION_VALUE_ORCHID=Ορχιδέα
;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
+OPTION_VALUE_PLUM=Δαμάσκηνο
+OPTION_VALUE_CHOCOLATE=Σοκολάτα
+OPTION_VALUE_GOLD=Χρυσός
+OPTION_VALUE_DARKBLUE=Σκούρο μπλε
+OPTION_VALUE_SKY=Ουρανός
+OPTION_VALUE_HARLEQUIN=Αρλεκίνος
+OPTION_VALUE_CYAN=Κυανό
+OPTION_VALUE_FLAME=Φλόγα
;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Αποψη
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Πλάτος
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Υψος
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Μέγεθος
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Διαφάνεια
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Χρώμα
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
+JUKEBOX_SONGOPTIONS_LYRIC_LINE=Γραμμή
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=κόκκινο
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Πράσινος
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Μπλε
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -727,7 +677,7 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Χρώμα
;TODO: JUKEBOX_SONGOPTIONS_DEFAULT=Default
;TODO: JUKEBOX_SONGOPTIONS_OPTIONSSAVED=Saved!
-;TODO: SING_SONG_CREDITS=Credits
+SING_SONG_CREDITS=Πιστώσεις
;TODO: SING_JUKEBOX=Jukebox
;TODO: SING_JUKEBOX_DESC=Listen to my collection
;TODO: JUKEBOX_MODE=Jukebox Mode
@@ -739,12 +689,17 @@ JUKEBOX_OPTIONS_PLAYLIST=Λίστα
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Όλα
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Παίχτης
+
+SING_ABOUT=Σχετικά με
+SING_ABOUT_DESC=Σχετικά με Ultrastar Deluxe WorldParty
+ABOUT_MAIN=Σχετικά με...
+ABOUT_USDX_DEVELOPEDBY=Αναπτύχθηκε από
+ABOUT_CHECK_CHECKING=Έλεγχος για νέες ενημερώσεις...
+ABOUT_CHECK_AVAILABLE=Υπάρχει διαθέσιμη μια νέα έκδοση
+ABOUT_CHECK_UPTODATE=WorldParty είναι ενημερωμένο
+ABOUT_CHECK_CONNECTION=Δεν υπάρχει σύνδεση στο Internet
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Αναπτύχθηκε από
+DEVELOPERS_OVERVIEW=Οι άνθρωποι που συνέβαλαν σε αυτό το έργο:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Επισκεφθείτε μας για περισσότερες πληροφορίες.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/\320\241\321\200\320\277\321\201\320\272\320\270.ini" "b/game/languages/\320\241\321\200\320\277\321\201\320\272\320\270.ini"
index 13319ad1..4042e638 100644
--- "a/game/languages/\320\241\321\200\320\277\321\201\320\272\320\270.ini"
+++ "b/game/languages/\320\241\321\200\320\277\321\201\320\272\320\270.ini"
@@ -5,25 +5,25 @@ OPTION_VALUE_EASY=Lako
OPTION_VALUE_MEDIUM=Normalno
OPTION_VALUE_HARD=Tesko
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+OPTION_VALUE_ON=на
+OPTION_VALUE_OFF=Ван
-;TODO: OPTION_VALUE_EDITION=Edition
-;TODO: OPTION_VALUE_GENRE=Genre
+OPTION_VALUE_EDITION=Издање
+OPTION_VALUE_GENRE=Жанр
OPTION_VALUE_LANGUAGE=Jezik
OPTION_VALUE_FOLDER=Direktorijum
OPTION_VALUE_TITLE=Naziv
OPTION_VALUE_ARTIST=Izvodjac
-;TODO: OPTION_VALUE_TITLE2=Title2
-;TODO: OPTION_VALUE_ARTIST2=Artist2
-;TODO: OPTION_VALUE_YEAR=Year
-;TODO: OPTION_VALUE_DECADE=Decade
-OPTION_VALUE_PLAYLIST=lista pesama
+OPTION_VALUE_TITLE2=Naziv2
+OPTION_VALUE_ARTIST2=Izvodjac2
+OPTION_VALUE_YEAR=Година
+OPTION_VALUE_DECADE=Декада
+OPTION_VALUE_PLAYLIST=Lista pesama
-;TODO: OPTION_VALUE_BORDERLESS=Borderless
+OPTION_VALUE_BORDERLESS=Макимизед
-;TODO: OPTION_VALUE_WHENNOVIDEO=When No Video
-;TODO: OPTION_VALUE_WHENNOVIDEOANDIMAGE=When No Video and Image
+OPTION_VALUE_WHENNOVIDEO=Када нема видео записа
+OPTION_VALUE_WHENNOVIDEOANDIMAGE=Када нема видео и слике
;TODO: OPTION_VALUE_SMALL=Small
;TODO: OPTION_VALUE_BIG=Big
@@ -36,117 +36,103 @@ OPTION_VALUE_PLAYLIST=lista pesama
;TODO: OPTION_VALUE_GAIN_MEDIUM=Medium
;TODO: OPTION_VALUE_GAIN_HARD=Hard
-;TODO: OPTION_VALUE_AUTO=Auto
+OPTION_VALUE_AUTO=Ауто
;TODO: OPTION_VALUE_SEC=Second
-;TODO: OPTION_VALUE_SECS=Seconds
+OPTION_VALUE_SECS=Секунди
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+OPTION_VALUE_PLAIN=Стилизед
+OPTION_VALUE_OLINE1=Са танким рубом
+OPTION_VALUE_OLINE2=Са дебелом ивицом
;TODO: OPTION_VALUE_SIMPLE=Simple
;TODO: OPTION_VALUE_ZOOM=Zoom
;TODO: OPTION_VALUE_SLIDE=Slide
-;TODO: OPTION_VALUE_BALL=Ball
+OPTION_VALUE_BALL=Лопта
;TODO: OPTION_VALUE_SHIFT=Shift
-;TODO: OPTION_VALUE_EURO=Euro
-;TODO: OPTION_VALUE_JAPAN=Japan
-;TODO: OPTION_VALUE_AMERICAN=American
+OPTION_VALUE_EURO=Еуро
+OPTION_VALUE_JAPAN=Јапан
+OPTION_VALUE_AMERICAN=Американац
-;TODO: OPTION_VALUE_BLUE=Blue
-;TODO: OPTION_VALUE_GREEN=Green
-;TODO: OPTION_VALUE_PINK=Pink
-;TODO: OPTION_VALUE_RED=Red
-;TODO: OPTION_VALUE_VIOLET=Violet
-;TODO: OPTION_VALUE_ORANGE=Orange
-;TODO: OPTION_VALUE_YELLOW=Yellow
-;TODO: OPTION_VALUE_BROWN=Brown
-;TODO: OPTION_VALUE_BLACK=Black
+OPTION_VALUE_BLUE=Плави
+OPTION_VALUE_GREEN=Зелен
+OPTION_VALUE_PINK=Пинк
+OPTION_VALUE_RED=Црвена
+OPTION_VALUE_VIOLET=Виолет
+OPTION_VALUE_ORANGE=Наранџаста
+OPTION_VALUE_YELLOW=Жута
+OPTION_VALUE_BROWN=Бровн
+OPTION_VALUE_BLACK=Црн
OPTION_VALUE_SING=pevaj
-;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
-;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
+OPTION_VALUE_SELECT_PLAYERS=Изаберите играче
+OPTION_VALUE_OPEN_MENU=Отворите мени
SING_LOADING=Ucitava se...
+SING_LOADING_SONGS=Лоадинг песме из фолдера %s
-SING_CHOOSE_MODE=izaberi mod
+SING_CHOOSE_MODE=Izaberi mod
SING_SING=pevaj
-SING_SING_DESC=brza igra: pevaj solo ili u duetu
+SING_SING_DESC=Brza igra: pevaj solo ili u duetu
-SING_MULTI=tim
+SING_MULTI=Tim
SING_MULTI_DESC=pevaj u timskom modu
-SING_TOOLS=alati
+SING_TOOLS=Alati
-SING_STATS=statistike
+SING_STATS=Statistike
SING_STATS_DESC=pogledaj statistike
-SING_EDITOR=editor
-SING_EDITOR_DESC=napravi svoje pesme
-
-SING_GAME_OPTIONS=oprcije igre
+SING_GAME_OPTIONS=Oprcije igre
SING_GAME_OPTIONS_DESC=promeni podesavanja igre
-SING_EXIT=izlaz
-SING_EXIT_DESC=izadji iz igre
+SING_EXIT=Izlaz
+SING_EXIT_DESC=Izadji iz igre
-SING_OPTIONS=opcije
+SING_OPTIONS=Opcije
SING_OPTIONS_DESC=promeni podesavanja
SING_OPTIONS_WHEREAMI=Opcije
-SING_OPTIONS_GAME=igra
-SING_OPTIONS_GRAPHICS=grafika
-SING_OPTIONS_SOUND=zvuk
-;TODO: SING_OPTIONS_INPUT=Input
-SING_OPTIONS_LYRICS=lirike
-SING_OPTIONS_THEMES=teme
-SING_OPTIONS_RECORD=snimanje
-SING_OPTIONS_ADVANCED=ostalo
-SING_OPTIONS_EXIT=nazad
+SING_OPTIONS_GAME=Igra
+SING_OPTIONS_GRAPHICS=Grafika
+SING_OPTIONS_SOUND=Zvuk
+SING_OPTIONS_LYRICS=Lirike
+SING_OPTIONS_THEMES=Teme
+SING_OPTIONS_MICROPHONES=Snimanje
+SING_OPTIONS_ADVANCED=Ostalo
+SING_OPTIONS_EXIT=Nazad
SING_OPTIONS_GAME_WHEREAMI=Opcije Igra
-SING_OPTIONS_GAME_DESC=opsta podesavanja igre
+SING_OPTIONS_GAME_DESC=Opsta podesavanja igre
SING_OPTIONS_GAME_PLAYERS=Igraci
SING_OPTIONS_GAME_DIFFICULTY=Tezina
SING_OPTIONS_GAME_LANGUAGE=Jezik
SING_OPTIONS_GAME_TABS=Tabovi
SING_OPTIONS_GAME_SORTING=Sortiranje
-SING_OPTIONS_GAME_DEBUG=Dibagiranje
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=Активирајте гамепад
SING_OPTIONS_GRAPHICS_WHEREAMI=Opcije Grafika
-SING_OPTIONS_GRAPHICS_DESC=graficka podesavanja
+SING_OPTIONS_GRAPHICS_DESC=Graficka podesavanja
SING_OPTIONS_GRAPHICS_RESOLUTION=Rezolucija
SING_OPTIONS_GRAPHICS_FULLSCREEN=Pun Ekran
-SING_OPTIONS_GRAPHICS_DEPTH=Boje
-;TODO: SING_OPTIONS_GRAPHICS_VISUALIZER=Visualization
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=Osciloskop
+SING_OPTIONS_GRAPHICS_EFFECTSING=Efekti Pevanja
+SING_OPTIONS_GRAPHICS_SCREENFADE=Pomracenje Ekrana
+SING_OPTIONS_GRAPHICS_LOADANIMATION=Animacija Ucitavanja
+SING_OPTIONS_GRAPHICS_VISUALIZER=Визуелизација
SING_OPTIONS_GRAPHICS_LINEBONUS=Bonus Linija
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=Velicina Videa
SING_OPTIONS_SOUND_WHEREAMI=Opcije Zvuk
SING_OPTIONS_SOUND_DESC=podesavanja zvuka
-;TODO: SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Microphone Playback
-;TODO: SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Background music
-SING_OPTIONS_SOUND_MIC_BOOST=Pojacanje mikrofona
+SING_OPTIONS_SOUND_VOICEPASSTHROUGH=Чујте мој глас
+SING_OPTIONS_SOUND_BACKGROUNDMUSIC=Позадинска музика
SING_OPTIONS_SOUND_CLICK_ASSIST=Click assist
SING_OPTIONS_SOUND_BEAT_CLICK=Beat click
-SING_OPTIONS_SOUND_THRESHOLD=Stepen Cujnosti
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=Mod za dva igraca
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=Provera jacine tona
SING_OPTIONS_SOUND_PREVIEWFADING=Provera pomracenja
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=Opcije Lirike
SING_OPTIONS_LYRICS_DESC=Podesavanja lirika
SING_OPTIONS_LYRICS_FONT=Font
@@ -160,70 +146,68 @@ SING_OPTIONS_THEMES_THEME=Tema
SING_OPTIONS_THEMES_SKIN=Skin
SING_OPTIONS_THEMES_COLOR=Boja
-SING_OPTIONS_RECORD_WHEREAMI=Opcije Snimanje
-SING_OPTIONS_RECORD_DESC=podesavanja mikrofona
-SING_OPTIONS_RECORD_CARD=Zvucna Kartica
-SING_OPTIONS_RECORD_INPUT=Ulaz
-SING_OPTIONS_RECORD_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_WHEREAMI=Opcije Snimanje
+SING_OPTIONS_MICROPHONES_DESC=podesavanja mikrofona
+SING_OPTIONS_MICROPHONES_CARD=Zvucna Kartica
+SING_OPTIONS_MICROPHONES_INPUT=Ulaz
+SING_OPTIONS_MICROPHONES_CHANNEL=Kanal
+SING_OPTIONS_MICROPHONES_THRESHOLD=Stepen Cujnosti
+SING_OPTIONS_MICROPHONES_MIC_BOOST=Pojacanje mikrofona
SING_OPTIONS_ADVANCED_WHEREAMI=Opcije Ostalo
-SING_OPTIONS_ADVANCED_DESC=ostala podesavanja
-SING_OPTIONS_ADVANCED_EFFECTSING=Efekti Pevanja
-SING_OPTIONS_ADVANCED_SCREENFADE=Pomracenje Ekrana
-SING_OPTIONS_ADVANCED_LOADANIMATION=Animacija Ucitavanja
+SING_OPTIONS_ADVANCED_DESC=Ostala podesavanja
+SING_OPTIONS_ADVANCED_DEBUG=Dibagiranje
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=Osciloskop
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=Bezbednosna Pitanja
SING_OPTIONS_ADVANCED_LINEBONUS=Linijski Bonus
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=Posle Odabira Pesme
SING_OPTIONS_ADVANCED_PARTYPOPUP=Automatski Timski Meni
-SING_EDIT=editor
-SING_EDIT_MENU_DESCRIPTION=napravi svoje pesme
-
-;TODO: SING_EDIT_BUTTON_DESCRIPTION_CONVERT=Import text from midi file
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=nazad
-;TODO: SING_EDIT_BUTTON_CONVERT=Import
-SING_EDIT_BUTTON_EXIT=nazad
-
-SING_EDIT_NAVIGATE=biraj
-SING_EDIT_SELECT=izaberi
-SING_EDIT_EXIT=nazad
-
-SING_LEGEND_SELECT=izaberi
-SING_LEGEND_NAVIGATE=biraj
-SING_LEGEND_CONTINUE=nastavi
-SING_LEGEND_ESC=nazad
-
-SING_PLAYER_DESC=unesi ime igraca
-SING_PLAYER_WHEREAMI=Imenaigraca
-SING_PLAYER_ENTER_NAME=unesi ime
-
-SING_DIFFICULTY_DESC=izaberi tezinu
+SING_LEGEND_SELECT=Izaberi
+SING_LEGEND_NAVIGATE=Biraj
+SING_LEGEND_CONTINUE=Nastavi
+SING_LEGEND_ESC=Nazad
+
+SING_PLAYER_TITLE=Профили
+;TODO: SING_PLAYER_READY=Players ready to sing
+SING_PLAYER_COUNT=Број играча
+SING_PLAYER_EDIT=Прилагодите играч
+SING_PLAYER_NAME=Напишете своје име
+SING_PLAYER_COLOR=Изаберите боју
+SING_PLAYER_LEVEL=Изаберите ниво
+SING_PLAYER_AVATAR=Изаберите свој аватар
+
+SING_DIFFICULTY_DESC=Izaberi tezinu
SING_DIFFICULTY_WHEREAMI=Tezina
-SING_DIFFICULTY_CONTINUE=do odabira pesme
+SING_DIFFICULTY_CONTINUE=Do odabira pesme
SING_EASY=Lako
SING_MEDIUM=Normalno
SING_HARD=Tesko
-SING_SONG_SELECTION_DESC=izaberi svoju pesmu
+SING_SONG_SELECTION_DESC=Izaberi svoju pesmu
SING_SONG_SELECTION_WHEREAMI=Izbor Pesme
-SING_SONG_SELECTION_GOTO=idi na...
-SING_SONG_SELECTION=izbor pesme
-SING_SONG_SELECTION_MENU=meni
-SING_SONG_SELECTION_PLAYLIST=lista pesama
-SING_SONGS_IN_CAT=Pesme
+SING_SONG_SELECTION_GOTO=Idi na...
+SING_SONG_SELECTION=Izbor pesme
+SING_SONG_SELECTION_MENU=Meni
+SING_SONG_SELECTION_PLAYLIST=Lista pesama
+SING_SONG_IN_CAT=Сонг
+SING_SONGS_IN_CAT=Песме
PLAYLIST_CATTEXT=Playlist: %s
+SING_SONG_SELECTION_LEGEND_TITLE=Легенда
+SING_SONG_SELECTION_LEGEND_VIDEO=Видео
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+SING_SONG_SELECTION_LEGEND_DUET=Дует
-;TODO: SING_TIME=TIME
-SING_TOTAL=total
+SING_TOTAL=Total
SING_MODE=pevaj solo
-SING_NOTES=note
-SING_GOLDEN_NOTES=zlatne note
-SING_PHRASE_BONUS=linijski bonus
+SING_NOTES=Note
+SING_GOLDEN_NOTES=Zlatne note
+SING_PHRASE_BONUS=Linijski bonus
SING_MENU=Glavni Meni
-SONG_SCORE=rezultat pesme
+SONG_SCORE=Rezultat pesme
SONG_SCORE_WHEREAMI=Rezultat
SING_SCORE_TONE_DEAF=Antitalenat
@@ -235,27 +219,26 @@ SING_SCORE_LEAD_SINGER=Solista
SING_SCORE_SUPERSTAR=SuperZvezda
SING_SCORE_ULTRASTAR=UltraZvezda
-SING_TOP_5_CHARTS=najboljih 5 Igraca
-SING_TOP_5_CHARTS_WHEREAMI=najboljih pet
-SING_TOP_5_CHARTS_CONTINUE=do izbora pesme
+SING_TOP_5_CHARTS=Najboljih 5 Igraca
+SING_TOP_5_CHARTS_WHEREAMI=Najboljih pet
+SING_TOP_5_CHARTS_CONTINUE=Do izbora pesme
;TODO: SING_TOP_5_CHARTS_SWITCH_DIFFICULTY=Switch difficulty
-POPUP_PERFECT=savrseno!
-POPUP_AWESOME=odlicno!
-POPUP_GREAT=sjajno!
-POPUP_GOOD=dobro!
-POPUP_NOTBAD=nije lose!
-POPUP_BAD=lose!
-POPUP_POOR=jedno!
-POPUP_AWFUL=grozno!
+POPUP_PERFECT=Savrseno!
+POPUP_AWESOME=Odlicno!
+POPUP_GREAT=Sjajno!
+POPUP_GOOD=Dobro!
+POPUP_NOTBAD=Nije lose!
+POPUP_BAD=Lose!
+POPUP_POOR=Jedno!
+POPUP_AWFUL=Grozno!
IMPLODE_GLUE1=,
IMPLODE_GLUE2= i
-SONG_MENU_NAME_MAIN=meni pesme
+SONG_MENU_NAME_MAIN=Meni pesme
SONG_MENU_PLAY=Pevaj
SONG_MENU_CHANGEPLAYERS=Promeni Igrace
-SONG_MENU_EDIT=Edituj
SONG_MENU_MODI=Pevaj Modi
SONG_MENU_CANCEL=Nazad
@@ -264,8 +247,8 @@ SONG_MENU_PLAYLIST_ADD=Dodaj Pesmu
SONG_MENU_PLAYLIST_DEL=Obrisi Pesmu
SONG_MENU_NAME_PLAYLIST_ADD=Dodaj Pesmu
-SONG_MENU_PLAYLIST_ADD_NEW=na novu listu
-SONG_MENU_PLAYLIST_ADD_EXISTING=na postojecu listu
+SONG_MENU_PLAYLIST_ADD_NEW=Na novu listu
+SONG_MENU_PLAYLIST_ADD_EXISTING=Na postojecu listu
SONG_MENU_PLAYLIST_NOEXISTING=Nema dostupnih lista
SONG_MENU_NAME_PLAYLIST_NEW=Nova Lista
@@ -277,17 +260,17 @@ SONG_MENU_YES=Da
SONG_MENU_NO=Ne
SONG_MENU_NAME_PLAYLIST_LOAD=Otvori Listu
-SONG_MENU_PLAYLIST_LOAD=otvori
-SONG_MENU_PLAYLIST_DELCURRENT=obrisi Trenutnu Listu
+SONG_MENU_PLAYLIST_LOAD=Otvori
+SONG_MENU_PLAYLIST_DELCURRENT=Obrisi Trenutnu Listu
SONG_MENU_NAME_PLAYLIST_DEL=Obrisi listu?
SONG_MENU_NAME_PARTY_MAIN=Timski Meni
SONG_MENU_JOKER=Dzoker
-SONG_MENU_NAME_PARTY_JOKER=uzmi dzokera
+SONG_MENU_NAME_PARTY_JOKER=Uzmi dzokera
-SONG_JUMPTO_DESC=trazi pesmu
+SONG_JUMPTO_DESC=Trazi pesmu
SONG_JUMPTO_TYPE_DESC=Trazi:
SONG_JUMPTO_TYPE1=Sve
SONG_JUMPTO_TYPE2=Naziv
@@ -297,7 +280,7 @@ SONG_JUMPTO_NOSONGSFOUND=Nema nadjenih pesama
SONG_JUMPTO_HELP=Upisi tekst koji trazis
SONG_JUMPTO_CATTEXT=Search for: %s
-PARTY_MODE=timski mod
+PARTY_MODE=Timski mod
PARTY_DIFFICULTY=Tezina
PARTY_PLAYLIST=Mod Liste Pesama
PARTY_PLAYLIST_ALL=Sve Pesme
@@ -308,41 +291,41 @@ PARTY_TEAMS_PLAYER1=Igrac Tim1
PARTY_TEAMS_PLAYER2=Igrac Tim2
PARTY_TEAMS_PLAYER3=Igrac Tim3
-PARTY_LEGEND_CONTINUE=nastavi
+PARTY_LEGEND_CONTINUE=Nastavi
PARTY_OPTIONS_DESC=podesavanja za timsku igru
PARTY_OPTIONS_WHEREAMI=Timske Opcije
-PARTY_PLAYER_DESC=unesi imena igraca i timova!
+PARTY_PLAYER_DESC=Unesi imena igraca i timova!
PARTY_PLAYER_WHEREAMI=Imena Timova
-PARTY_PLAYER_ENTER_NAME=unesi imena
+PARTY_PLAYER_ENTER_NAME=Unesi imena
;TODO: PARTY_ROUNDS_DESC=Select which modes you want to play
;TODO: PARTY_ROUNDS_WHEREAMI=Party Rounds
-PARTY_ROUNDS_LEGEND_CONTINUE=zapocni timsku igru
-;TODO: PARTY_ROUNDCOUNT=Number of rounds
+PARTY_ROUNDS_LEGEND_CONTINUE=Zapocni timsku igru
+PARTY_ROUNDCOUNT=Број рунди
;TODO: PARTY_SELECTMODE=Round %d
-PARTY_ROUND_DESC=sledeci igraci za mikrofonom
+PARTY_ROUND_DESC=Sledeci igraci za mikrofonom
PARTY_ROUND_WHEREAMI=Timska Sledeca Runda
PARTY_ROUND_LEGEND_CONTINUE=pocni rundu
PARTY_SONG_WHEREAMI=Timski Izbor Pesama
PARTY_SONG_LEGEND_CONTINUE=povaj
-PARTY_SONG_MENU=timski meni
+PARTY_SONG_MENU=Timski meni
-PARTY_SCORE_DESC=rezultat poslednje runde
+PARTY_SCORE_DESC=Rezultat poslednje runde
PARTY_SCORE_WHEREAMI=Timski Poeni
PARTY_WIN_DESC=pobednik timske igre
PARTY_WIN_WHEREAMI=Timski Pobednik
-PARTY_WIN_LEGEND_CONTINUE=nazad u glavni meni
+PARTY_WIN_LEGEND_CONTINUE=Nazad u glavni meni
PARTY_ROUND=Runda
PARTY_ROUND_WINNER=Pobednik
-PARTY_NOTPLAYEDYET=nije jos igrao
-PARTY_NOBODY=niko
+PARTY_NOTPLAYEDYET=Nije jos igrao
+PARTY_NOBODY=Niko
NEXT_ROUND=Sledeca runda:
PARTY_DISMISSED=Otpusten!
@@ -358,22 +341,22 @@ MODE_HOLDTHELINE_NAME=Drzi liniju
;TODO: MODE_HOLDTHELINEBLIND_NAME=Hold the Blind
;TODO: MODE_HOLDTHELINEBLIND_DESC=Keep your rating above the line for the longest, but with the notes hidden!
-;TODO: MODE_7000POINTS_NAME=Until 7000
+MODE_7000POINTS_NAME=Све док 7000
;TODO: MODE_7000POINTS_DESC=Race to 7000 Points!
-;TODO: MODE_7000POINTSBLIND_NAME=Blind 7000
+MODE_7000POINTSBLIND_NAME=Слеп 7000
;TODO: MODE_7000POINTSBLIND_DESC=Race to 7000 points, but without seeing the notes!
MODE_5000POINTS_NAME=Do 5000
;TODO: MODE_5000POINTS_DESC=Race to 5000 Points!
-;TODO: MODE_5000POINTSBLIND_NAME=Blind 5000
+MODE_5000POINTSBLIND_NAME=Слеп 5000
;TODO: MODE_5000POINTSBLIND_DESC=Race to 5000 points, but without seeing the notes!
-;TODO: MODE_2000POINTS_NAME=Until 2000
+MODE_2000POINTS_NAME=Све док 2000
;TODO: MODE_2000POINTS_DESC=Race to 2000 Points!
-;TODO: MODE_2000POINTSBLIND_NAME=Blind 2000
+MODE_2000POINTSBLIND_NAME=Слеп 2000
;TODO: MODE_2000POINTSBLIND_DESC=Race to 2000 points, but without seeing the notes!
MODE_DUEL_NAME=Duel
@@ -388,16 +371,16 @@ MODE_BLIND_NAME=Slepi Mod
;TODO: MODE_BLINDTOTAL_NAME=Total Darkness!
;TODO: MODE_BLINDTOTAL_DESC=A duel, but with the notes and the lyrics hidden. Only for the brave!
-;TODO: MODE_1000BLIND_NAME = +1000 Blind
+MODE_1000BLIND_NAME = +1000 Слеп
;TODO: MODE_1000BLIND_DESC = Gain a lead of more than 1000 points, but without seeing the notes!
-;TODO: MODE_DEAF_NAME = Deaf
+MODE_DEAF_NAME = Глуви
;TODO: MODE_DEAF_DESC = Think you know the notes? Can you sing it without the acompaniment?
;TODO: MODE_BLINDLYRICS_NAME = No Lyrics
;TODO: MODE_BLINDLYRICS_DESC = Think you know all the lyrics? Sing with the lyrics hidden!
-;TODO: MODE_500BLIND_NAME = +500 Blind
+MODE_500BLIND_NAME = +500 Слеп
;TODO: MODE_500BLIND_DESC = Gain a lead of more than 500 points, but without seeing the notes!
;TODO: MODE_SHORTSONG_NAME = Short Song
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=Detalji Statistike
STAT_NEXT=Sledeca Strana
STAT_PREV=Prethodna Strana
STAT_REVERSE=Obrnuti Redosled
-STAT_PAGE=Seite %0:d of %1:d strana\n (%2:d od %3:d unosa)
+STAT_PAGE=Seite %0:d of %1:d strana \n %2:d od %3:d Unosa
STAT_DESC_SCORES=NajboljiRezultati
STAT_DESC_SCORES_REVERSED=NajgoriRezultati
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx Pevano
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=Greska
;TODO: MSG_INFO_TITLE=Information
@@ -465,20 +447,19 @@ ERROR_CORRUPT_SONG=Pesma se ne moze ucitati.
;TODO: ERROR_CORRUPT_SONG_NO_NOTES=Song could not be loaded: Can''t find any notes
;TODO: ERROR_CORRUPT_SONG_NO_BREAKS=Song could not be loaded: Can''t find any linebreaks
;TODO: ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=Song could not be loaded: Error parsing line %0:d
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+ERROR_PLAYER_DEVICE_ASSIGNMENT=Играч %d додељује се вишеструким микрофонима. Проверите опције микрофона
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Играч %d није додељен микрофону. Проверите опције микрофона
-;TODO: SING_OPTIONS_NETWORK=Internet
-;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
-;TODO: SING_OPTIONS_NETWORK_DESC=Internet General Settings
+SING_OPTIONS_NETWORK=Интернет
+SING_OPTIONS_NETWORK_WHEREAMI=Интернет опције
+SING_OPTIONS_NETWORK_DESC=Интернет опште поставке
;TODO: SING_OPTIONS_NETWORK_INSERT_USER_INFO=Press key "Insert" to add user to this web...
;TODO: SING_OPTIONS_NETWORK_WEBSITE=Website
-;TODO: SING_OPTIONS_NETWORK_USERNAME=Username
-;TODO: SING_OPTIONS_NETWORK_PASSWORD=Password
+SING_OPTIONS_NETWORK_USERNAME=Корисничко име
+SING_OPTIONS_NETWORK_PASSWORD=Лозинка
;TODO: SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME=Send Name
;TODO: SING_OPTIONS_NETWORK_AUTO_MODE=Auto
-;TODO: SING_OPTIONS_NETWORK_AUTO_PLAYER=Player
+SING_OPTIONS_NETWORK_AUTO_PLAYER=Играч
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_EASY=Auto-Send (Easy)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM=Auto-Send (Medium)
;TODO: SING_OPTIONS_NETWORK_AUTO_SCORE_HARD=Auto-Send (Hard)
@@ -487,18 +468,18 @@ ERROR_CORRUPT_SONG=Pesma se ne moze ucitati.
;TODO: SING_OPTIONS_NETWORK_LEGEND_INSERT=Insert
;TODO: SING_OPTIONS_NETWORK_LEGEND_DELETE=Delete
-;TODO: OPTION_PLAYER_1=Player 1
-;TODO: OPTION_PLAYER_2=Player 2
-;TODO: OPTION_PLAYER_3=Player 3
-;TODO: OPTION_PLAYER_4=Player 4
-;TODO: OPTION_PLAYER_5=Player 5
-;TODO: OPTION_PLAYER_6=Player 6
+OPTION_PLAYER_1=Играч 1
+OPTION_PLAYER_2=Играч 2
+OPTION_PLAYER_3=Играч 3
+OPTION_PLAYER_4=Играч 4
+OPTION_PLAYER_5=Играч 5
+OPTION_PLAYER_6=Играч 6
OPTION_ALL_PLAYERS=Sve
OPTION_ALL_SCORES=Sve
;TODO: OPTION_VALUE_SAVE=Save
;TODO: OPTION_VALUE_SEND=Send
-;TODO: MSG_INSERT_USER_TITLE=%0:s
+MSG_INSERT_USER_TITLE=%0:s
;TODO: MSG_INSERT_USER_DESC=Fill the fields:
;TODO: MSG_INSERT_USER_ADD=Add
MSG_INSERT_USER_CANCEL=Nazad
@@ -518,7 +499,7 @@ MSG_INSERT_USER_CANCEL=Nazad
;TODO: SONG_MENU_REFRESH_SCORES_TITLE=Update
;TODO: SONG_MENU_REFRESH_SCORES_NO_WEB=There aren't websites!
;TODO: SONG_MENU_REFRESH_SCORES_ONLINE=Online
-;TODO: SONG_MENU_REFRESH_SCORES_FILE=File
+SONG_MENU_REFRESH_SCORES_FILE=Филе
;TODO: SONG_MENU_REFRESH_SCORES_ALL_WEB=All Websites
;TODO: SONG_MENU_REFRESH_SCORES_ALL_SONGS=All Songs
;TODO: SONG_MENU_REFRESH_SCORES_ONLY_SONG=This Song
@@ -531,12 +512,12 @@ MSG_INSERT_USER_CANCEL=Nazad
;TODO: SCORE_SEND_DESC=Send Score
;TODO: SCORE_SEND=Send
-;TODO: SCORE_SEND_PLAYER=Player
+SCORE_SEND_PLAYER=Играч
;TODO: SCORE_SEND_OTHER_USER= Other Username
;TODO: SCORE_SAVE=Save
-;TODO: SCORE_DOWNLOAD_TITLE=Download
-;TODO: SCORE_DOWNLOAD_SONG=Song:
+SCORE_DOWNLOAD_TITLE=Преузимање
+SCORE_DOWNLOAD_SONG=Сонг:
;TODO: SCORE_DOWNLOAD_CREATE_LIST=Preparing List...
;TODO: SCORE_DOWNLOAD_RECEIVE_LIST=Downloading...
SCORE_DOWNLOAD_CANCEL=Nazad
@@ -547,12 +528,12 @@ SCORE_DOWNLOAD_CANCEL=Nazad
;TODO: OPTION_VALUE_WHEN_EXISTS=When Exists
;TODO: PARTY_SELECT_MODE=Mode
-;TODO: PARTY_MODE_CLASSIC=Classic
+PARTY_MODE_CLASSIC=Цлассиц
;TODO: PARTY_MODE_CLASSIC_FREE=Classic Free
;TODO: PARTY_MODE_CHALLENGE=Challenge
;TODO: PARTY_MODE_TOURNAMENT=Tournament
;TODO: PARTY_MODE_JUKEBOX=Jukebox
-;TODO: PARTY_MODE_NOT_AVAILABLE=Not Available!
+PARTY_MODE_NOT_AVAILABLE=Није доступно!
;TODO: PARTY_MODE_TOURNAMENT_PLAYER_DESC=Insert number and players name
;TODO: PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS=Number of Players
@@ -561,47 +542,17 @@ SCORE_DOWNLOAD_CANCEL=Nazad
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL=Semifinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL=Quarterfinals
;TODO: PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL=Round of 16
-PARTY_MODE_TOURNAMENT_ROUNDS_DESC=sledeci igraci za mikrofonom
+PARTY_MODE_TOURNAMENT_ROUNDS_DESC=Sledeci igraci za mikrofonom
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
;TODO: MSG_END_JUKEBOX=Do you want leave Jukebox Mode?
-;TODO: JUKEBOX_RANDOM=Random
-;TODO: JUKEBOX_REPEAT=Repeat
-;TODO: JUKEBOX_FIND=Find:
+JUKEBOX_RANDOM=Рандом
+JUKEBOX_REPEAT=Понављање
+JUKEBOX_FIND=пронаћи:
;TODO: JUKEBOX_SORT=Sort:
;TODO: JUKEBOX_SONGLIST=List of Songs
@@ -609,8 +560,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=sledeci igraci za mikrofonom
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=Meni Pesme
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -626,18 +575,19 @@ SONG_MENU_SORTING_ALL=Sve
;TODO: SONG_MENU_SORTING_DUET=Duets
;TODO: SONG_MENU_SORTING_APPLY=Apply
-;TODO: SING_OPTIONS_WEBCAM=Webcam
+SING_OPTIONS_WEBCAM=Вебцам
;TODO: SING_OPTIONS_WEBCAM_DESC=Webcam Settings
;TODO: SING_OPTIONS_WEBCAM_WHEREAMI=Webcam Options
-;TODO: SING_OPTIONS_WEBCAM_ID=Webcam
+SING_OPTIONS_WEBCAM_ID=Вебцам
SING_OPTIONS_WEBCAM_RESOLUTION=Rezolucija
;TODO: SING_OPTIONS_WEBCAM_FPS=FPS
;TODO: SING_OPTIONS_WEBCAM_NO_WEBCAM=No Webcam Found!
;TODO: SING_OPTIONS_WEBCAM_FLIP=Flip
SING_OPTIONS_WEBCAM_EFFECT=Efekti
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
-;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
+SING_OPTIONS_WEBCAM_SATURATION=Засићење
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -663,60 +613,60 @@ SING_OPTIONS_WEBCAM_EFFECT_THRESHOLD=Stepen Cujnosti
;TODO: WEBSITE_EXIST_SONG=The song belongs to the website: %0:s
;TODO: WEBSITE_NOT_EXIST_SONG=The song does not belong to any website!
-;TODO: NAME_PLAYERS_COUNT=Number of Players
-;TODO: NAME_CURRENT_PLAYER=Player
+NAME_PLAYERS_COUNT=Број играча
+NAME_CURRENT_PLAYER=Играч
SING_OPTIONS_GAME_SONGMENU=Meni Pesme
-;TODO: OPTION_VALUE_ROULETTE=Roulette
-;TODO: OPTION_VALUE_CHESSBOARD=Chessboard
-;TODO: OPTION_VALUE_CAROUSEL=Carousel
-;TODO: OPTION_VALUE_SLOT_MACHINE=Slot Machine
-;TODO: OPTION_VALUE_LIST=List
-;TODO: OPTION_VALUE_MOSAIC=Tile
+OPTION_VALUE_ROULETTE=Роулетте
+OPTION_VALUE_CHESSBOARD=Шаховска карта
+OPTION_VALUE_CAROUSEL=Цароусел
+OPTION_VALUE_SLOT_MACHINE=Аутомат за коцкање
+OPTION_VALUE_LIST=Листа
+OPTION_VALUE_MOSAIC=Плочица
;TODO: SING_OPTIONS_JUKEBOX=Jukebox
;TODO: SING_OPTIONS_JUKEBOX_DESC=Default Configurations of Jukebox
;TODO: SING_OPTIONS_JUKEBOX_WHEREAMI=Jukebox Options
OPTION_VALUE_TO_SING=pevaj
-;TODO: OPTION_VALUE_ACTUAL=Actual
-;TODO: OPTION_VALUE_NEXT=Next
+OPTION_VALUE_ACTUAL=горњи
+OPTION_VALUE_NEXT=Дно
;TODO: OPTION_VALUE_OTHER=Other
;TODO: OPTION_VALUE_FILL=Fill
;TODO: OPTION_VALUE_OUTLINE=Outline
-;TODO: OPTION_VALUE_GRAY=Gray
-;TODO: OPTION_VALUE_WHITE=White
-;TODO: OPTION_VALUE_TURQUOISE=Turquoise
-;TODO: OPTION_VALUE_SALMON=Salmon
-;TODO: OPTION_VALUE_GREENYELLOW=GreenYellow
-;TODO: OPTION_VALUE_LAVENDER=Lavender
-;TODO: OPTION_VALUE_BEIGE=Beige
-;TODO: OPTION_VALUE_TEAL=Teal
-;TODO: OPTION_VALUE_ORCHID=Orchid
-;TODO: OPTION_VALUE_STEELBLUE=Steel Blue
-;TODO: OPTION_VALUE_PLUM=Plum
-;TODO: OPTION_VALUE_CHOCOLATE=Chocolate
-;TODO: OPTION_VALUE_GOLD=Gold
-;TODO: OPTION_VALUE_DARKBLUE=Dark Blue
-;TODO: OPTION_VALUE_SKY=Sky
-;TODO: OPTION_VALUE_HARLEQUIN=Harlequin
-;TODO: OPTION_VALUE_CYAN=Cyan
-;TODO: OPTION_VALUE_FLAME=Flame
-
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO=Video Options
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Aspect
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Width
-;TODO: JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Height
+OPTION_VALUE_GRAY=Греи
+OPTION_VALUE_WHITE=бео
+OPTION_VALUE_TURQUOISE=Тиркизна
+OPTION_VALUE_SALMON=Лосос
+OPTION_VALUE_GREENYELLOW=Зелено жута
+OPTION_VALUE_LAVENDER=Лаванда
+OPTION_VALUE_BEIGE=Беж
+OPTION_VALUE_TEAL=Теал
+OPTION_VALUE_ORCHID=Орхидеја
+OPTION_VALUE_STEELBLUE=Стеел Блуе
+OPTION_VALUE_PLUM=Шљива
+OPTION_VALUE_CHOCOLATE=Чоколада
+OPTION_VALUE_GOLD=Злато
+OPTION_VALUE_DARKBLUE=Тамно плава
+OPTION_VALUE_SKY=Небо
+OPTION_VALUE_HARLEQUIN=Харлекин
+OPTION_VALUE_CYAN=Цијан
+OPTION_VALUE_FLAME=Пламен
+
+JUKEBOX_SONGOPTIONS_VIDEO=Видео опције
+JUKEBOX_SONGOPTIONS_VIDEO_ASPECT=Аспект
+JUKEBOX_SONGOPTIONS_VIDEO_WIDTH=Ширина
+JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT=Висина
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
+JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Величина
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Транспарентност
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Boja
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Red
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Green
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Blue
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED=Црвена
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN=Зелен
+JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE=Плави
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_STRETCH=Stretch
;TODO: JUKEBOX_SONGOPTIONS_VIDEO_CROP=Crop
@@ -733,18 +683,23 @@ JUKEBOX_SONGOPTIONS_LYRIC_COLOR=Boja
;TODO: JUKEBOX_MODE=Jukebox Mode
;TODO: JUKEBOX_OPTIONS_DESC=Playlist Options
;TODO: JUKEBOX_OPTIONS_WHEREAMI=Jukebox Options
-JUKEBOX_OPTIONS_PLAYLIST=lista pesama
+JUKEBOX_OPTIONS_PLAYLIST=Lista pesama
;TODO: JUKEBOX_OPTIONS_PLAYLIST_MODE=Mode
;TODO: SING_OPTIONS_ADVANCED_SINGSCORES=Scores on Singing
;TODO: SING_OPTIONS_ADVANCED_TOPSCORES=Top Scores
OPTION_VALUE_ALL=Sve
-;TODO: OPTION_VALUE_PLAYER=Player
-
-;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
-;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+OPTION_VALUE_PLAYER=Играч
+
+SING_ABOUT=О томе
+SING_ABOUT_DESC=О томе Ultrastar Deluxe WorldParty
+ABOUT_MAIN=О томе...
+ABOUT_USDX_DEVELOPEDBY=Развијен од стране
+ABOUT_CHECK_CHECKING=Провера нових исправки...
+ABOUT_CHECK_AVAILABLE=Постоји нова верзија доступна
+ABOUT_CHECK_UPTODATE=WorldParty је ажуриран
+ABOUT_CHECK_CONNECTION=Не постоји интернет веза
+ABOUT_OVERVIEW=Откријте нови начин певања, сами, у пару или са пријатељима. \n Забава је загарантована.\n\nWorldParty ВорлдПарти је fork оригиналне верзије Ultrastar Deluxe 1.1 дизајниран и развијен од стране тима Ultrastar España, рачуна се са највећом караоке заједницом.\n\n\nОвај програм је бесплатан и libre под ГПЛ лиценцом. \n\n Посетите нас за више информација.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=Развијен од стране
+DEVELOPERS_OVERVIEW=Људи који су допринели овом пројекту:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Посетите нас за више информација.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/\346\227\245\346\234\254\350\252\236.ini" "b/game/languages/\346\227\245\346\234\254\350\252\236.ini"
index ed7e0f7b..9aa6e237 100644
--- "a/game/languages/\346\227\245\346\234\254\350\252\236.ini"
+++ "b/game/languages/\346\227\245\346\234\254\350\252\236.ini"
@@ -5,8 +5,8 @@ OPTION_VALUE_EASY=簡単
OPTION_VALUE_MEDIUM=普通
OPTION_VALUE_HARD=難しい
-;TODO: OPTION_VALUE_ON=On
-;TODO: OPTION_VALUE_OFF=Off
+;TODO: OPTION_VALUE_ON=オン
+;TODO: OPTION_VALUE_OFF=オフ
;TODO: OPTION_VALUE_EDITION=Edition
;TODO: OPTION_VALUE_GENRE=Genre
@@ -40,9 +40,9 @@ OPTION_VALUE_PLAYLIST=曲順
;TODO: OPTION_VALUE_SEC=Second
;TODO: OPTION_VALUE_SECS=Seconds
-;TODO: OPTION_VALUE_PLAIN=Plain
-;TODO: OPTION_VALUE_OLINE1=OLine1
-;TODO: OPTION_VALUE_OLINE2=OLine2
+;TODO: OPTION_VALUE_PLAIN=stylized
+;TODO: OPTION_VALUE_OLINE1=with thin edge
+;TODO: OPTION_VALUE_OLINE2=with thick edge
;TODO: OPTION_VALUE_SIMPLE=Simple
;TODO: OPTION_VALUE_ZOOM=Zoom
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=歌う
;TODO: OPTION_VALUE_SELECT_PLAYERS=Select Players
;TODO: OPTION_VALUE_OPEN_MENU=Open Menu
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-;TODO: OPTION_VALUE_HARDWARE_CURSOR=Hardware Cursor
-;TODO: OPTION_VALUE_SOFTWARE_CURSOR=Software Cursor
-
SING_LOADING=ロード中
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
SING_CHOOSE_MODE=モード選択
SING_SING=歌う
@@ -87,9 +83,6 @@ SING_TOOLS=ツール
SING_STATS=統計
SING_STATS_DESC=統計表
-SING_EDITOR=エディター
-SING_EDITOR_DESC=自分でウルトラ・スターの曲を作る
-
SING_GAME_OPTIONS=ゲーム設定
SING_GAME_OPTIONS_DESC=ゲーム設定を変える
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=設定
SING_OPTIONS_GAME=ゲーム
SING_OPTIONS_GRAPHICS=グラフィックス
SING_OPTIONS_SOUND=音
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=歌詞
SING_OPTIONS_THEMES=テーマ
-SING_OPTIONS_RECORD=録音
+SING_OPTIONS_MICROPHONES=録音
SING_OPTIONS_ADVANCED=アドバンス
SING_OPTIONS_EXIT=戻る
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=面倒
SING_OPTIONS_GAME_LANGUAGE=言語
SING_OPTIONS_GAME_TABS=タッブ
SING_OPTIONS_GAME_SORTING=ソーティング
-SING_OPTIONS_GAME_DEBUG=ディバッグ
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=ゲームパッドを有効にする
SING_OPTIONS_GRAPHICS_WHEREAMI=グラフィックス
SING_OPTIONS_GRAPHICS_DESC=グラフィックスの設定
SING_OPTIONS_GRAPHICS_RESOLUTION=解像
SING_OPTIONS_GRAPHICS_FULLSCREEN=フルスクリーン
-SING_OPTIONS_GRAPHICS_DEPTH=ビット深度
+SING_OPTIONS_GRAPHICS_EFFECTSING=曲のエフェクト
+SING_OPTIONS_GRAPHICS_SCREENFADE=画面・フェーディング
+SING_OPTIONS_GRAPHICS_LOADANIMATION=ロード・アニメーション
SING_OPTIONS_GRAPHICS_VISUALIZER=可視化
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=オシロスコープ
SING_OPTIONS_GRAPHICS_LINEBONUS=ライン・ボーナス
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=動画サイズ
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=音設定
SING_OPTIONS_SOUND_DESC=音の設定
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=マイク再生
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=バックグラウンド・ミュージック
-SING_OPTIONS_SOUND_MIC_BOOST=マイク・ブースト
SING_OPTIONS_SOUND_CLICK_ASSIST=クリック・アシスト
SING_OPTIONS_SOUND_BEAT_CLICK=ビート・クリック
-SING_OPTIONS_SOUND_THRESHOLD=極限
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=二人で遊ぶ
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=音量・プリビュー
SING_OPTIONS_SOUND_PREVIEWFADING=フェーディング・プリビュー
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=歌詞設定
SING_OPTIONS_LYRICS_DESC=歌詞の設定
SING_OPTIONS_LYRICS_FONT=字形
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=テーマ
SING_OPTIONS_THEMES_SKIN=スキン
SING_OPTIONS_THEMES_COLOR=色
-SING_OPTIONS_RECORD_WHEREAMI=録音設定
-SING_OPTIONS_RECORD_DESC=マイク録音の設定
-SING_OPTIONS_RECORD_CARD=サウンドカード
-SING_OPTIONS_RECORD_INPUT=入力
-SING_OPTIONS_RECORD_CHANNEL=チャネル
+SING_OPTIONS_MICROPHONES_WHEREAMI=録音設定
+SING_OPTIONS_MICROPHONES_DESC=マイク録音の設定
+SING_OPTIONS_MICROPHONES_CARD=サウンドカード
+SING_OPTIONS_MICROPHONES_INPUT=入力
+SING_OPTIONS_MICROPHONES_CHANNEL=チャネル
+SING_OPTIONS_MICROPHONES_THRESHOLD=極限
+SING_OPTIONS_MICROPHONES_MIC_BOOST=マイク・ブースト
SING_OPTIONS_ADVANCED_WHEREAMI=アドバンス設定
SING_OPTIONS_ADVANCED_DESC=アドバンス設定
-SING_OPTIONS_ADVANCED_EFFECTSING=曲のエフェクト
-SING_OPTIONS_ADVANCED_SCREENFADE=画面・フェーディング
-SING_OPTIONS_ADVANCED_LOADANIMATION=ロード・アニメーション
+SING_OPTIONS_ADVANCED_DEBUG=ディバッグ
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=オシロスコープ
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=消す場合は確認
SING_OPTIONS_ADVANCED_LINEBONUS=ライン・ボーナス
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=歌った後は
SING_OPTIONS_ADVANCED_PARTYPOPUP=自動的にパーティー・メニューへ
-SING_EDIT=エディター
-SING_EDIT_MENU_DESCRIPTION=自分でウルトラ・スターの曲を作る
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=MIDIファイルからインポートする
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=戻る
-SING_EDIT_BUTTON_CONVERT=インポート
-SING_EDIT_BUTTON_EXIT=戻る
-
-SING_EDIT_NAVIGATE=ナビ
-SING_EDIT_SELECT=選ぶ
-SING_EDIT_EXIT=戻る
-
SING_LEGEND_SELECT=選ぶ
SING_LEGEND_NAVIGATE=ナビ
SING_LEGEND_CONTINUE=続く
SING_LEGEND_ESC=戻る
-SING_PLAYER_DESC=プレイヤー名記入
-SING_PLAYER_WHEREAMI=プレイヤー名
-SING_PLAYER_ENTER_NAME=名前記入
+;TODO: SING_PLAYER_TITLE=Profiles
+;TODO: SING_PLAYER_READY=Players ready to sing
+;TODO: SING_PLAYER_COUNT=Number of players
+;TODO: SING_PLAYER_EDIT=Customize a player
+;TODO: SING_PLAYER_NAME=Write your name
+;TODO: SING_PLAYER_COLOR=Pick a color
+;TODO: SING_PLAYER_LEVEL=Choose a level
+;TODO: SING_PLAYER_AVATAR=Select your avatar
SING_DIFFICULTY_DESC=面倒選択
SING_DIFFICULTY_WHEREAMI=面倒
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=曲へ…
SING_SONG_SELECTION=曲選択
SING_SONG_SELECTION_MENU=メニュー
SING_SONG_SELECTION_PLAYLIST=曲順
+;TODO: SING_SONG_IN_CAT=Song
SING_SONGS_IN_CAT=曲
PLAYLIST_CATTEXT=曲順: %s
+;TODO: SING_SONG_SELECTION_LEGEND_TITLE=Legend
+;TODO: SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+;TODO: SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=全部
SING_MODE=一人で歌う
SING_NOTES=音符
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= と
SONG_MENU_NAME_MAIN=曲メイン・メニュー
SONG_MENU_PLAY=歌う
SONG_MENU_CHANGEPLAYERS=プレイヤーを変える
-SONG_MENU_EDIT=エディター
SONG_MENU_MODI=モードを歌う
SONG_MENU_CANCEL=キャンセル
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=統計の詳しい事
STAT_NEXT=次ページ
STAT_PREV=先ページ
STAT_REVERSE=逆の順番
-STAT_PAGE= %1:d ページの %0:d 番目\n (%3:d エントリーの %2:d 番目)
+STAT_PAGE= %1:d ページの %0:d 番目 \n %3:d エントリーの %2:d 番目
STAT_DESC_SCORES=ハイスコア
STAT_DESC_SCORES_REVERSED=ロースコア
@@ -448,7 +431,6 @@ STAT_FORMAT_BANDS=%0:s \n %1:dx 回歌った
;TODO: ERROR_FILE_NOT_FOUND=File not found
;TODO: ENCODING_ERROR_ASK_FOR_UTF8=Cannot save changes in current encoding. Convert to UTF-8?
-;TODO: EDITOR_ERROR_NO_TRACK_SELECTED=No track selected
MSG_ERROR_TITLE=エラー
;TODO: MSG_INFO_TITLE=Information
@@ -465,9 +447,8 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=曲をロードできない: ファイルが
ERROR_CORRUPT_SONG_NO_NOTES=曲をロードできない: 音符が見つからない
ERROR_CORRUPT_SONG_NO_BREAKS=曲をロードできない: ライン・ブレークが見つからない
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=曲をロードできない: ライン %0:d の解析エラー
-;TODO: ERROR_NO_EDITOR=This feature is not available on this version.
-;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your record options
-;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your record options
+;TODO: ERROR_PLAYER_DEVICE_ASSIGNMENT=Player %d is assigned to multiple microphones. Please check your microphones options
+;TODO: ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=Player %d is not assigned to a microphone. Please check your microphones options
;TODO: SING_OPTIONS_NETWORK=Internet
;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=次のプレイヤーがマイクを
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-;TODO: INFO_FILE_SAVED=File saved
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=次のプレイヤーがマイクを
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=曲メニュー
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -638,6 +587,7 @@ SING_OPTIONS_WEBCAM_EFFECT=エフェクト
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -710,7 +660,7 @@ OPTION_VALUE_TO_SING=歌う
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=色
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -742,9 +692,14 @@ OPTION_VALUE_ALL=全部
;TODO: OPTION_VALUE_PLAYER=Player
;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
+;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_USDX_DEVELOPEDBY=によって開発された
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n 詳細は当社にお問い合わせください.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=によって開発された
+DEVELOPERS_OVERVIEW=このプロジェクトに貢献した人々:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n 詳細は当社にお問い合わせください.\n\nhttps://ultrastar-es.org
diff --git "a/game/languages/\346\231\256\351\200\232\350\257\235.ini" "b/game/languages/\346\231\256\351\200\232\350\257\235.ini"
index 934a4682..15b5240e 100644
--- "a/game/languages/\346\231\256\351\200\232\350\257\235.ini"
+++ "b/game/languages/\346\231\256\351\200\232\350\257\235.ini"
@@ -40,9 +40,9 @@ OPTION_VALUE_AUTO=自动
OPTION_VALUE_SEC=秒
OPTION_VALUE_SECS=秒
-OPTION_VALUE_PLAIN=空白
-OPTION_VALUE_OLINE1=OLine1
-OPTION_VALUE_OLINE2=OLine2
+;TODO: OPTION_VALUE_PLAIN=stylized
+;TODO: OPTION_VALUE_OLINE1=with thin edge
+;TODO: OPTION_VALUE_OLINE2=with thick edge
OPTION_VALUE_SIMPLE=简单
OPTION_VALUE_ZOOM=缩放
@@ -68,12 +68,8 @@ OPTION_VALUE_SING=K歌
OPTION_VALUE_SELECT_PLAYERS=选择玩家
OPTION_VALUE_OPEN_MENU=打开菜单
-;TODO: OPTION_VALUE_SYSTEM_CURSOR=On [System Cursor]
-;TODO: OPTION_VALUE_GAME_CURSOR=On [Game Cursor]
-OPTION_VALUE_HARDWARE_CURSOR=系统指针
-OPTION_VALUE_SOFTWARE_CURSOR=自带指针
-
SING_LOADING=载入……
+;TODO: SING_LOADING_SONGS=Loading songs from folder %s
SING_CHOOSE_MODE=选择模式
SING_SING=唱歌
@@ -87,9 +83,6 @@ SING_TOOLS=工具
SING_STATS=统计
SING_STATS_DESC=查看统计资料
-SING_EDITOR=编辑器
-SING_EDITOR_DESC=制作自己的歌曲
-
SING_GAME_OPTIONS=游戏选项
SING_GAME_OPTIONS_DESC=更改游戏设置
@@ -103,10 +96,9 @@ SING_OPTIONS_WHEREAMI=选项
SING_OPTIONS_GAME=游戏
SING_OPTIONS_GRAPHICS=画面
SING_OPTIONS_SOUND=声音
-;TODO: SING_OPTIONS_INPUT=Input
SING_OPTIONS_LYRICS=歌词
SING_OPTIONS_THEMES=主题
-SING_OPTIONS_RECORD=录音
+SING_OPTIONS_MICROPHONES=录音
SING_OPTIONS_ADVANCED=高级
SING_OPTIONS_EXIT=返回
@@ -117,15 +109,16 @@ SING_OPTIONS_GAME_DIFFICULTY=难度
SING_OPTIONS_GAME_LANGUAGE=语言
SING_OPTIONS_GAME_TABS=标签
SING_OPTIONS_GAME_SORTING=排列
-SING_OPTIONS_GAME_DEBUG=调试
+SING_OPTIONS_GAME_JOYPAD_SUPPORT=激活游戏手柄
SING_OPTIONS_GRAPHICS_WHEREAMI=画面选项
SING_OPTIONS_GRAPHICS_DESC=画面设置
SING_OPTIONS_GRAPHICS_RESOLUTION=分辨率
SING_OPTIONS_GRAPHICS_FULLSCREEN=全屏
-SING_OPTIONS_GRAPHICS_DEPTH=色深
+SING_OPTIONS_GRAPHICS_EFFECTSING=演唱效果
+SING_OPTIONS_GRAPHICS_SCREENFADE=画面渐变
+SING_OPTIONS_GRAPHICS_LOADANIMATION=载入动画
SING_OPTIONS_GRAPHICS_VISUALIZER=可视化
-SING_OPTIONS_GRAPHICS_OSCILLOSCOPE=示波器
SING_OPTIONS_GRAPHICS_LINEBONUS=加分线
SING_OPTIONS_GRAPHICS_MOVIE_SIZE=影片大小
@@ -133,20 +126,13 @@ SING_OPTIONS_SOUND_WHEREAMI=声音选项
SING_OPTIONS_SOUND_DESC=声音设置
SING_OPTIONS_SOUND_VOICEPASSTHROUGH=麦克风回放
SING_OPTIONS_SOUND_BACKGROUNDMUSIC=背景音乐
-SING_OPTIONS_SOUND_MIC_BOOST=麦克风增强
SING_OPTIONS_SOUND_CLICK_ASSIST=“卡嗒”助手
SING_OPTIONS_SOUND_BEAT_CLICK=节拍“卡嗒”
-SING_OPTIONS_SOUND_THRESHOLD=阈值
SING_OPTIONS_SOUND_TWO_PLAYERS_MODE=双人模式
;TODO: SING_OPTIONS_SOUND_MUSICAUTOGAIN=Music Gain
SING_OPTIONS_SOUND_PREVIEWVOLUME=预览音量
SING_OPTIONS_SOUND_PREVIEWFADING=预览渐变
-;TODO: SING_OPTIONS_INPUT_WHEREAMI=Options Input
-;TODO: SING_OPTIONS_INPUT_DESC=Input settings
-;TODO: SING_OPTIONS_INPUT_MOUSE=Mouse
-;TODO: SING_OPTIONS_INPUT_JOYPAD_SUPPORT=Controller support
-
SING_OPTIONS_LYRICS_WHEREAMI=歌词选项
SING_OPTIONS_LYRICS_DESC=歌词设置
SING_OPTIONS_LYRICS_FONT=字体
@@ -160,43 +146,36 @@ SING_OPTIONS_THEMES_THEME=主题
SING_OPTIONS_THEMES_SKIN=皮肤
SING_OPTIONS_THEMES_COLOR=颜色
-SING_OPTIONS_RECORD_WHEREAMI=录音选项
-SING_OPTIONS_RECORD_DESC=麦克风设置
-SING_OPTIONS_RECORD_CARD=声卡
-SING_OPTIONS_RECORD_INPUT=输入
-SING_OPTIONS_RECORD_CHANNEL=频道
+SING_OPTIONS_MICROPHONES_WHEREAMI=录音选项
+SING_OPTIONS_MICROPHONES_DESC=麦克风设置
+SING_OPTIONS_MICROPHONES_CARD=声卡
+SING_OPTIONS_MICROPHONES_INPUT=输入
+SING_OPTIONS_MICROPHONES_CHANNEL=频道
+SING_OPTIONS_MICROPHONES_THRESHOLD=阈值
+SING_OPTIONS_MICROPHONES_MIC_BOOST=麦克风增强
SING_OPTIONS_ADVANCED_WHEREAMI=高级选项
SING_OPTIONS_ADVANCED_DESC=高级设置
-SING_OPTIONS_ADVANCED_EFFECTSING=演唱效果
-SING_OPTIONS_ADVANCED_SCREENFADE=画面渐变
-SING_OPTIONS_ADVANCED_LOADANIMATION=载入动画
+SING_OPTIONS_ADVANCED_DEBUG=调试
+SING_OPTIONS_ADVANCED_OSCILLOSCOPE=示波器
SING_OPTIONS_ADVANCED_ASKBEFOREDEL=安全问题
SING_OPTIONS_ADVANCED_LINEBONUS=加分线
-;SING_OPTIONS_ADVANCED_COUNT_HOW_OFTEN_SUNG=
SING_OPTIONS_ADVANCED_ONSONGCLICK=选歌之后
SING_OPTIONS_ADVANCED_PARTYPOPUP=自动派对菜单
-SING_EDIT=编辑器
-SING_EDIT_MENU_DESCRIPTION=制作自己的歌曲
-
-SING_EDIT_BUTTON_DESCRIPTION_CONVERT=从midi文件导入文本
-SING_EDIT_BUTTON_DESCRIPTION_EXIT=返回
-SING_EDIT_BUTTON_CONVERT=导入
-SING_EDIT_BUTTON_EXIT=返回
-
-SING_EDIT_NAVIGATE=导航
-SING_EDIT_SELECT=选择
-SING_EDIT_EXIT=返回
-
SING_LEGEND_SELECT=选择
SING_LEGEND_NAVIGATE=导航
SING_LEGEND_CONTINUE=继续
SING_LEGEND_ESC=返回
-SING_PLAYER_DESC=输入玩家名
-SING_PLAYER_WHEREAMI=玩家名
-SING_PLAYER_ENTER_NAME=输入名字
+;TODO: SING_PLAYER_TITLE=Profiles
+;TODO: SING_PLAYER_READY=Players ready to sing
+;TODO: SING_PLAYER_COUNT=Number of players
+;TODO: SING_PLAYER_EDIT=Customize a player
+;TODO: SING_PLAYER_NAME=Write your name
+;TODO: SING_PLAYER_COLOR=Pick a color
+;TODO: SING_PLAYER_LEVEL=Choose a level
+;TODO: SING_PLAYER_AVATAR=Select your avatar
SING_DIFFICULTY_DESC=选择难度
SING_DIFFICULTY_WHEREAMI=难度
@@ -211,10 +190,15 @@ SING_SONG_SELECTION_GOTO=转到……
SING_SONG_SELECTION=歌曲选择
SING_SONG_SELECTION_MENU=菜单
SING_SONG_SELECTION_PLAYLIST=播放列表
+;TODO: SING_SONGS_IN_CAT=Song
SING_SONGS_IN_CAT=歌曲
PLAYLIST_CATTEXT=播放列表: %s
+;TODO: SING_SONG_SELECTION_LEGEND_TITLE=Legend
+;TODO: SING_SONG_SELECTION_LEGEND_VIDEO=Video
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEY=Medley
+;TODO: SING_SONG_SELECTION_LEGEND_MEDLEYC=Medley calculated
+;TODO: SING_SONG_SELECTION_LEGEND_DUET=Duet
-;TODO: SING_TIME=TIME
SING_TOTAL=全部
SING_MODE=独唱
SING_NOTES=音符
@@ -255,7 +239,6 @@ IMPLODE_GLUE2= 和
SONG_MENU_NAME_MAIN=歌曲菜单
SONG_MENU_PLAY=演唱
SONG_MENU_CHANGEPLAYERS=变更玩家
-SONG_MENU_EDIT=编辑
SONG_MENU_MODI=修正唱法
SONG_MENU_CANCEL=取消
@@ -422,7 +405,7 @@ STAT_DETAIL_WHEREAMI=统计详情
STAT_NEXT=下一页
STAT_PREV=前一页
STAT_REVERSE=倒序
-STAT_PAGE= %1:d 页中的第 %0:d 页\n ( %3:d 条目中的 %2:d )
+STAT_PAGE= %1:d 页中的第 %0:d 页 \n %3:d 条目中的 %2:d
STAT_DESC_SCORES=高分
STAT_DESC_SCORES_REVERSED=低分
@@ -448,7 +431,6 @@ ERROR_SAVE_FILE_FAILED=无法保存文件
ERROR_FILE_NOT_FOUND=文件未找到
ENCODING_ERROR_ASK_FOR_UTF8=以当前编码无法保存变更,是否转换为UTF-8?
-EDITOR_ERROR_NO_TRACK_SELECTED=无音轨选中
MSG_ERROR_TITLE=错误
MSG_INFO_TITLE=信息
@@ -465,9 +447,8 @@ ERROR_CORRUPT_SONG_FILE_NOT_FOUND=无法载入歌曲:文件未找到
ERROR_CORRUPT_SONG_NO_NOTES=无法载入歌曲:找不到任何注释
ERROR_CORRUPT_SONG_NO_BREAKS=无法载入歌曲:找不到任何分秆
ERROR_CORRUPT_SONG_UNKNOWN_IN_LINE=无法载入歌曲:行 %0:d 解析错误
-ERROR_NO_EDITOR=此特性在Linux/Mac上不可用
-ERROR_PLAYER_DEVICE_ASSIGNMENT=玩家 %d 被指定给多个麦克风,请检查您的录音选项
-ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=玩家 %d 没有指定麦克风,请检查您的录音选项
+ERROR_PLAYER_DEVICE_ASSIGNMENT=玩家 %d 被指定给多个麦克风,请检查您的麦克风选项
+ERROR_PLAYER_NO_DEVICE_ASSIGNMENT=玩家 %d 没有指定麦克风,请检查您的麦克风选项
;TODO: SING_OPTIONS_NETWORK=Internet
;TODO: SING_OPTIONS_NETWORK_WHEREAMI=Internet Options
@@ -565,36 +546,6 @@ PARTY_MODE_TOURNAMENT_ROUNDS_DESC=下位演唱歌手
;TODO: PARTY_MODE_TOURNAMENT_WIN_DESC=Round result
;TODO: PARTY_MODE_TOURNAMENT_CHAMPION=The champion is: %0:s!
-;TODO: EDIT_TITLE=Title:
-;TODO: EDIT_ARTIST=Artist:
-;TODO: EDIT_MP3=MP3:
-;TODO: EDIT_BPM=BPM:
-;TODO: EDIT_GAP=GAP:
-;TODO: EDIT_COVER=Cover:
-;TODO: EDIT_BACKGROUND=Background:
-
-;TODO: EDIT_START=Start:
-;TODO: EDIT_DURATION=Duration:
-;TODO: EDIT_TONE=Tone:
-;TODO: EDIT_LYRIC=Lyric:
-;TODO: EDIT_VIDEOGAP=Video Gap:
-;TODO: EDIT_VOLUME_AUDIO=Audio Volume:
-;TODO: EDIT_VOLUME_MIDI=Midi Volume:
-;TODO: EDIT_VOLUME_CLICK=Click Volume:
-;TODO: INFO_UNDO=Undo last operation
-
-INFO_FILE_SAVED=文件已保存
-;TODO: INFO_TIME_FIXED=Timings corrected
-;TODO: INFO_CAPITALIZE=Capitalization corrected
-;TODO: INFO_EXIT=Do you want leave editor without save ?
-;TODO: INFO_SONG_RELOADED=Song reloaded
-;TODO: INFO_DIVIDED_BPM=BPM Divided
-;TODO: INFO_MULTIPLIED_BPM=BPM Multiplied
-;TODO: INFO_PLAY_SONG=Play song
-;TODO: INFO_PLAY_SENTENCE=Play sentence
-;TODO: INFO_CURRENT_LINE=Line:
-;TODO: INFO_CURRENT_NOTE=Note:
-
;TODO: INFO_MIDI_CHANNEL_OFF= Channel %0:s off!
;TODO: INFO_MIDI_CHANNEL_RESET= All channel's on!
@@ -609,8 +560,6 @@ INFO_FILE_SAVED=文件已保存
;TODO: SONG_MENU_SONG=Song
;TODO: SONG_MENU_MEDLEY=Medley
-;TODO: SONG_MENU_SORTING=Sort
-;TODO: SONG_MENU_EXTRA=Extra
SONG_MENU_NAME_SONG=歌曲菜单
;TODO: SONG_MENU_NAME_MEDLEY=Medley Menu
@@ -638,6 +587,7 @@ SING_OPTIONS_WEBCAM_EFFECT=效果
;TODO: SING_OPTIONS_WEBCAM_BRIGHTNESS=Brightness
;TODO: SING_OPTIONS_WEBCAM_SATURATION=Saturation
;TODO: SING_OPTIONS_WEBCAM_HUE=Hue
+;TODO: SING_OPTIONS_WEBCAM_PREVIEW=Activate preview
;TODO: SING_OPTIONS_WEBCAM_ENABLE_PREVIEW=Enable Preview
;TODO: SING_OPTIONS_WEBCAM_DISABLE_PREVIEW=Disable Preview
@@ -710,7 +660,7 @@ OPTION_VALUE_TO_SING=演唱
;TODO: JUKEBOX_SONGOPTIONS_LYRIC=Lyric Options
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_SIZE=Size
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_POSITION=Position
-;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Alpha
+;TODO: JUKEBOX_SONGOPTIONS_LYRIC_ALPHA=Transparency
JUKEBOX_SONGOPTIONS_LYRIC_COLOR=颜色
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_LINE=Line
;TODO: JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY=Property
@@ -742,9 +692,14 @@ OPTION_VALUE_ALL=所有
;TODO: OPTION_VALUE_PLAYER=Player
;TODO: SING_ABOUT=About
-;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe
+;TODO: SING_ABOUT_DESC=About Ultrastar Deluxe WorldParty
;TODO: ABOUT_MAIN=About...
-;TODO: ABOUT_MAIN_DESC=Ultrastar Deluxe
-;TODO: ABOUT_MAIN_WHEREAMI=About...
-;TODO: ABOUT_USDX_CREDITS=Credits
-;TODO: ABOUT_OVERVIEW=UltraStar Deluxe is a free OpenSource karaoke game for your PC. The gameplay experience is similar to that of the commercial product SingStar™ by Sony Computer Entertainment, which is exclusively available for the Playstation®. Unlike SingStar™, however, UltraStar Deluxe allows users to create their own songs and sing them on their PC.\nBy publishing the sourcecode, we’ve enabled you to customize the game completly to your heart’s content, desires and particular needs.\nEspecially you are allowed to modify the product as you wish.\n\nCreate your own themes or download content from the community, such as plugins, free songs or code patches for extended features.\nIn party mode it allows up to twelve players to sing along to your favorite music in order to score points, depending on the pitch of the voice and the rhythm of singing.
+ABOUT_USDX_DEVELOPEDBY=由开发
+;TODO: ABOUT_CHECK_CHECKING=Checking for new updates...
+;TODO: ABOUT_CHECK_AVAILABLE=There is a new version available
+;TODO: ABOUT_CHECK_UPTODATE=WorldParty is up to date
+;TODO: ABOUT_CHECK_CONNECTION=There is no Internet connection
+;TODO: ABOUT_OVERVIEW=Discover a new way of singing, alone, in couple, or with friends. \n Fun is guaranteed.\n\nWorldParty is a fork of the original version Ultrastar Deluxe 1.1 designed and developed by UltraStar España Team, it counts with the biggest karaoke community.\n\n\nThis program is free and libre under the GPL license. \n\n Visit us for more information.\n\nhttps://ultrastar-es.org
+
+DEVELOPERS_TITLE=由开发
+;TODO: DEVELOPERS_OVERVIEW=People who has contributed to this project:\n\n\nZup3r_vock\n\nDaniel20\n\njmfb\n\nTeLiX\n\n\n Visit us for more information.\n\nhttps://ultrastar-es.org
diff --git a/game/sounds/Common back.mp3 b/game/sounds/back sound.mp3
similarity index 100%
rename from game/sounds/Common back.mp3
rename to game/sounds/back sound.mp3
diff --git a/game/sounds/Common start.mp3 b/game/sounds/forward sound.mp3
similarity index 100%
rename from game/sounds/Common start.mp3
rename to game/sounds/forward sound.mp3
diff --git a/game/sounds/option sound.mp3 b/game/sounds/option sound.mp3
new file mode 100644
index 00000000..1400a2ad
Binary files /dev/null and b/game/sounds/option sound.mp3 differ
diff --git a/game/sounds/select music change music 50.mp3 b/game/sounds/select music change music 50.mp3
deleted file mode 100644
index ade19a70..00000000
Binary files a/game/sounds/select music change music 50.mp3 and /dev/null differ
diff --git a/game/themes/Fantasy.ini b/game/themes/Fantasy.ini
index 42f6cb59..a018a270 100644
--- a/game/themes/Fantasy.ini
+++ b/game/themes/Fantasy.ini
@@ -1,7 +1,7 @@
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
# themes and more... #
# #
@@ -39,6 +39,7 @@ Gold = 255 223 31
Silver = 223 223 223
Bronze = 205 127 50
Red = 255 0 0
+Magenta = 215 0 111
[Loading]
[LoadingBackground]
@@ -59,28 +60,6 @@ ReflectionSpacing = 13
[MainBackground]
Tex = MainBG
-[MainText1]
-X = 5
-Y = 15
-Color = White
-Font = 0
-Size = 15
-Align = 0
-Text = Ultrastar Deluxe WorldParty 17.3
-
-[MainText2]
-X = 5
-Y = 35
-Z = 0.5
-Color = White
-Font = 0
-Size = 15
-Align = 0
-Text = Release Candidate 1 - http://ultrastar-es.org
-Reflection = 0
-ReflectionSpacing = 13
-
-
[MainTextDescriptionLong]
X = 385
Y = 550
@@ -279,6 +258,15 @@ Align = 1
Text = SING_ABOUT
Color = White
+[MainProgressSongsText]
+X = 400
+Y = 557
+Color = White
+Font = 0
+Size = 18
+Align = 1
+Z = 1
+
[Name]
Texts = 2
@@ -286,24 +274,24 @@ Texts = 2
Tex = MainBG
#write your name
-[NameStatic1]
+[NameStatic1]
X = 30
Y = 400
W = 200
H = 35
Tex = MainBar
-Color =
+Color =
Type = Transparent
#choose avatar
-[NameStatic2]
-X = 30
-Y = 535
-W = 200
-H = 35
-Tex = MainBar
-Color =
-Type = Transparent
+#[NameStatic2]
+#X = 30
+#Y = 535
+#W = 200
+#H = 35
+#Tex = MainBar
+#Color =
+#Type = Transparent
[NameText1]
X = 30
@@ -322,7 +310,7 @@ Font = 1
Size = 26
Text = SING_PLAYER_READY
-[NameText3]
+[NameText3]
X = 50
Y = 350
Color = White
@@ -331,7 +319,7 @@ Size = 26
Align = 0
Text = SING_PLAYER_EDIT
-[NameText4]
+[NameText4]
X = 50
Y = 405
Color = White
@@ -340,14 +328,14 @@ Size = 22
Align = 0
Text = SING_PLAYER_NAME
-[NameText5]
-X = 50
-Y = 540
-Color = White
-Font = 0
-Size = 22
-Align = 0
-Text = SING_PLAYER_AVATAR
+#[NameText5]
+#X = 50
+#Y = 540
+#Color = White
+#Font = 0
+#Size = 22
+#Align = 0
+#Text = SING_PLAYER_AVATAR
[NameSelectPlayerCount]
Text = SING_PLAYER_COUNT
@@ -364,386 +352,212 @@ SkipX = 30
SBGW = 160
Align = 0
TextSize = 22
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
STDColor = GrayDark
[NamePlayerSelectStatic1]
-X = 102
-Y = 128
-W = 68
-H = 80
+X = 101
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P1Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic1Text]
-X = 135
-Y = 209
+X = 133
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Z = 1
[NamePlayerSelectStatic1Avatar]
-X = 110
-Y = 135
-W = 52
-H = 65
+X = 108
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P1
Type = Transparent
[NamePlayerSelectStatic2]
X = 202
-Y = 128
-W = 68
-H = 80
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P2Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic2Text]
-X = 241
-Y = 209
+X = 235
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Text = P2
Z = 1
[NamePlayerSelectStatic2Avatar]
-X = 210
-Y = 135
-W = 52
-H = 65
+X = 209
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P2
Type = Transparent
[NamePlayerSelectStatic3]
X = 312
-Y = 128
-W = 68
-H = 80
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P3Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic3Text]
-X = 347
-Y = 209
+X = 344
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Text = P3
Z = 1
[NamePlayerSelectStatic3Avatar]
-X = 320
-Y = 135
-W = 52
-H = 65
+X = 319
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P3
Type = Transparent
[NamePlayerSelectStatic4]
X = 418
-Y = 128
-W = 68
-H = 80
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P4Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic4Text]
-X = 453
-Y = 209
+X = 451
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Text = P4
Z = 1
[NamePlayerSelectStatic4Avatar]
-X = 426
-Y = 135
-W = 52
-H = 65
+X = 425
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P4
Type = Transparent
[NamePlayerSelectStatic5]
X = 524
-Y = 128
-W = 68
-H = 80
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P5Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic5Text]
-X = 559
-Y = 209
+X = 557
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Text = P5
Z = 1
[NamePlayerSelectStatic5Avatar]
-X = 532
-Y = 135
-W = 52
-H = 65
+X = 531
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P5
Type = Transparent
[NamePlayerSelectStatic6]
X = 630
-Y = 128
-W = 68
-H = 80
+Y = 120
+W = 66
+H = 88
Tex = AvatarFrame2
Color = P6Dark
Type = Colorized
Z = 1
[NamePlayerSelectStatic6Text]
-X = 665
-Y = 209
+X = 662
+Y = 211
Font = 1
-Size = 17
+Size = 16
Align = 1
Color = White
Text = P6
Z = 1
[NamePlayerSelectStatic6Avatar]
-X = 638
-Y = 135
-W = 52
-H = 65
+X = 637
+Y = 127
+W = 51
+H = 72
Z = 1
Tex = NoAvatar_P6
Type = Transparent
-[NamePlayerSelectStatic7]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic7Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic7Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P7
-Type = Transparent
-
-[NamePlayerSelectStatic8]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic8Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic8Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P8
-Type = Transparent
-
-[NamePlayerSelectStatic9]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic9Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic9Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P9
-Type = Transparent
-
-[NamePlayerSelectStatic10]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic10Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic10Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P10
-Type = Transparent
-
-[NamePlayerSelectStatic11]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic11Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic11Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P11
-Type = Transparent
-
-[NamePlayerSelectStatic12]
-X = 830
-Y = 128
-W = 68
-H = 80
-Tex = AvatarFrame2
-Color = P6Dark
-Type = Colorized
-Z = 1
-
-[NamePlayerSelectStatic12Text]
-X = 865
-Y = 209
-Font = 1
-Size = 17
-Align = 1
-Color = White
-Text = P6
-Z = 1
-
-[NamePlayerSelectStatic12Avatar]
-X = 838
-Y = 135
-W = 52
-H = 65
-Z = 1
-Tex = NoAvatar_P12
-Type = Transparent
-
[NamePlayerSelectCurrent]
-X = -12
+X = 0
Y = 120
-W = 95
-H = 120
+W = 67
+H = 130
Z = 0.95
Tex = SelectFrame
Color = ColorDark
-DColor = ColorLight
+DColor = White
Type = Transparent
[NamePlayerAvatar]
X = 560
-Y = 420
-W = 70
+Y = 421
+W = 67
H = 90
Reflection = 0
[NamePlayerButtonAvatar]
X = 541
-Y = 405
-W = 111
-H = 122
+Y = 403
+W = 107
+H = 124
Tex = AvatarFrame
Color = ColorDark
DColor = ColorLight
@@ -787,8 +601,8 @@ Size=5
SkipX = 30
SBGW = 160
TextSize = 22
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
SBGDColor = PlayerDark
@@ -811,8 +625,8 @@ Size=5
SkipX = 30
SBGW = 160
TextSize = 22
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
SBGDColor = PlayerDark
@@ -887,7 +701,7 @@ Text = SONG_MENU_PLAY
# in some song menus
[SongMenuSelectSlide1]
TexSBG = Rectangle
-Text =
+Text =
TypeSBG = Colorized
ShowArrows = 1
OneItemOnly = 1
@@ -932,7 +746,7 @@ Z = 0.97
# in some song menus
[SongMenuSelectSlide2]
TexSBG = Rectangle
-Text =
+Text =
TypeSBG = Colorized
ShowArrows = 1
OneItemOnly = 1
@@ -979,7 +793,7 @@ Z = 0.97
# in some song menus
[SongMenuSelectSlide3]
TexSBG = Rectangle
-Text =
+Text =
TypeSBG = Colorized
ShowArrows = 1
OneItemOnly = 1
@@ -2007,7 +1821,7 @@ Tex = SongDuetSinger2
[SongMosaicStatic2PlayersDuetSingerP1]
X = 565
-Y = 435
+Y = 135
W = 154
H = 30
Z = 0.95
@@ -2017,7 +1831,7 @@ Tex = SongDuetSinger
[SongMosaicText2PlayersDuetSingerP1]
X = 642
-Y = 440
+Y = 140
Font = 0
Size = 20
Align = 1
@@ -2025,7 +1839,7 @@ Color = White
[SongMosaicStatic2PlayersDuetSingerP2]
X = 565
-Y = 465
+Y = 165
W = 154
H = 30
Z = 0.95
@@ -2037,7 +1851,7 @@ ReflectionSpacing = 1
[SongMosaicText2PlayersDuetSingerP2]
X = 642
-Y = 470
+Y = 170
Font = 0
Size = 20
Align = 1
@@ -2045,7 +1859,7 @@ Color = White
[SongMosaicStatic3PlayersDuetSingerP1]
X = 565
-Y = 420
+Y = 120
W = 154
H = 30
Z = 0.95
@@ -2055,7 +1869,7 @@ Tex = SongDuetSinger
[SongMosaicText3PlayersDuetSingerP1]
X = 642
-Y = 425
+Y = 125
Font = 0
Size = 20
Align = 1
@@ -2063,7 +1877,7 @@ Color = White
[SongMosaicStatic3PlayersDuetSingerP2]
X = 565
-Y = 450
+Y = 150
W = 154
H = 30
Z = 0.95
@@ -2075,7 +1889,7 @@ ReflectionSpacing = 1
[SongMosaicText3PlayersDuetSingerP2]
X = 642
-Y = 455
+Y = 155
Font = 0
Size = 20
Align = 1
@@ -2083,7 +1897,7 @@ Color = White
[SongMosaicStatic3PlayersDuetSingerP3]
X = 565
-Y = 480
+Y = 180
W = 154
H = 30
Z = 0.95
@@ -2095,7 +1909,7 @@ ReflectionSpacing = 1
[SongMosaicText3PlayersDuetSingerP3]
X = 642
-Y = 485
+Y = 185
Font = 0
Size = 20
Align = 1
@@ -2103,7 +1917,7 @@ Color = White
[SongMosaicStatic4PlayersDuetSingerP3]
X = 575
-Y = 435
+Y = 135
W = 154
H = 30
Z = 0.95
@@ -2113,7 +1927,7 @@ Tex = SongDuetSinger
[SongMosaicStatic4PlayersDuetSingerP4]
X = 575
-Y = 465
+Y = 165
W = 154
H = 30
Z = 0.95
@@ -2123,7 +1937,7 @@ Tex = SongDuetSinger2
[SongMosaicStatic6PlayersDuetSingerP4]
X = 575
-Y = 420
+Y = 120
W = 154
H = 30
Z = 0.95
@@ -2133,7 +1947,7 @@ Tex = SongDuetSinger
[SongMosaicStatic6PlayersDuetSingerP5]
X = 575
-Y = 450
+Y = 150
W = 154
H = 30
Z = 0.95
@@ -2143,7 +1957,7 @@ Tex = SongDuetSinger3
[SongMosaicStatic6PlayersDuetSingerP6]
X = 575
-Y = 480
+Y = 180
W = 154
H = 30
Z = 0.95
@@ -2191,7 +2005,7 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_medley
Type = Transparent
@@ -2203,7 +2017,7 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_calcmedley
Type = Transparent
@@ -2215,7 +2029,7 @@ X = 310
Y = 475
W = 18
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_video
Type = Transparent
@@ -2224,20 +2038,32 @@ ReflectionSpacing = 22
[SongRouletteDuetIcon]
X = 335
-Y = 465
+Y = 475
W = 20
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_duet
Type = Transparent
Reflection = 0
ReflectionSpacing = 22
-[SongRouletteStatic1]
-X = 278
-Y = 100
-W = 244
+[SongRouletteRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteStatic1]
+X = 278
+Y = 100
+W = 244
H = 200
Z = 0.95
Color = ColorLight
@@ -2277,11 +2103,11 @@ Align = 1
Text =
[SongRouletteTextNumber]
-X = 492
-Y = 477
+X = 495
+Y = 480
Z = 0.95
Color = White
-Size = 18
+Size = 16
Align = 2
Reflection = 0
ReflectionSpacing = 21
@@ -2299,6 +2125,7 @@ Align = 1
[SongRouletteStaticNonParty1]
X = 527
Y = 405
+Z = 0.95
W = 163
H = 107
Z = 0
@@ -2319,6 +2146,7 @@ Text = SING_SONG_SELECTION_LEGEND_TITLE
[SongRouletteStaticNonParty2]
X = 541
Y = 430
+Z = 1
W = 15
H = 20
Tex = icon_song_video
@@ -2339,6 +2167,7 @@ Text = SING_SONG_SELECTION_LEGEND_VIDEO
[SongRouletteStaticNonParty3]
X = 540
Y = 450
+Z = 0.952
W = 26
H = 16
Tex = icon_song_medley
@@ -2358,6 +2187,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEY
[SongRouletteStaticNonParty4]
X = 540
Y = 470
+Z = 0.952
W = 26
H = 16
Tex = icon_song_calcmedley
@@ -2378,6 +2208,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
[SongRouletteStaticNonParty5]
X = 540
Y = 490
+Z = 0.952
W = 13
H = 17
Tex = icon_song_duet
@@ -2873,7 +2704,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -3100,6 +2931,18 @@ Type = Transparent
Reflection = 0
ReflectionSpacing = 22
+[SongChessboardRapIcon]
+X = 123
+Y = 430
+W = 18
+H = 24
+Z = 0.95
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
[SongChessboardStatic3]
X = 10
Y = 270
@@ -3152,7 +2995,7 @@ Size = 18
Align = 1
-#################
+#################
#### Legend ####
#################
@@ -3725,7 +3568,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -3735,7 +3578,7 @@ N = 2
[SongChessboardTextMedleyNumber1]
X=215
-Y=485
+Y=485
Color=White
Font=1
Size=20
@@ -3840,7 +3683,7 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_medley
Type = Transparent
@@ -3852,7 +3695,7 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_calcmedley
Type = Transparent
@@ -3864,7 +3707,7 @@ X = 310
Y = 475
W = 18
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_video
Type = Transparent
@@ -3876,13 +3719,25 @@ X = 335
Y = 475
W = 20
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_duet
Type = Transparent
Reflection = 0
ReflectionSpacing = 22
+[SongCarouselRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
[SongCarouselStatic1]
X = 278
Y = 120
@@ -3926,11 +3781,11 @@ Align = 1
Text =
[SongCarouselTextNumber]
-X = 492
-Y = 477
+X = 495
+Y = 480
Z = 0.95
Color = White
-Size = 18
+Size = 16
Align = 2
Reflection = 0
ReflectionSpacing = 21
@@ -3948,6 +3803,7 @@ Align = 1
[SongCarouselStaticNonParty3]
X = 582
Y = 405
+Z = 0.95
W = 163
H = 107
Z = 0
@@ -3968,6 +3824,7 @@ Text = SING_SONG_SELECTION_LEGEND_TITLE
[SongCarouselStaticNonParty4]
X = 596
Y = 430
+Z = 0.952
W = 15
H = 20
Tex = icon_song_video
@@ -3988,6 +3845,7 @@ Text = SING_SONG_SELECTION_LEGEND_VIDEO
[SongCarouselStaticNonParty5]
X = 595
Y = 450
+Z = 0.952
W = 26
H = 16
Tex = icon_song_medley
@@ -4007,6 +3865,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEY
[SongCarouselStaticNonParty6]
X = 595
Y = 470
+Z = 0.952
W = 26
H = 16
Tex = icon_song_calcmedley
@@ -4027,6 +3886,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
[SongCarouselStaticNonParty7]
X = 595
Y = 490
+Z = 0.952
W = 13
H = 17
Tex = icon_song_duet
@@ -4505,7 +4365,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -4658,7 +4518,7 @@ X = 315
Y = 352
W = 36
H = 26
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_calcmedley
Type = Transparent
@@ -4668,7 +4528,7 @@ X = 280
Y = 350
W = 26
H = 30
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_video
Type = Transparent
@@ -4678,11 +4538,21 @@ X = 315
Y = 350
W = 25
H = 30
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_duet
Type = Transparent
+[SongSlotMachineRapIcon]
+X = 357
+Y = 350
+W = 25
+H = 30
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+
[SongSlotMachineStatic1]
X = 260
Y = 190
@@ -4729,7 +4599,7 @@ Color = White
Size = 28
Align = 1
-########## LEGEND ROULETTE #########
+########## LEGEND SLOT MACHINE #########
[SongSlotMachineStaticNonParty1]
X = 555
@@ -5300,7 +5170,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -5447,7 +5317,7 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_medley
Type = Transparent
@@ -5459,18 +5329,19 @@ X = 335
Y = 477
W = 30
H = 20
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_calcmedley
Type = Transparent
Reflection = 0
ReflectionSpacing = 22
+
[SongSlideVideoIcon]
X = 310
Y = 475
W = 18
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_video
Type = Transparent
@@ -5482,13 +5353,25 @@ X = 335
Y = 475
W = 20
H = 24
-Z = 0.95
+Z = 0.952
Color = White
Tex = icon_song_duet
Type = Transparent
Reflection = 0
ReflectionSpacing = 22
+[SongSlideRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
[SongSlideStatic1]
X = 278
Y = 120
@@ -5532,11 +5415,11 @@ Align = 1
Text =
[SongSlideTextNumber]
-X = 492
-Y = 478
+X = 495
+Y = 480
Z = 0.95
Color = White
-Size = 18
+Size = 16
Align = 2
Reflection = 0
ReflectionSpacing = 21
@@ -5554,9 +5437,9 @@ Align = 1
[SongSlideStatic3]
X = 582
Y = 405
+Z = 0.95
W = 163
H = 107
-Z = 0
Tex = BGFade
Color = White
Type = Transparent
@@ -5574,6 +5457,7 @@ Text = SING_SONG_SELECTION_LEGEND_TITLE
[SongSlideStatic4]
X = 596
Y = 430
+Z = 0.952
W = 15
H = 20
Tex = icon_song_video
@@ -5594,6 +5478,7 @@ Text = SING_SONG_SELECTION_LEGEND_VIDEO
[SongSlideStatic5]
X = 595
Y = 450
+Z = 0.952
W = 26
H = 16
Tex = icon_song_medley
@@ -5613,6 +5498,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEY
[SongSlideStatic6]
X = 595
Y = 470
+Z = 0.952
W = 26
H = 16
Tex = icon_song_calcmedley
@@ -5633,6 +5519,7 @@ Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
[SongSlideStatic7]
X = 595
Y = 490
+Z = 0.952
W = 13
H = 17
Tex = icon_song_duet
@@ -5649,7 +5536,7 @@ Size = 12
Align = 0
Text = SING_SONG_SELECTION_LEGEND_DUET
-#[SongCarouselTextScore]
+#[SongSlideTextScore]
#X = 530
#Y = 420
#Color = ColorLight
@@ -5846,7 +5733,7 @@ Type = Transparent
X = 300
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -5869,7 +5756,7 @@ Type = Transparent
X = 426
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -5890,7 +5777,7 @@ Type = Transparent
[SongSlideTextParty5]
X = 570
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -5913,7 +5800,7 @@ Text = PARTY_MODE
[SongSlideTextParty2]
X = 238
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 2
@@ -6159,7 +6046,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -6372,6 +6259,17 @@ Tex = icon_song_duet
Type = Transparent
Reflection = 0
+[SongListRapIcon]
+X = 467
+Y = 100
+W = 18
+H = 22
+Z = 1
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+
[SongListTextArtist]
X = 115
Y = 100
@@ -6708,7 +6606,7 @@ Type = Transparent
X = 300
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -6731,7 +6629,7 @@ Type = Transparent
X = 426
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -6752,7 +6650,7 @@ Type = Transparent
[SongListTextParty5]
X = 570
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -6775,7 +6673,7 @@ Text = PARTY_MODE
[SongListTextParty2]
X = 238
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 2
@@ -7021,7 +6919,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -7031,7 +6929,7 @@ N = 3
[SongListTextMedleyNumber1]
X=543
-Y=100
+Y=100
Color=White
Font=1
Size=18
@@ -7166,7 +7064,7 @@ Y = 500
PieceW = 5
PieceH = 5
Space = 1
-Bands = 4
+Bands = 4
Length = 18
Reflection = 1
ReflectionSpacing = 2
@@ -7209,7 +7107,7 @@ ReflectionSpacing = 0
[SongMosaicDuetIcon]
X = 500
-Y = 432
+Y = 428
W = 22
H = 24
Z = 1
@@ -7219,6 +7117,18 @@ Type = Transparent
Reflection = 0
ReflectionSpacing = 0
+[SongMosaicRapIcon]
+X = 500
+Y = 465
+W = 20
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
[SongMosaicStatic1]
X = 180
Y = 370
@@ -7226,7 +7136,7 @@ W = 355
H = 132
Z = 0.9
Color = ColorLight
-Tex = JukeboxSongListBackground
+Tex = JukeboxSongSelection
Type = Colorized
Reflection = 1
ReflectionSpacing = 2
@@ -7567,7 +7477,7 @@ Type = Transparent
X = 300
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -7590,7 +7500,7 @@ Type = Transparent
X = 426
Y = 548
Z = 0.952
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -7611,7 +7521,7 @@ Type = Transparent
[SongMosaicTextParty5]
X = 570
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -7634,7 +7544,7 @@ Text = PARTY_MODE
[SongMosaicTextParty2]
X = 238
Y = 548
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 2
@@ -7880,7 +7790,7 @@ Size = 20
Align = 1
#############################
-## ##
+## ##
## Medley Playlist ##
## ##
#############################
@@ -7890,7 +7800,7 @@ N = 4
[SongMosaicTextMedleyNumber1]
X=548
-Y=111
+Y=111
Color=White
Font=1
Size=20
@@ -8021,609 +7931,63 @@ H = 30
Color = ColorDark
Type = Colorized
-#############################
-# #
-# Edit #
-# #
-#############################
+##########################################
+######### S I N G S C R E E N ##########
+##########################################
-[EditSub]
-[EditSubBackground]
-Tex = EditSubBG
+[Sing]
+Texts = 1
-[EditSubTitle]
-X = 30
-Y = 60
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_TITLE
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 350
-Align = 0
+[SingBackground]
+Type=color
+ColR=1
+ColB=1
+ColG=1
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
+[SingStatic1]
+;TextBG
+Tex = LyricBar
+X = 0
+Y = 482
+W = 800
+H = 98
+Color = ColorDark
+Type = Transparent
-[EditSubArtist]
-X = 30
-Y = 81
-W = 100
+[SingStatic2]
+;TimeBar
+Tex = TimeBar1
+X = 0
+Y = 580
+W = 800
H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_ARTIST
-Tex = MainBar
+Color = White
Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 350
-Align = 0
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
+[SingTimeProgress]
+X = 40
+Y = 587
+W = 679
+H = 6
+Color = White
-[EditSubMP3]
-X = 30
-Y = 102
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_MP3
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 350
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubSlideCover]
-X = 30
-Y = 123
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_COVER
-Tex = MainBar
-Type = Transparent
-TexSBG = SelectBG
-TypeSBG = Transparent
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 350
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubSlideBG]
-X = 30
-Y = 144
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_BACKGROUND
-Tex = MainBar
-Type = Transparent
-TexSBG = SelectBG
-TypeSBG = Transparent
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 350
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubBPM]
-X = 30
-Y = 165
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_BPM
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubGAP]
-X = 30
-Y = 186
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_GAP
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubStart]
-X = 30
-Y = 207
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_START
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubDuration]
-X = 30
-Y = 228
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_DURATION
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubTone]
-X = 30
-Y = 249
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_TONE
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubLyric]
-X = 30
-Y = 270
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_LYRIC
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 350
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubVideoGap]
-X = 510
-Y = 270
-W = 100
-H = 20
-SkipX = 10
-TextSize = 16
-Text = EDIT_VIDEOGAP
-Tex = MainBar
-Type = Transparent
-TexSBG = MainBar
-TypeSBG = Transparent
-ShowArrows = 0
-SBGW = 100
-Align = 0
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubSelectVolAudio]
-TexSBG = SelectBG
-Text = EDIT_VOLUME_AUDIO
-Type = Transparent
-TypeSBG = Transparent
-X = 580
-Y = 545
-W = 250
-H = 16
-TextSize = 14
-SkipX = -150
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 100
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubSelectVolMidi]
-TexSBG = SelectBG
-Text = EDIT_VOLUME_MIDI
-Type = Transparent
-TypeSBG = Transparent
-X = 580
-Y = 562
-W = 0
-H = 16
-TextSize = 14
-SkipX = 100
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 100
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubSelectVolClick]
-TexSBG = SelectBG
-Text = EDIT_VOLUME_CLICK
-Type = Transparent
-TypeSBG = Transparent
-X = 580
-Y = 579
-W = 0
-H = 16
-TextSize = 14
-SkipX = 100
-ShowArrows = 1
-OneItemOnly = 1
-SBGW = 100
-
-DColor = ColorDark
-Color = ColorLight
-TColor = White
-TDColor = White
-
-SBGDColor = ColorDark
-SBGColor = ColorLight
-STColor = White
-STDColor = GrayDark
-
-[EditSubBackgroundImage]
-X = 510
-Y = 60
-W = 250
-H = 205
-Z = 0.95
-Color = Red
-Tex = prevbackground
-Type = Transparent
-Reflection = 0
-ReflectionSpacing = 22
-
-[EditSubButtonCurrentLine]
-X = 20
-Y = 10
-Z = 0.97
-W = 110
-H = 20
-Size = 20
-Font = 1
-Align = 1
-Color = ColorLight
-DColor = ColorLight
-Tex = Leiste1
-Type = Colorized
-Texts = 1
-
-[EditSubButtonCurrentLineText1]
-X = 55
-Y = 2
-Color = White
-Font = 1
-Size = 18
-Align = 1
-
-[EditSubButtonCurrentNote]
-X = 140
-Y = 10
-Z = 0.97
-W = 110
-H = 20
-Size = 20
-Font = 1
-Align = 1
-Color = ColorLight
-DColor = ColorLight
-Tex = Leiste1
-Type = Colorized
-Texts = 1
-
-[EditSubButtonCurrentNoteText1]
-X = 55
-Y = 2
-Color = White
-Font = 1
-Size = 18
-Align = 1
-
-[EditSubBarStatic1]
-Tex = PlayOnly
-X = 350
-Y = 245
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic2]
-Tex = playwithnote
-X = 376
-Y = 245
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic3]
-Tex = playnote
-X = 402
-Y = 245
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic4]
-Tex = previousseq
-X = 363
-Y = 219
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic5]
-Tex = nextseq
-X = 389
-Y = 219
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic6]
-Tex = gold
-X = 440
-Y = 219
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic7]
-Tex = freestyle
-X = 440
-Y = 245
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-[EditSubBarStatic8]
-Tex = undo
-X = 320
-Y = 219
-W = 24
-H = 24
-Type = Transparent
-Color = ColorLight
-Reflection = 0
-ReflectionSpacing = 31
-
-##########################################
-######### S I N G S C R E E N ##########
-##########################################
-
-[Sing]
-Texts = 1
-
-[SingBackground]
-Type=color
-ColR=1
-ColB=1
-ColG=1
-
-[SingStatic1]
-;TextBG
-Tex = LyricBar
-X = 0
-Y = 482
-W = 800
-H = 98
-Color = ColorDark
-Type = Transparent
-
-[SingStatic2]
-;TimeBar
-Tex = TimeBar1
-X = 0
-Y = 580
-W = 800
-H = 20
-Color = White
-Type = Transparent
-
-[SingTimeProgress]
-X = 40
-Y = 587
-W = 679
-H = 6
-Color = White
-
-[SingTimeText]
-Text = SING_TIME
-X = 761
-Y = 582
-Font = 1
-Size = 18
-Color = White
-Align = 1
-
-[SingInfoMessageBG]
-Tex = SongMessage
-X = 250
-Y = 40
-W = 300
-H = 25
-Z = 0.98
-Color = GrayDark
+[SingTimeText]
+Text = SING_TIME
+X = 761
+Y = 582
+Font = 1
+Size = 18
+Color = White
+Align = 1
+
+[SingInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 40
+W = 300
+H = 25
+Z = 0.98
+Color = GrayDark
Type = Transparent
[SingInfoMessageText]
@@ -8697,11 +8061,11 @@ H = 8
[SingP1Avatar]
X = 15
-Y = 265
+Y = 266
W = 40
-H = 55
+H = 54
Z = 1
-Alpha = 0.6
+Alpha = 1
# T W O P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
#Player One
@@ -8709,7 +8073,7 @@ Alpha = 0.6
X = 18
Y = 82
W = 45
-H = 56
+H = 59
Tex = AvatarFrame2
Color = P1Dark
Type = Colorized
@@ -8752,7 +8116,7 @@ H = 8
X = 23
Y = 88
W = 35
-H = 44
+H = 47
Z = 1
Alpha = 1
@@ -8761,7 +8125,7 @@ Alpha = 1
X = 18
Y = 273
W = 45
-H = 56
+H = 59
Tex = AvatarFrame2
Color = P2Dark
Type = Colorized
@@ -8804,7 +8168,7 @@ H = 8
X = 23
Y = 279
W = 35
-H = 44
+H = 47
Z = 1
Alpha = 1
@@ -8814,7 +8178,7 @@ Alpha = 1
X = 16
Y = 57
W = 45
-H = 57
+H = 59
Z = 1
Tex = AvatarFrame2
Color = P1Dark
@@ -8822,7 +8186,7 @@ Type = Colorized
Alpha = 1
[SingP1ThreePText]
-#Text =
+#Text =
#X = 27
#Y = 66
#Font = 1
@@ -8858,7 +8222,7 @@ H = 8
X = 21
Y = 63
W = 35
-H = 45
+H = 47
Z = 1
Alpha = 1
@@ -8867,7 +8231,7 @@ Alpha = 1
X = 311
Y = 57
W = 45
-H = 57
+H = 59
Tex = AvatarFrame2
Color = P2Dark
Type = Colorized
@@ -8910,7 +8274,7 @@ H = 8
X = 316
Y = 63
W = 35
-H = 45
+H = 47
Z = 1
Alpha = 1
@@ -8919,7 +8283,7 @@ Alpha = 1
X = 611
Y = 57
W = 45
-H = 57
+H = 59
Tex = AvatarFrame2
Color = P3Dark
Type = Colorized
@@ -8962,7 +8326,7 @@ H = 8
X = 616
Y = 63
W = 35
-H = 45
+H = 47
Z = 1
Alpha = 1
@@ -8981,7 +8345,7 @@ X = 400
Y = 13
Font = 0
Size = 25
-Color = Black
+Color = White
Align = 1
@@ -8989,12 +8353,12 @@ Align = 1
#Player One
[SingP1FourPStatic]
X = 20
-Y = 55
+Y = 54
W = 40
-H = 50
+H = 54
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP1FourPText]
@@ -9034,19 +8398,19 @@ H = 8
X = 24
Y = 59
W = 32
-H = 42
+H = 43
Z = 1
Alpha = 1
#Player Two
[SingP2FourPStatic]
X = 220
-Y = 55
+Y = 54
W = 40
-H = 50
+H = 54
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP2FourPText]
@@ -9086,19 +8450,19 @@ H = 8
X = 224
Y = 59
W = 32
-H = 42
+H = 43
Z = 1
Alpha = 1
#Player Three
[SingP3FourPStatic]
X = 420
-Y = 55
+Y = 54
W = 40
-H = 50
+H = 54
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP3FourPText]
@@ -9138,19 +8502,19 @@ H = 8
X = 424
Y = 59
W = 32
-H = 42
+H = 43
Z = 1
Alpha = 1
#Player Four
[SingP4FourPStatic]
X = 620
-Y = 55
+Y = 54
W = 40
-H = 50
+H = 54
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP4FourPText]
@@ -9190,20 +8554,20 @@ H = 8
X = 624
Y = 59
W = 32
-H = 42
+H = 43
Z = 1
Alpha = 1
# SIX P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
#Player One
[SingP1SixPStatic]
-X = 20
-Y = 100
-W = 32
-H = 42
+X = 19
+Y = 98
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP1SixPAvatar]
@@ -9249,13 +8613,13 @@ H = 8
#Player Two
[SingP2SixPStatic]
-X = 20
-Y = 227
-W = 32
-H = 42
+X = 19
+Y = 225
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP2SixPAvatar]
@@ -9301,13 +8665,13 @@ H = 8
#Player Three
[SingP3SixPStatic]
-X = 20
-Y = 352
-W = 32
-H = 42
+X = 19
+Y = 350
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP3SixPAvatar]
@@ -9353,13 +8717,13 @@ H = 8
#Player Four
[SingP4SixPStatic]
-X = 390
-Y = 100
-W = 32
-H = 42
+X = 389
+Y = 98
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP4SixPAvatar]
@@ -9405,13 +8769,13 @@ H = 8
#Player Five
[SingP5SixPStatic]
-X = 390
-Y = 227
-W = 32
-H = 42
+X = 389
+Y = 225
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P5Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP5SixPAvatar]
@@ -9457,13 +8821,13 @@ H = 8
#Player Six
[SingP6SixPStatic]
-X = 390
-Y = 352
-W = 32
-H = 42
+X = 389
+Y = 350
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P6Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP6SixPAvatar]
@@ -9507,16 +8871,196 @@ Y = 76
W = 100
H = 8
+##################################
+########## Duet ##########
+##################################
+
+[SingLyricsDuetP2UpperBar]
+X = 80
+W = 640
+Y = 493
+H = 41
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[SingLyricsDuetP2LowerBar]
+X = 80
+W = 640
+Y = 535
+H = 41
+
+[SingLyricsDuetP1UpperBar]
+X = 80
+W = 640
+Y = 5
+H = 41
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[SingLyricsDuetP1LowerBar]
+X = 80
+W = 640
+Y = 49
+H = 41
+
+[SingStaticDuet1]
+Tex = LyricBar
+X = 0
+Y = -5
+W = 800
+H = 93
+Color = White
+Type = Transparent
+
+# T H R E E P L A Y E R D U E T M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingDuetP1ThreePStatic]
+X = 11
+Y = 99
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP1ThreePText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 118
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP1ThreePStatic2]
+X = 710
+Y = 100
+W = 80
+H = 25
+
+[SingDuetP1ThreePTextScore]
+X = 725
+Y = 102
+Font = 0
+Size = 24
+
+[SingDuetP1ThreePSingBar]
+X = 710
+Y = 125
+W = 80
+H = 6
+
+[SingDuetP1ThreePAvatar]
+X = 15
+Y = 104
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingDuetP2MStatic]
+X = 11
+Y = 224
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP2MText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 243
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP2MStatic2]
+X = 710
+Y = 225
+W = 80
+H = 25
+
+[SingDuetP2MTextScore]
+X = 725
+Y = 227
+Font = 0
+Size = 24
+
+[SingDuetP2MSingBar]
+X = 710
+Y = 250
+W = 80
+H = 6
+
+[SingDuetP2MAvatar]
+X = 15
+Y = 229
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#Player Three
+[SingDuetP3RStatic]
+X = 11
+Y = 349
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP3RText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 368
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP3RStatic2]
+X = 710
+Y = 350
+W = 80
+H = 25
+
+[SingDuetP3RTextScore]
+X = 725
+Y = 352
+Font = 0
+Size = 24
+
+[SingDuetP3RSingBar]
+X = 710
+Y = 375
+W = 80
+H = 6
+
+[SingDuetP3RAvatar]
+X = 15
+Y = 354
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
# FOUR DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
#Player One
[SingP1DuetFourPStatic]
-X = 20
-Y = 114
-W = 37
-H = 37
+X = 19
+Y = 110
+W = 38
+H = 50
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP1DuetFourPText]
@@ -9550,21 +9094,21 @@ H = 6
[SingP1DuetFourPAvatar]
X = 23
-Y = 117
-W = 31
-H = 31
+Y = 115
+W = 30
+H = 40
Z = 1
Alpha = 1
#Player Two
[SingP2DuetFourPStatic]
-X = 20
-Y = 294
-W = 37
-H = 37
+X = 19
+Y = 292
+W = 38
+H = 50
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP2DuetFourPText]
@@ -9599,20 +9143,20 @@ H = 6
[SingP2DuetFourPAvatar]
X = 23
Y = 297
-W = 31
-H = 31
+W = 30
+H = 40
Z = 1
Alpha = 1
#Player Three
[SingP3DuetFourPStatic]
-X = 390
-Y = 114
-W = 37
-H = 37
+X = 389
+Y = 112
+W = 38
+H = 50
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP3DuetFourPText]
@@ -9647,20 +9191,20 @@ H = 6
[SingP3DuetFourPAvatar]
X = 393
Y = 117
-W = 31
-H = 31
+W = 30
+H = 40
Z = 1
Alpha = 1
#Player Four
[SingP4DuetFourPStatic]
-X = 390
-Y = 294
-W = 37
-H = 37
+X = 389
+Y = 292
+W = 38
+H = 50
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
#[SingP4DuetFourPText]
@@ -9693,28 +9237,28 @@ H = 6
[SingP4DuetFourPAvatar]
X = 393
Y = 297
-W = 31
-H = 31
+W = 30
+H = 40
Z = 1
Alpha = 1
# SIX DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
#Player One
[SingP1DuetSixPStatic]
-X = 20
+X = 19
Y = 100
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP1DuetSixPAvatar]
X = 23
-Y = 103
-W = 31
-H = 31
+Y = 105
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9751,20 +9295,20 @@ H = 6
#Player Two
[SingP2DuetSixPStatic]
-X = 20
+X = 19
Y = 227
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP2DuetSixPAvatar]
X = 23
-Y = 230
-W = 31
-H = 31
+Y = 232
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9801,20 +9345,20 @@ H = 6
#Player Three
[SingP3DuetSixPStatic]
-X = 20
+X = 19
Y = 352
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP3DuetSixPAvatar]
X = 23
-Y = 355
-W = 31
-H = 31
+Y = 357
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9851,20 +9395,20 @@ H = 6
#Player Four
[SingP4DuetSixPStatic]
-X = 390
+X = 389
Y = 100
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP4DuetSixPAvatar]
X = 393
-Y = 103
-W = 31
-H = 31
+Y = 105
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9901,20 +9445,20 @@ H = 6
#Player Five
[SingP5DuetSixPStatic]
-X = 390
+X = 389
Y = 227
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P5Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP5DuetSixPAvatar]
X = 393
-Y = 230
-W = 31
-H = 31
+Y = 232
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9951,20 +9495,20 @@ H = 6
#Player Six
[SingP6DuetSixPStatic]
-X = 390
+X = 389
Y = 352
-W = 37
-H = 37
+W = 34
+H = 46
Tex = AvatarFrame2
Color = P6Dark
-Type = Transparent
+Type = Colorized
Alpha = 1
[SingP6DuetSixPAvatar]
X = 393
-Y = 355
-W = 31
-H = 31
+Y = 357
+W = 26
+H = 36
Z = 1
Alpha = 1
@@ -9975,209 +9519,30 @@ Alpha = 1
#Font = 1
#Size = 18
#Color = White
-#Align = 0
-
-[SingP6DuetSixPStatic2]
-Tex = ScoreBG
-X = 700
-Y = 347
-W = 80
-H = 25
-Color = P6Dark
-Type = Colorized
-
-[SingP6DuetSixPTextScore]
-Text = 00000
-X = 715
-Y = 349
-Font = 0
-Size = 24
-
-[SingP6DuetSixPSingBar]
-X = 700
-Y = 372
-W = 80
-H = 6
-
-##################################
-########## Duet ##########
-##################################
-
-[SingLyricsDuetP2UpperBar]
-X = 80
-W = 640
-Y = 493
-H = 41
-;YOffSet (+/-) for the Sing-Indicator
-IndicatorYOffset = 3
-
-[SingLyricsDuetP2LowerBar]
-X = 80
-W = 640
-Y = 535
-H = 41
-
-[SingLyricsDuetP1UpperBar]
-X = 80
-W = 640
-Y = 5
-H = 41
-;YOffSet (+/-) for the Sing-Indicator
-IndicatorYOffset = 3
-
-[SingLyricsDuetP1LowerBar]
-X = 80
-W = 640
-Y = 49
-H = 41
-
-[SingStaticDuet1]
-Tex = LyricBar
-X = 0
-Y = 0
-W = 800
-H = 88
-Color = White
-Type = Transparent
-
-# T H R E E P L A Y E R D U E T M O D E # # # # # # # # # # # # # # # # # # # #
-#Player One
-[SingDuetP1ThreePStatic]
-X = 12
-Y = 99
-W = 37
-H = 37
-Tex = AvatarFrame2
-Color = P1Dark
-Type = Transparent
-Alpha = 1
-
-[SingDuetP1ThreePText]
-Text = PLAYERNAME
-X = 58
-Y = 118
-Font = 1
-Size = 18
-Color = White
-Align = 0
-
-[SingDuetP1ThreePStatic2]
-X = 710
-Y = 100
-W = 80
-H = 25
-
-[SingDuetP1ThreePTextScore]
-X = 725
-Y = 102
-Font = 0
-Size = 24
-
-[SingDuetP1ThreePSingBar]
-X = 710
-Y = 125
-W = 80
-H = 6
-
-[SingDuetP1ThreePAvatar]
-X = 15
-Y = 102
-W = 31
-H = 31
-Z = 1
-Alpha = 1
-
-#Player Two
-[SingDuetP2MStatic]
-X = 12
-Y = 224
-W = 37
-H = 37
-Tex = AvatarFrame2
-Color = P2Dark
-Type = Transparent
-Alpha = 1
-
-[SingDuetP2MText]
-Text = PLAYERNAME
-X = 58
-Y = 243
-Font = 1
-Size = 18
-Color = White
-Align = 0
-
-[SingDuetP2MStatic2]
-X = 710
-Y = 225
-W = 80
-H = 25
-
-[SingDuetP2MTextScore]
-X = 725
-Y = 227
-Font = 0
-Size = 24
-
-[SingDuetP2MSingBar]
-X = 710
-Y = 250
-W = 80
-H = 6
-
-[SingDuetP2MAvatar]
-X = 15
-Y = 227
-W = 31
-H = 31
-Z = 1
-Alpha = 1
-
-#Player Three
-[SingDuetP3RStatic]
-X = 12
-Y = 349
-W = 37
-H = 37
-Tex = AvatarFrame2
-Color = P3Dark
-Type = Transparent
-Alpha = 1
-
-[SingDuetP3RText]
-Text = PLAYERNAME
-X = 58
-Y = 368
-Font = 1
-Size = 18
-Color = White
-Align = 0
-
-[SingDuetP3RStatic2]
-X = 710
-Y = 350
+#Align = 0
+
+[SingP6DuetSixPStatic2]
+Tex = ScoreBG
+X = 700
+Y = 347
W = 80
H = 25
+Color = P6Dark
+Type = Colorized
-[SingDuetP3RTextScore]
-X = 725
-Y = 352
+[SingP6DuetSixPTextScore]
+Text = 00000
+X = 715
+Y = 349
Font = 0
Size = 24
-[SingDuetP3RSingBar]
-X = 710
-Y = 375
+[SingP6DuetSixPSingBar]
+X = 700
+Y = 372
W = 80
H = 6
-[SingDuetP3RAvatar]
-X = 15
-Y = 352
-W = 31
-H = 31
-Z = 1
-Alpha = 1
## Oscilloscope Position Screen ##
@@ -10200,7 +9565,7 @@ W = 100
#Player Two
[SingP2ROscilloscope]
X = 80
-Y = 275
+Y = 285
H = 30
W = 100
@@ -10230,21 +9595,21 @@ W = 160
#Player One
[SingDuetP1ThreePOscilloscope]
X = 56
-Y = 98
+Y = 110
H = 25
W = 100
#Player Two
[SingDuetP2MOscilloscope]
X = 56
-Y = 222
+Y = 235
H = 25
W = 100
#Player Three
[SingDuetP3ROscilloscope]
X = 56
-Y = 347
+Y = 360
H = 25
W = 100
@@ -10658,14 +10023,14 @@ Type = Transparent
X = 202
Y = 170
W = 72
-H = 99
+H = 97
Z = 1
[ScorePlayer1Static5]
-X = 191
-Y = 157
-W = 94
-H = 125
+X = 193
+Y = 158
+W = 91
+H = 121
Z = 0.9
Tex = AvatarFrame2
Color = P1Dark
@@ -10869,19 +10234,19 @@ H = 331
z = 0.89
Color = White
Type = Transparent
-
+
[ScorePlayer2Avatar]
X = 50
Y = 169
W = 72
-H = 98
+H = 97
Z = 1
[ScorePlayer2Static5]
-X = 39
-Y = 156
-W = 94
-H = 125
+X = 41
+Y = 157
+W = 91
+H = 121
Z = 0.9
Tex = AvatarFrame2
Color = P1Dark
@@ -11090,15 +10455,15 @@ Type = Transparent
X = 673
Y = 169
W = 72
-H = 99
+H = 97
Z = 1
[ScorePlayer3Static5]
-X = 662
-Y = 156
-W = 94
-H = 125
-Z =
+X = 664
+Y = 157
+W = 91
+H = 121
+Z =
Tex = AvatarFrame2
Color = P2Dark
Type = Colorized
@@ -11333,14 +10698,14 @@ Type = Transparent
X = 168
Y = 391
W = 58
-H = 84
+H = 82
Z = 1
[ScorePlayer4Static7]
-X = 159
-Y = 379
-W = 76
-H = 108
+X = 161
+Y = 382
+W = 72
+H = 100
Z = 0.9
Tex = AvatarFrame2
Color = P1Dark
@@ -11520,7 +10885,7 @@ W = 95
H = 169
Color = P5Lightest
Type = Colorized
-
+
[ScoreStaticBackLevelRound5]
Tex = ScoreLevelRound
X = 284
@@ -11574,14 +10939,14 @@ Type = Transparent
X = 427
Y = 391
W = 58
-H = 84
+H = 82
Z = 0.9
[ScorePlayer5Static7]
-X = 418
-Y = 379
-W = 76
-H = 108
+X = 421
+Y = 382
+W = 72
+H = 100
Z = 0.9
Tex = AvatarFrame2
Color = P2Dark
@@ -11808,19 +11173,19 @@ H = 180
Z = 0.89
Color = White
Type = Transparent
-
+
[ScorePlayer6Avatar]
X = 689
Y = 391
W = 58
-H = 84
+H = 82
Z = 0.9
[ScorePlayer6Static7]
-X = 680
-Y = 379
-W = 76
-H = 108
+X = 682
+Y = 382
+W = 72
+H = 100
Z = 0.9
Tex = AvatarFrame2
Color = P3Dark
@@ -11917,7 +11282,7 @@ Color = White
Tex = ScoreBar_box_dark
X = 20
Y = 185
-W = 22
+W = 18
H = 20
Color = P1Dark
Type = Colorized
@@ -11926,7 +11291,7 @@ Type = Colorized
Tex = ScoreBar_box_light
X = 20
Y = 210
-W = 22
+W = 18
H = 20
Color = P1Light
Type = Colorized
@@ -11935,7 +11300,7 @@ Type = Colorized
Tex = ScoreBar_box_lightest
X = 20
Y = 235
-W = 22
+W = 18
H = 20
Color = P1Lightest
Type = Colorized
@@ -12004,7 +11369,7 @@ W = 95
H = 125
Color = P1Lightest
Type = Colorized
-
+
[ScoreFourPStaticBackLevelRound1]
Tex = ScoreLevelRound
X = 294
@@ -12059,18 +11424,18 @@ Type = Transparent
X = 24
Y = 115
W = 36
-H = 50
+H = 49
Z = 1
[ScoreFourPPlayer1Static7]
X = 20
Y = 110
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R T W O
[ScoreFourPTextName2]
@@ -12157,7 +11522,7 @@ Color = White
Tex = ScoreBar_box_dark
X = 540
Y = 185
-W = 22
+W = 18
H = 20
Color = P2Dark
Type = Colorized
@@ -12166,7 +11531,7 @@ Type = Colorized
Tex = ScoreBar_box_light
X = 540
Y = 210
-W = 22
+W = 18
H = 20
Color = P2Light
Type = Colorized
@@ -12175,7 +11540,7 @@ Type = Colorized
Tex = ScoreBar_box_lightest
X = 540
Y = 235
-W = 22
+W = 18
H = 20
Color = P2Lightest
Type = Colorized
@@ -12244,7 +11609,7 @@ W = 95
H = 125
Color = P2Lightest
Type = Colorized
-
+
[ScoreFourPStaticBackLevelRound2]
Tex = ScoreLevelRound
X = 414
@@ -12298,18 +11663,18 @@ Type = Transparent
X = 544
Y = 115
W = 36
-H = 50
+H = 49
Z = 1
[ScoreFourPPlayer2Static7]
X = 540
Y = 110
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R T H R E E
[ScoreFourPTextName3]
@@ -12397,7 +11762,7 @@ Color = White
Tex = ScoreBar_box_dark
X = 20
Y = 405
-W = 22
+W = 18
H = 20
Color = P3Dark
Type = Colorized
@@ -12406,7 +11771,7 @@ Type = Colorized
Tex = ScoreBar_box_light
X = 20
Y = 430
-W = 22
+W = 18
H = 20
Color = P3Light
Type = Colorized
@@ -12415,7 +11780,7 @@ Type = Colorized
Tex = ScoreBar_box_lightest
X = 20
Y = 455
-W = 22
+W = 18
H = 20
Color = P3Lightest
Type = Colorized
@@ -12484,7 +11849,7 @@ W = 95
H = 118
Color = P3Lightest
Type = Colorized
-
+
[ScoreFourPStaticBackLevelRound3]
Tex = ScoreLevelRound
X = 294
@@ -12538,18 +11903,18 @@ Type = Transparent
X = 24
Y = 335
W = 36
-H = 50
+H = 49
Z = 1
[ScoreFourPPlayer3Static7]
X = 20
Y = 330
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R F O U R
[ScoreFourPTextName4]
@@ -12636,7 +12001,7 @@ Color = White
Tex = ScoreBar_box_dark
X = 540
Y = 405
-W = 22
+W = 18
H = 20
Color = P4Dark
Type = Colorized
@@ -12645,7 +12010,7 @@ Type = Colorized
Tex = ScoreBar_box_light
X = 540
Y = 430
-W = 22
+W = 18
H = 20
Color = P4Light
Type = Colorized
@@ -12654,7 +12019,7 @@ Type = Colorized
Tex = ScoreBar_box_lightest
X = 540
Y = 455
-W = 22
+W = 18
H = 20
Color = P4Lightest
Type = Colorized
@@ -12723,7 +12088,7 @@ W = 95
H = 118
Color = P4Lightest
Type = Colorized
-
+
[ScoreFourPStaticBackLevelRound4]
Tex = ScoreLevelRound
X = 414
@@ -12777,18 +12142,18 @@ Type = Transparent
X = 544
Y = 335
W = 36
-H = 50
+H = 49
Z = 1
[ScoreFourPPlayer4Static7]
X = 540
Y = 330
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
#################################################
## ##
@@ -12919,18 +12284,18 @@ Color = White
X = 24
Y = 115
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer1Static5]
X = 20
Y = 110
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P1Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R T W O
@@ -13057,18 +12422,18 @@ Color = White
X = 284
Y = 115
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer2Static5]
X = 280
Y = 110
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P2Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R T H R E E
[ScoreSixPTextName3]
@@ -13193,18 +12558,18 @@ Color = White
X = 544
Y = 115
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer3Static5]
X = 540
Y = 110
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P3Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R F O U R
[ScoreSixPTextName4]
@@ -13329,18 +12694,18 @@ Color = White
X = 24
Y = 337
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer4Static5]
X = 20
Y = 332
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P4Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R F I V E
[ScoreSixPTextName5]
@@ -13465,18 +12830,18 @@ Color = White
X = 284
Y = 337
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer5Static5]
X = 280
Y = 332
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P5Dark
-Type = Transparent
+Type = Colorized
# P L A Y E R S I X
[ScoreSixPTextName6]
@@ -13601,18 +12966,18 @@ Color = White
X = 544
Y = 337
W = 36
-H = 50
+H = 49
Z = 1
[ScoreSixPPlayer6Static5]
X = 540
Y = 332
-W = 45
-H = 60
+W = 44
+H = 59
Z = 0.9
Tex = AvatarFrame2
Color = P6Dark
-Type = Transparent
+Type = Colorized
############################
# Send Score 1 Player #
@@ -13807,7 +13172,7 @@ Z = 1
[SendScorePopupButtonUsernameText1]
X = 5
Y = 0
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -13838,7 +13203,7 @@ Z = 1
[SendScorePopupButtonPasswordText1]
X = 5
Y = 0
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -13979,7 +13344,7 @@ Y = 248
W = 362
H = 20
Z = 1
-Color = Gray
+Color = Gray
Type = Transparent
[ScoreDownloadPopupStatic3]
@@ -13989,7 +13354,7 @@ Y = 273
W = 362
H = 20
Z = 1
-Color = Gray
+Color = Gray
Type = Transparent
[ScoreDownloadPopupProgressSong]
@@ -14051,7 +13416,7 @@ Text = easy
[Top5Text5]
X = 560
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -14195,7 +13560,7 @@ Text = 00000
[Top5TextNumber1]
X = 120
-Y = 193
+Y = 196
Color = White
Font = 1
Size = 27
@@ -14204,7 +13569,7 @@ Text = 1
[Top5TextNumber2]
X = 120
-Y = 243
+Y = 246
Color = White
Font = 1
Size = 27
@@ -14213,7 +13578,7 @@ Text = 2
[Top5TextNumber3]
X = 120
-Y = 293
+Y = 296
Color = White
Font = 1
Size = 27
@@ -14222,7 +13587,7 @@ Text = 3
[Top5TextNumber4]
X = 120
-Y = 343
+Y = 346
Color = White
Font = 1
Size = 27
@@ -14231,7 +13596,7 @@ Text = 4
[Top5TextNumber5]
X = 120
-Y = 393
+Y = 396
Color = White
Font = 1
Size = 27
@@ -14240,46 +13605,51 @@ Text = 5
[Top5StaticNumber1]
Tex = PlayerNumberBox
-X = 100
-Y = 186
-W = 40
-H = 40
+X = 106
+Y = 190
+W = 29
+H = 38
+alpha = 0.6
Color = ColorDark
Type = Colorized
[Top5StaticNumber2]
Tex = PlayerNumberBox
-X = 100
-Y = 236
-W = 40
-H = 40
+X = 106
+Y = 240
+W = 29
+H = 38
+alpha = 0.6
Color = ColorDark
Type = Colorized
[Top5StaticNumber3]
Tex = PlayerNumberBox
-X = 100
-Y = 286
-W = 40
-H = 40
+X = 106
+Y = 290
+W = 29
+H = 38
+alpha = 0.6
Color = ColorDark
Type = Colorized
[Top5StaticNumber4]
Tex = PlayerNumberBox
-X = 100
-Y = 336
-W = 40
-H = 40
+X = 106
+Y = 340
+W = 29
+H = 38
+alpha = 0.6
Color = ColorDark
Type = Colorized
[Top5StaticNumber5]
Tex = PlayerNumberBox
-X = 100
-Y = 386
-W = 40
-H = 40
+X = 106
+Y = 390
+W = 29
+H = 38
+alpha = 0.6
Color = ColorDark
Type = Colorized
@@ -14333,11 +13703,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14356,11 +13726,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14384,11 +13754,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14407,11 +13777,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14430,11 +13800,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14498,17 +13868,17 @@ W = 230
H = 40
SkipX = 10
Fields = 2
-
-DColor =
-Color =
+
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
STDColor = GrayDark
-
+
[PartyPlayerSelectPlayers1]
Tex = MainBar
TexSBG = PartyPlayerSelectBG
@@ -14522,13 +13892,13 @@ SBGW = 190
H = 40
SkipX = 10
Fields = 1
-
+
TColor = White
TDColor = White
-
+
STColor = White
STDColor = GrayDark
-
+
[PartyPlayerSelectPlayers2]
Tex = MainBar
TexSBG = PartyPlayerSelectBG
@@ -14542,13 +13912,13 @@ SBGW = 190
H = 40
SkipX = 10
Fields = 1
-
+
TColor = White
TDColor = White
-
+
STColor = White
STDColor = GrayDark
-
+
[PartyPlayerSelectPlayers3]
Tex = MainBar
Type = Transparent
@@ -14562,13 +13932,13 @@ SBGW = 190
H = 40
SkipX = 10
Fields = 4
-
+
TColor = White
TDColor = White
-
+
STColor = White
STDColor = GrayDark
-
+
[PartyPlayerTeam1Name]
Tex = PartyTeamButton2
X = 70
@@ -14579,7 +13949,7 @@ Type = Transparent
Color = P1Dark
DColor = P1Light
Texts = 1
-
+
[PartyPlayerTeam1NameText1]
X = 115
Y = 4
@@ -14588,7 +13958,7 @@ Size = 32
Align = 1
Text = Team 1
Color = White
-
+
[PartyPlayerPlayer1Name]
Tex = Button
X = 70
@@ -14943,11 +14313,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14966,11 +14336,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -14989,11 +14359,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15012,11 +14382,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15035,11 +14405,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15058,11 +14428,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15081,11 +14451,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15104,11 +14474,11 @@ H = 40
SkipX = 10
Fields = 7
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -15606,28 +14976,6 @@ ThirdTexture = PartyScoreDeco
ThirdTyp = Colorized
ThirdColor = Bronze
-[PartyScoreStatic1]
-X = 0
-Y = 545
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyScoreStatic2]
-X = 250
-Y = 545
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
-Type = Transparent
-Reflection = 1
-ReflectionSpacing = 2
-
[PartyScoreStatic3]
X = 40
Y = 22
@@ -15669,7 +15017,7 @@ Text = PARTY_SCORE_DESC
[PartyScoreText3]
X = 238
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 2
@@ -15678,7 +15026,7 @@ Text = PARTY_SCORE_WHEREAMI
[PartyScoreText4]
X = 290
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -15869,43 +15217,21 @@ Reflection = 1
ReflectionSpacing = 2
[PartyScoreStaticTeam3Deco]
-Tex = PartyScoreDeco
-X = 563
-Y = 391
-W = 64
-H = 64
-Type = Transparent
-Color = Gold
-Reflection = 1
-ReflectionSpacing = -5
-
-[PartyWin]
-Texts = 4
-
-[PartyWinBackground]
-Tex = PartyBG
-
-[PartyWinStatic1]
-X = 0
-Y = 545
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyWinStatic2]
-X = 250
-Y = 545
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
+Tex = PartyScoreDeco
+X = 563
+Y = 391
+W = 64
+H = 64
Type = Transparent
+Color = Gold
Reflection = 1
-ReflectionSpacing = 2
+ReflectionSpacing = -5
+
+[PartyWin]
+Texts = 4
+
+[PartyWinBackground]
+Tex = PartyBG
[PartyWinStatic3]
X = 40
@@ -15948,7 +15274,7 @@ Text = PARTY_WIN_DESC
[PartyWinText3]
X = 238
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 2
@@ -15957,7 +15283,7 @@ Text = PARTY_WIN_WHEREAMI
[PartyWinText4]
X = 290
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16342,30 +15668,6 @@ Texts = 5
[PartyTournamentPlayerBackground]
Tex = PartyBG
-[PartyTournamentPlayerStatic1]
-X = 0
-Y = 545
-Z = 0.7
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyTournamentPlayerStatic2]
-X = 250
-Y = 545
-Z = 0.7
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
-Type = Transparent
-Reflection = 1
-ReflectionSpacing = 2
-
[PartyTournamentPlayerStatic3]
X = 40
Y = 22
@@ -16428,7 +15730,7 @@ Text = PARTY_MODE_TOURNAMENT_PLAYER_DESC
[PartyTournamentPlayerText3]
X = 294
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16437,7 +15739,7 @@ Text = SING_LEGEND_NAVIGATE
[PartyTournamentPlayerText4]
X = 418
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16446,7 +15748,7 @@ Text = PARTY_PLAYER_ENTER_NAME
[PartyTournamentPlayerText5]
X = 586
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16468,7 +15770,7 @@ DColor = ColorDark
Color = ColorLight
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
@@ -16840,27 +16142,6 @@ Texts = 4
[PartyTournamentOptionsBackground]
Tex = PartyBG
-[PartyTournamentOptionsStatic1]
-X = 0
-Y = 545
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyTournamentOptionsStatic2]
-X = 250
-Y = 545
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
-Type = Transparent
-Reflection = 1
-ReflectionSpacing = 2
[PartyTournamentOptionsStatic3]
X = 40
@@ -16912,7 +16193,7 @@ Text = PARTY_MODE_TOURNAMENT_OPTIONS_DESC
[PartyTournamentOptionsText3]
X = 294
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16921,7 +16202,7 @@ Text = SING_LEGEND_NAVIGATE
[PartyTournamentOptionsText4]
X = 418
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -16944,7 +16225,7 @@ DColor = ColorDark
Color = ColorLight
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
@@ -16967,7 +16248,7 @@ DColor = ColorDark
Color = ColorLight
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
@@ -16990,7 +16271,7 @@ DColor = ColorDark
Color = ColorLight
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
@@ -17013,7 +16294,7 @@ DColor = ColorDark
Color = ColorLight
TColor = White
TDColor = White
-
+
SBGDColor = ColorDark
SBGColor = ColorLight
STColor = White
@@ -17026,28 +16307,6 @@ Texts = 3
[PartyTournamentRoundsBackground]
Tex = PartyBG
-[PartyTournamentRoundsStatic1]
-X = 0
-Y = 545
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyTournamentRoundsStatic2]
-X = 250
-Y = 545
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
-Type = Transparent
-Reflection = 1
-ReflectionSpacing = 2
-
[PartyTournamentRoundsStatic3]
X = 40
Y = 22
@@ -17108,7 +16367,7 @@ Text = PARTY_MODE_TOURNAMENT_ROUNDS_DESC
[PartyTournamentRoundsText3]
X = 294
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -17495,28 +16754,6 @@ Texts = 3
[PartyTournamentWinBackground]
Tex = PartyBG
-[PartyTournamentWinStatic1]
-X = 0
-Y = 545
-W = 250
-H = 30
-Tex = Leiste1
-Color = ColorLight
-Type = Colorized
-Reflection = 1
-ReflectionSpacing = 2
-
-[PartyTournamentWinStatic2]
-X = 250
-Y = 545
-W = 550
-H = 30
-Tex = Leiste2
-Color = White
-Type = Transparent
-Reflection = 1
-ReflectionSpacing = 2
-
[PartyTournamentWinStatic3]
X = 40
Y = 22
@@ -17558,7 +16795,7 @@ Text = PARTY_MODE_TOURNAMENT_WIN_DESC
[PartyTournamentWinText3]
X = 290
Y = 552
-Color = Black
+Color = White
Font = 0
Size = 21
Align = 0
@@ -17675,11 +16912,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -17698,11 +16935,11 @@ H = 40
SkipX = 10
Fields = 1
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGDColor = GrayLight
SBGColor = ColorDark
STColor = White
@@ -17787,7 +17024,7 @@ X = 120
Y = 110
W = 560
H = 25
-Tex = JukeboxSongListBackground
+Tex = JukeboxSongSelection
Color = ColorDark
DColor = White
Type = Colorized
@@ -17925,7 +17162,7 @@ W = 40
H = 15
Tex = JukeboxClose
Color = Red
-DColor =
+DColor =
Type = Colorized
[JukeboxSongListFixPin]
@@ -18108,7 +17345,7 @@ W = 40
H = 15
Tex = JukeboxClose
Color = Red
-DColor =
+DColor =
Type = Colorized
[JukeboxSongOptionsDefault]
@@ -18118,7 +17355,7 @@ W = 120
H = 25
Tex = JukeboxButton
Color = ColorDark
-DColor =
+DColor =
Type = Colorized
Texts = 1
@@ -18200,8 +17437,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18225,8 +17462,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18250,8 +17487,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18274,8 +17511,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18298,8 +17535,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18322,8 +17559,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18346,8 +17583,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18370,8 +17607,8 @@ SkipX=0
SBGW=220
TextSize=18
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18391,8 +17628,8 @@ SkipX = -30
TextSize = 14
SBGW=220
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18417,7 +17654,7 @@ W = 1
H = 18
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
[JukeboxSongOptionsLyricSelectG]
@@ -18432,8 +17669,8 @@ SkipX = -30
TextSize = 14
SBGW=220
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18458,7 +17695,7 @@ W = 1
H = 18
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
[JukeboxSongOptionsLyricSelectB]
@@ -18473,8 +17710,8 @@ SkipX = -30
TextSize = 14
SBGW=220
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -18499,7 +17736,7 @@ W = 1
H = 18
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
@@ -18630,38 +17867,20 @@ Align = 0
Text =
[StatMainStatic1]
-X = 40
+X = 30
Y = 100
-W = 520
-H = 20
-Tex = StatMainBG1
-Color = ColorLight
-Type = Colorized
-
-[StatMainStatic2]
-X = 40
-Y = 120
-W = 520
-H = 300
-Tex = StatMainBG2
+W = 530
+H = 340
+Tex = StatInfoBG1
Color = ColorDark
Type = Colorized
-[StatMainStatic3]
-X = 40
-Y = 420
-W = 520
-H = 20
-Tex = StatMainBG3
-Color = ColorLight
-Type = Colorized
-
[StatMainText1]
-X = 70
-Y = 6
+X = 50
+Y = 25
Color = White
Font = 0
-Size = 60
+Size = 50
Text = STAT_MAIN
Align = 0
@@ -18757,145 +17976,119 @@ Text = SING_OPTIONS_EXIT
Color = White
[StatDetailTextDescription]
-X = 70
-Y = 53
+X = 50
+Y = 80
Color = White
Font = 0
-Size = 30
+Size = 25
Align = 0
Text =
[StatDetailTextPage]
-X = 546
-Y = 98
-Color = Black
+X = 440
+Y = 105
+Color = White
Font = 0
Size = 15
-Align = 2
+Align = 0
Text =
[StatDetailTextList1]
-X = 45
-Y = 122
+X = 50
+Y = 140
Color = White
Font = 0
Size = 21
Text = Stat1
[StatDetailTextList2]
-X = 45
-Y = 160
+X = 50
+Y = 178
Color = White
Font = 0
Size = 21
Text = Stat2
[StatDetailTextList3]
-X = 45
-Y = 198
+X = 50
+Y = 216
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList4]
-X = 45
-Y = 236
+X = 50
+Y = 254
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList5]
-X = 45
-Y = 274
+X = 50
+Y = 292
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList6]
-X = 45
-Y = 312
+X = 50
+Y = 330
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList7]
-X = 45
-Y = 350
+X = 50
+Y = 368
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList8]
-X = 45
-Y = 388
+X = 50
+Y = 406
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList9]
-X = 45
-Y = 426
+X = 50
+Y = 444
Color = White
Font = 0
Size = 21
Text =
[StatDetailTextList10]
-X = 45
-Y = 464
+X = 50
+Y = 482
Color = White
Font = 0
Size = 21
Text =
-[StatDetailStatic1]
-X = 40
-Y = 22
-W = 27
-H = 27
-Color = White
-Tex = StatIcon
-Type = Colorized
-
[StatDetailStatic1]
X = 40
Y = 100
W = 520
-H = 24
-Tex = StatDetailBG1
+H = 440
+Tex = StatInfoBG2
Color = ColorLight
Type = Colorized
-[StatDetailStatic2]
-X = 40
-Y = 124
-W = 520
-H = 376
-Tex = StatMainBG2
-Color = ColorDark
-Type = Colorized
-
-[StatDetailStatic3]
-X = 40
-Y = 500
-W = 520
-H = 20
-Tex = StatMainBG3
-Color = ColorLight
-Type = Colorized
[StatDetailText1]
-X = 70
-Y = 6
+X = 50
+Y = 25
Color = White
Font = 0
-Size = 60
+Size = 50
Text = STAT_DETAIL
Align = 0
@@ -18917,9 +18110,9 @@ Text = SING_OPTIONS
Align = 0
[OptionsButtonGame]
-X = 105
+X = 100
Y = 120
-W = 85
+W = 75
H = 80
Tex = Optionsbuttongame
Color = White
@@ -18933,7 +18126,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonGameText1]
-X = 45
+X = 35
Y = 80
Font = 0
Size = 26
@@ -18942,9 +18135,9 @@ Text = SING_OPTIONS_GAME
Color = White
[OptionsButtonGraphics]
-X = 250
+X = 260
Y = 120
-W = 105
+W = 75
H = 85
Tex = Optionsbuttongraphics
Color = White
@@ -18958,7 +18151,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonGraphicsText1]
-X = 55
+X = 40
Y = 80
Font = 0
Size = 26
@@ -18969,7 +18162,7 @@ Color = White
[OptionsButtonSound]
X = 432
Y = 120
-W = 60
+W = 59
H = 70
Tex = Optionsbuttonsound
Color = White
@@ -19018,7 +18211,7 @@ Text = SING_OPTIONS_LYRICS
Color = White
[OptionsButtonThemes]
-X = 105
+X = 100
Y = 270
W = 95
H = 85
@@ -19035,7 +18228,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonThemesText1]
-X = 40
+X = 35
Y = 80
Font = 0
Size = 26
@@ -19043,12 +18236,12 @@ Align = 1
Text = SING_OPTIONS_THEMES
Color = White
-[OptionsButtonRecord]
-X = 260
+[OptionsButtonMicrophones]
+X = 265
Y = 270
-W = 85
+W = 73
H = 75
-Tex = Optionsbuttonrecord
+Tex = Optionsbuttonmicrophones
Color = White
DColor = White
Type = Transparent
@@ -19060,20 +18253,20 @@ SelectH = 65
FadeTex = ButtonFade
FadeTexPos = 0
-[OptionsButtonRecordText1]
-X = 45
+[OptionsButtonMicrophonesText1]
+X = 40
Y = 80
Font = 0
Size = 26
Align = 1
-Text = SING_OPTIONS_RECORD
+Text = SING_OPTIONS_MICROPHONES
Color = White
Texts = 1
[OptionsButtonAdvanced]
-X = 428
+X = 432
Y = 270
-W = 67
+W = 61
H = 77
Tex = Optionsbuttonadvanced
Color = White
@@ -19088,7 +18281,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonAdvancedText1]
-X = 36
+X = 32
Y = 80
Font = 0
Size = 26
@@ -19100,7 +18293,7 @@ Texts = 1
[OptionsButtonNetwork]
X = 585
Y = 270
-W = 65
+W = 59
H = 77
Tex = Optionsbuttonnetwork
Color = White
@@ -19125,9 +18318,9 @@ Color = White
Texts = 1
[OptionsButtonWebcam]
-X = 105
+X = 100
Y = 425
-W = 85
+W = 75
H = 80
Tex = Optionsbuttonwebcam
Color = White
@@ -19142,7 +18335,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonWebcamText1]
-X = 38
+X = 35
Y = 80
Font = 0
Size = 26
@@ -19152,9 +18345,9 @@ Color = White
Texts = 1
[OptionsButtonJukebox]
-X = 270
+X = 275
Y = 425
-W = 65
+W = 59
H = 75
Tex = Optionsbuttonjukebox
Color = White
@@ -19169,7 +18362,7 @@ FadeTex = ButtonFade
FadeTexPos = 0
[OptionsButtonJukeboxText1]
-X = 35
+X = 32
Y = 80
Font = 0
Size = 26
@@ -19180,7 +18373,7 @@ Color = White
[OptionsButtonExit]
X = 415
Y = 425
-W = 80
+W = 70
H = 80
Tex = Optionsbuttonback
Color = White
@@ -19251,8 +18444,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19272,8 +18465,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19293,8 +18486,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19314,8 +18507,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19335,8 +18528,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19344,20 +18537,20 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsGameSelectDebug]
-Text = SING_OPTIONS_GAME_DEBUG
+[OptionsGameSelectJoypad]
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
+Text = SING_OPTIONS_GAME_JOYPAD_SUPPORT
X = 70
Y = 380
W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19378,7 +18571,7 @@ Reflection = 1
ReflectionSpacing = 2
[OptionsGraphics]
-Texts = 5
+Texts = 4
[OptionsGraphicsBackground]
Tex = OptionsBG
@@ -19425,8 +18618,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19446,8 +18639,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19455,8 +18648,29 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsGraphicsSelectDepth]
-Text = SING_OPTIONS_GRAPHICS_DEPTH
+#########unused at the moment#########
+#[OptionsGraphicsSelectLoadAnimation]
+#Text = SING_OPTIONS_GRAPHICS_LOADANIMATION
+#Tex = MainBar
+#TexSBG = SelectBG
+#X = 40
+#Y = 85
+#W = 230
+#H = 70
+#SkipX = 10
+
+#Color = ColorDark
+#DColor = ColorLight
+#TColor = White
+#TDColor = White
+
+#SBGColor = ColorDark
+#SBGDColor = ColorLight
+#STColor = White
+#STDColor = GrayDark
+
+[OptionsGraphicsSelectScreenFade]
+Text = SING_OPTIONS_GRAPHICS_SCREENFADE
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -19467,8 +18681,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19476,8 +18690,8 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsGraphicsSelectVisualizer]
-Text = SING_OPTIONS_GRAPHICS_VISUALIZER
+[OptionsGraphicsSelectEffectSing]
+Text = SING_OPTIONS_GRAPHICS_EFFECTSING
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -19488,8 +18702,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19497,8 +18711,9 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsGraphicsSelectOscilloscope]
-Text = SING_OPTIONS_GRAPHICS_OSCILLOSCOPE
+
+[OptionsGraphicsSelectVisualizer]
+Text = SING_OPTIONS_GRAPHICS_VISUALIZER
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -19509,8 +18724,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19530,8 +18745,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19586,8 +18801,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19607,8 +18822,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19628,8 +18843,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19649,8 +18864,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19670,8 +18885,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19691,8 +18906,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19712,8 +18927,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19759,7 +18974,7 @@ Text = SING_OPTIONS_LYRICS
X = 440
Y = 548
Z = 0.5
-Color = Black
+Color = White
Size = 24
Text = SING_LEGEND_ESC
Reflection = 1
@@ -19777,8 +18992,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19798,8 +19013,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19819,8 +19034,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19866,7 +19081,7 @@ Text = SING_OPTIONS_THEMES
X = 440
Y = 548
Z = 0.5
-Color = Black
+Color = White
Size = 24
Reflection = 1
ReflectionSpacing = 20
@@ -19884,8 +19099,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19905,8 +19120,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19926,8 +19141,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19947,30 +19162,30 @@ Type = Transparent
Reflection = 1
ReflectionSpacing = 2
-[OptionsRecord]
+[OptionsMicrophones]
Texts = 5
-[OptionsRecordBackground]
+[OptionsMicrophonesBackground]
Tex = OptionsBG
-[OptionsRecordStatic1]
+[OptionsMicrophonesStatic1]
X = 30
Y = 30
W = 70
H = 65
Color = White
-Tex = Optionsbuttonrecord
+Tex = Optionsbuttonmicrophones
Type = Transparent
-[OptionsRecordText1]
+[OptionsMicrophonesText1]
X = 110
Y = 40
Color = White
Size = 45
-Text = SING_OPTIONS_RECORD
+Text = SING_OPTIONS_MICROPHONES
-[OptionsRecordSelectSlideCard]
-Text = SING_OPTIONS_RECORD_CARD
+[OptionsMicrophonesSelectSlideCard]
+Text = SING_OPTIONS_MICROPHONES_CARD
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -19981,8 +19196,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -19990,8 +19205,8 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsRecordSelectSlideInput]
-Text = SING_OPTIONS_RECORD_INPUT
+[OptionsMicrophonesSelectSlideInput]
+Text = SING_OPTIONS_MICROPHONES_INPUT
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -20002,7 +19217,7 @@ W = 250
H = 40
SkipX = 10
-Color =
+Color =
DColor =
TColor = White
TDColor = White
@@ -20011,8 +19226,8 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsRecordSelectSlideChannel]
-Text = SING_OPTIONS_RECORD_CHANNEL
+[OptionsMicrophonesSelectSlideChannel]
+Text = SING_OPTIONS_MICROPHONES_CHANNEL
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -20023,8 +19238,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20032,20 +19247,20 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsRecordSelectThreshold]
+[OptionsMicrophonesSelectThreshold]
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
-Text = SING_OPTIONS_SOUND_THRESHOLD
+Text = SING_OPTIONS_MICROPHONES_THRESHOLD
X = 70
Y = 367
W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20053,20 +19268,20 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsRecordSelectMicBoost]
+[OptionsMicrophonesSelectMicBoost]
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
-Text = SING_OPTIONS_SOUND_MIC_BOOST
+Text = SING_OPTIONS_MICROPHONES_MIC_BOOST
X = 70
Y = 417
W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20074,7 +19289,7 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsRecordButtonExit]
+[OptionsMicrophonesButtonExit]
X = 70
Y = 470
W = 250
@@ -20108,29 +19323,8 @@ Color = White
Size = 45
Text = SING_OPTIONS_ADVANCED
-#########unused at the moment#########
-#[OptionsAdvancedSelectLoadAnimation]
-#Text = SING_OPTIONS_ADVANCED_LOADANIMATION
-#Tex = MainBar
-#TexSBG = SelectBG
-#X = 40
-#Y = 85
-#W = 230
-#H = 70
-#SkipX = 10
-
-#Color = ColorDark
-#DColor = ColorLight
-#TColor = White
-#TDColor = White
-
-#SBGColor = ColorDark
-#SBGDColor = ColorLight
-#STColor = White
-#STDColor = GrayDark
-
-[OptionsAdvancedSelectScreenFade]
-Text = SING_OPTIONS_ADVANCED_SCREENFADE
+[OptionsAdvancedSelectDebug]
+Text = SING_OPTIONS_ADVANCED_DEBUG
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -20141,8 +19335,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20150,8 +19344,8 @@ SBGDColor = Gray
STColor = White
STDColor = GrayDark
-[OptionsAdvancedSelectEffectSing]
-Text = SING_OPTIONS_ADVANCED_EFFECTSING
+[OptionsAdvancedSelectOscilloscope]
+Text = SING_OPTIONS_ADVANCED_OSCILLOSCOPE
Tex = MainBar
Type = Transparent
TexSBG = SelectBG
@@ -20162,29 +19356,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
-TColor = White
-TDColor = White
-SBGColor = ColorDark
-SBGDColor = Gray
-STColor = White
-STDColor = GrayDark
-
-[OptionsAdvancedSelectJoypad]
-Tex = MainBar
-Type = Transparent
-TexSBG = SelectBG
-TypeSBG = Transparent
-Text = SING_OPTIONS_ADVANCED_JOYPAD_SUPPORT
-X = 70
-Y = 220
-W = 250
-H = 35
-SkipX = 10
-
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20199,13 +19372,13 @@ Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
X = 70
-Y = 265
+Y = 220
W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20220,13 +19393,13 @@ Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
X = 70
-Y = 310
+Y = 265
W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20241,13 +19414,13 @@ Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
X = 70
-Y = 355
+Y = 310
W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20267,8 +19440,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20283,13 +19456,13 @@ Type = Transparent
TexSBG = SelectBG
TypeSBG = Transparent
X = 70
-Y = 445
+Y = 355
W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20299,7 +19472,7 @@ STDColor = GrayDark
[OptionsAdvancedButtonExit]
X = 70
-Y = 490
+Y = 445
W = 250
H = 40
Tex = Button
@@ -20346,7 +19519,7 @@ ReflectionSpacing = 2
X = 440
Y = 548
Z = 0.5
-Color = Black
+Color = White
Size = 24
Reflection = 1
ReflectionSpacing = 20
@@ -20367,7 +19540,7 @@ ReflectionSpacing = 2
X = 570
Y = 548
Z = 0.5
-Color = Black
+Color = White
Size = 24
Reflection = 1
ReflectionSpacing = 20
@@ -20394,8 +19567,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20415,8 +19588,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20436,8 +19609,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20457,8 +19630,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20478,8 +19651,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20499,8 +19672,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20520,8 +19693,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20541,8 +19714,8 @@ W = 250
H = 35
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -20602,8 +19775,8 @@ Y = 450
W = 250
H = 35
Tex = MainBar
-Color =
-DColor =
+Color =
+DColor =
Type = Transparent
[OptionsWebcamText1]
X = 115
@@ -20612,7 +19785,7 @@ Color = White
Size = 45
Text = SING_OPTIONS_WEBCAM
-[OptionsWebcamText2]
+[OptionsWebcamText2]
X = 90
Y = 450
Color = White
@@ -20630,11 +19803,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20652,11 +19825,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20674,11 +19847,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20696,11 +19869,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20718,11 +19891,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20740,11 +19913,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20762,11 +19935,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20784,11 +19957,11 @@ W = 250
H = 35
SkipX = 10
-DColor =
-Color =
+DColor =
+Color =
TColor = White
TDColor = White
-
+
SBGColor = ColorDark
SBGDColor = Gray
STColor = White
@@ -20882,7 +20055,7 @@ Z = 1
[InsertUserPopupButtonUsernameText1]
X = 5
Y = 0
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -20913,7 +20086,7 @@ Z = 1
[InsertUserPopupButtonPasswordText1]
X = 5
Y = 0
-Color = Black
+Color = White
Font = 0
Size = 24
Align = 0
@@ -21005,8 +20178,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21026,8 +20199,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21047,8 +20220,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21068,8 +20241,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21089,8 +20262,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21110,8 +20283,8 @@ W = 250
H = 40
SkipX = 10
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21132,8 +20305,8 @@ H = 15
SkipX = 10
TextSize = 16
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21155,8 +20328,8 @@ Z = 0.8
SkipX = 10
TextSize = 16
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21177,8 +20350,8 @@ H = 15
SkipX = 10
TextSize = 16
-Color =
-DColor =
+Color =
+DColor =
TColor = White
TDColor = White
SBGColor = ColorDark
@@ -21220,7 +20393,7 @@ W = 1
H = 12
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
[OptionsJukeboxPointerG]
@@ -21230,7 +20403,7 @@ W = 1
H = 12
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
[OptionsJukeboxPointerB]
@@ -21240,7 +20413,7 @@ W = 1
H = 12
Z = 1
Tex = Picker
-Color = Black
+Color = Black
Type = Transparent
[OptionsJukeboxColor]
@@ -21277,32 +20450,20 @@ Reflection = 1
ReflectionSpacing = 2
[AboutMain]
-Texts = 3
-Statics = 1
+Texts = 2
[AboutMainBackground]
Tex = MainBG
-[AboutMainButtonCredits]
-X = 500
-Y = 440
-W = 110
-H = 40
-Tex = LogoDeluxe
-DColor =
-Color =
-Type = Transparent
-Texts = 1
-Reflection = 0
-
-[AboutMainButtonCreditsText1]
-X = 55
-Y = -40
-Font = 0
-Size = 25
-Align = 1
-Text = ABOUT_USDX_CREDITS
+[AboutMainStatico]
+Tex = AboutBG
+X = 25
+Y = 70
+W = 630
+H = 450
Color = White
+Alpha = 0.65
+Type = Transparent
[AboutMainButtonExit]
X = 660
@@ -21326,12 +20487,12 @@ Text = SING_OPTIONS_EXIT
Color = White
[AboutMainButtonDevelopers]
-X = 80
+X = 270
Y = 430
W = 140
H = 70
Tex = LogoWeb
-DColor =
+DColor =
Color = White
Type = Transparent
Texts = 1
@@ -21356,18 +20517,9 @@ Size = 24
Align = 0
Text =
-[AboutMainStatic1]
-X = 25
-Y = 70
-W = 630
-H = 450
-Tex=helperbg
-Color = ColorDark
-Type = Colorized
-
[AboutMainText1]
X = 70
-Y = 6
+Y = 20
Color = White
Font = 0
Size = 60
@@ -21375,21 +20527,12 @@ Text = ABOUT_MAIN
Align = 0
[AboutMainText2]
-X = 70
-Y = 53
-Color = White
-Font = 0
-Size = 30
-Align = 0
-Text = ABOUT_MAIN_DESC
-
-[AboutMainText3]
-X = 415
+X = 524
Y = 90
Color = White
Font = 0
Size = 20
-Align = 0
+Align = 1
Text = US_VERSION
Reflection = 0
ReflectionSpacing = 13
@@ -21423,7 +20566,7 @@ Text = SING_OPTIONS_EXIT
Color = White
[DevelopersTextOverview]
-X = 105
+X = 70
Y = 125
W = 400
Color = White
@@ -21435,16 +20578,17 @@ Text =
[DevelopersStatic1]
X = 45
-Y = 70
+Y = 115
W = 630
-H = 450
+H = 460
Tex=Dhelperbg
Color = White
+alpha=0.65
Type = Transparent
[DevelopersStatic2]
-X = 300
-Y = 460
+X = 280
+Y = 475
W = 160
H = 80
Tex = LogoWeb
@@ -21453,7 +20597,7 @@ Type = Transparent
[DevelopersText1]
X = 70
-Y = 15
+Y = 30
Color = White
Font = 0
Size = 60
@@ -21467,7 +20611,7 @@ Type=Fade
ColR=0
ColG=0
ColB=0
-Alpha=0.4
+Alpha=0.3
[CheckPopupStatic1]
Tex = interface_dialog_background
@@ -21476,21 +20620,22 @@ Y = 150
W = 400
H = 200
Z = 1
-Color = White
-Type = Transparent
-Reflection = 1
+alpha=0.95
+Color = ColorDark
+Type = Colorized
+Reflection = 0
ReflectionSpacing = 15
-[CheckPopupText1]
-X = 400
-Y = 160
-W = 400
-Color = ColorLight
-Font = 0
-Size = 30
-Text = MSG_QUESTION_TITLE
-Align = 1
-Z = 1
+#[CheckPopupText1]
+#X = 400
+#Y = 160
+#W = 400
+#Color = White
+#Font = 0
+#Size = 30
+#Text = MSG_QUESTION_TITLE
+#Align = 1
+#Z = 1
[CheckPopupText]
X = 400
@@ -21508,10 +20653,10 @@ X = 285
Y = 310
W = 100
H = 25
-Tex = Button
-Color = ColorLight
-DColor = ColorDark
-Type = Transparent
+Tex = Button2
+Color = ColorDark
+DColor = ColorLight
+Type = Colorized
Texts = 1
Z = 1
@@ -21530,10 +20675,9 @@ X = 415
Y = 310
W = 100
H = 25
-Tex = Button
-Color = ColorLight
-DColor = ColorDark
-Type = Transparent
+Tex = Button2
+Color = ColorDark
+Type = Colorized
Texts = 1
Z = 1
@@ -21566,7 +20710,7 @@ H = 200
Z = 0.98
Color = White
Type = Transparent
-Reflection = 1
+Reflection = 0
ReflectionSpacing = 15
[ErrorPopupText1]
@@ -21597,9 +20741,8 @@ Y = 310
W = 100
H = 25
Tex = Button
-Color = ColorLight
-DColor = ColorDark
-Type = Transparent
+Color = ColorDark
+Type = Colorized
Texts = 1
Z = 1
@@ -21622,4 +20765,3 @@ H = 600
Z = 0.95
Color = ColorLight
Type = Colorized
-
diff --git a/game/themes/Fantasy/[About]helperbg.png b/game/themes/Fantasy/[About]helperbg.png
deleted file mode 100644
index 2ac7a64a..00000000
Binary files a/game/themes/Fantasy/[About]helperbg.png and /dev/null differ
diff --git a/game/themes/Fantasy/[About]logo_deluxe.png b/game/themes/Fantasy/[About]logo_deluxe.png
deleted file mode 100644
index db175f31..00000000
Binary files a/game/themes/Fantasy/[About]logo_deluxe.png and /dev/null differ
diff --git a/game/themes/Fantasy/[About]logo_web.png b/game/themes/Fantasy/[About]logo_web.png
deleted file mode 100644
index 19664f7e..00000000
Binary files a/game/themes/Fantasy/[About]logo_web.png and /dev/null differ
diff --git a/game/themes/Fantasy/[Developers]helperbg.png b/game/themes/Fantasy/[Developers]helperbg.png
deleted file mode 100644
index ce7d6f47..00000000
Binary files a/game/themes/Fantasy/[Developers]helperbg.png and /dev/null differ
diff --git a/game/themes/Fantasy/[bg-load]basic.jpg b/game/themes/Fantasy/[bg-load]basic.jpg
deleted file mode 100644
index 2562863a..00000000
Binary files a/game/themes/Fantasy/[bg-load]basic.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[bg-main]blue.jpg b/game/themes/Fantasy/[bg-main]blue.jpg
deleted file mode 100644
index 9beb484f..00000000
Binary files a/game/themes/Fantasy/[bg-main]blue.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[bg-main]red.jpg b/game/themes/Fantasy/[bg-main]red.jpg
deleted file mode 100644
index b0f24510..00000000
Binary files a/game/themes/Fantasy/[bg-main]red.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[bg-main]violet.jpg b/game/themes/Fantasy/[bg-main]violet.jpg
deleted file mode 100644
index 33374acb..00000000
Binary files a/game/themes/Fantasy/[bg-main]violet.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]freestyle.png b/game/themes/Fantasy/[editsub]freestyle.png
deleted file mode 100644
index 4ea1dc29..00000000
Binary files a/game/themes/Fantasy/[editsub]freestyle.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]gold.png b/game/themes/Fantasy/[editsub]gold.png
deleted file mode 100644
index ed14a507..00000000
Binary files a/game/themes/Fantasy/[editsub]gold.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]next-seq.png b/game/themes/Fantasy/[editsub]next-seq.png
deleted file mode 100644
index ac91f35b..00000000
Binary files a/game/themes/Fantasy/[editsub]next-seq.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]play-note.png b/game/themes/Fantasy/[editsub]play-note.png
deleted file mode 100644
index dba67b21..00000000
Binary files a/game/themes/Fantasy/[editsub]play-note.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]play-with-note.png b/game/themes/Fantasy/[editsub]play-with-note.png
deleted file mode 100644
index 1ed7241a..00000000
Binary files a/game/themes/Fantasy/[editsub]play-with-note.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]play.png b/game/themes/Fantasy/[editsub]play.png
deleted file mode 100644
index bde99838..00000000
Binary files a/game/themes/Fantasy/[editsub]play.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]previous-seq.png b/game/themes/Fantasy/[editsub]previous-seq.png
deleted file mode 100644
index d0ef893f..00000000
Binary files a/game/themes/Fantasy/[editsub]previous-seq.png and /dev/null differ
diff --git a/game/themes/Fantasy/[editsub]undo.png b/game/themes/Fantasy/[editsub]undo.png
deleted file mode 100644
index 62d9da88..00000000
Binary files a/game/themes/Fantasy/[editsub]undo.png and /dev/null differ
diff --git a/game/themes/Fantasy/[effect]goldenNoteStar.png b/game/themes/Fantasy/[effect]goldenNoteStar.png
deleted file mode 100644
index 7bd6225f..00000000
Binary files a/game/themes/Fantasy/[effect]goldenNoteStar.png and /dev/null differ
diff --git a/game/themes/Fantasy/[effect]perfectNoteStar.png b/game/themes/Fantasy/[effect]perfectNoteStar.png
deleted file mode 100644
index 99132c39..00000000
Binary files a/game/themes/Fantasy/[effect]perfectNoteStar.png and /dev/null differ
diff --git a/game/themes/Fantasy/[helper]buttonFade2.png b/game/themes/Fantasy/[helper]buttonFade2.png
deleted file mode 100644
index c51465db..00000000
Binary files a/game/themes/Fantasy/[helper]buttonFade2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[helper]rectangle.jpg b/game/themes/Fantasy/[helper]rectangle.jpg
deleted file mode 100644
index 1521bdea..00000000
Binary files a/game/themes/Fantasy/[helper]rectangle.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]error.png b/game/themes/Fantasy/[icon]error.png
deleted file mode 100644
index f952f3fa..00000000
Binary files a/game/themes/Fantasy/[icon]error.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]main.png b/game/themes/Fantasy/[icon]main.png
deleted file mode 100644
index f7d50067..00000000
Binary files a/game/themes/Fantasy/[icon]main.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]options.png b/game/themes/Fantasy/[icon]options.png
deleted file mode 100644
index 9fac0bfd..00000000
Binary files a/game/themes/Fantasy/[icon]options.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]party.png b/game/themes/Fantasy/[icon]party.png
deleted file mode 100644
index e23230e3..00000000
Binary files a/game/themes/Fantasy/[icon]party.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]question.png b/game/themes/Fantasy/[icon]question.png
deleted file mode 100644
index a72a5c43..00000000
Binary files a/game/themes/Fantasy/[icon]question.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]score.png b/game/themes/Fantasy/[icon]score.png
deleted file mode 100644
index 012bde58..00000000
Binary files a/game/themes/Fantasy/[icon]score.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]stats.png b/game/themes/Fantasy/[icon]stats.png
deleted file mode 100644
index d8e5eac1..00000000
Binary files a/game/themes/Fantasy/[icon]stats.png and /dev/null differ
diff --git a/game/themes/Fantasy/[icon]video.png b/game/themes/Fantasy/[icon]video.png
deleted file mode 100644
index 9bd65f86..00000000
Binary files a/game/themes/Fantasy/[icon]video.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]cursor.png b/game/themes/Fantasy/[interface]cursor.png
deleted file mode 100644
index 7f377ef2..00000000
Binary files a/game/themes/Fantasy/[interface]cursor.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]cursor_pressed.png b/game/themes/Fantasy/[interface]cursor_pressed.png
deleted file mode 100644
index 7f377ef2..00000000
Binary files a/game/themes/Fantasy/[interface]cursor_pressed.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]dialog_background.png b/game/themes/Fantasy/[interface]dialog_background.png
deleted file mode 100644
index 2d222393..00000000
Binary files a/game/themes/Fantasy/[interface]dialog_background.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]dialog_background0.png b/game/themes/Fantasy/[interface]dialog_background0.png
deleted file mode 100644
index 38f4a67b..00000000
Binary files a/game/themes/Fantasy/[interface]dialog_background0.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]dialog_backgroundtop2.png b/game/themes/Fantasy/[interface]dialog_backgroundtop2.png
deleted file mode 100644
index a2b06ab1..00000000
Binary files a/game/themes/Fantasy/[interface]dialog_backgroundtop2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]select_arrow_left.png b/game/themes/Fantasy/[interface]select_arrow_left.png
deleted file mode 100644
index e4a32d2d..00000000
Binary files a/game/themes/Fantasy/[interface]select_arrow_left.png and /dev/null differ
diff --git a/game/themes/Fantasy/[interface]select_arrow_right.png b/game/themes/Fantasy/[interface]select_arrow_right.png
deleted file mode 100644
index b2a29793..00000000
Binary files a/game/themes/Fantasy/[interface]select_arrow_right.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]close.png b/game/themes/Fantasy/[jukebox]close.png
deleted file mode 100644
index 55770f12..00000000
Binary files a/game/themes/Fantasy/[jukebox]close.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]lyric.png b/game/themes/Fantasy/[jukebox]lyric.png
deleted file mode 100644
index 367ac5f9..00000000
Binary files a/game/themes/Fantasy/[jukebox]lyric.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]options.png b/game/themes/Fantasy/[jukebox]options.png
deleted file mode 100644
index 7c29663f..00000000
Binary files a/game/themes/Fantasy/[jukebox]options.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]pin.png b/game/themes/Fantasy/[jukebox]pin.png
deleted file mode 100644
index f5867e89..00000000
Binary files a/game/themes/Fantasy/[jukebox]pin.png and /dev/null differ
diff --git "a/game/themes/Fantasy/[jukebox]random - C\303\263pia.png" "b/game/themes/Fantasy/[jukebox]random - C\303\263pia.png"
deleted file mode 100644
index 698938d1..00000000
Binary files "a/game/themes/Fantasy/[jukebox]random - C\303\263pia.png" and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]random.png b/game/themes/Fantasy/[jukebox]random.png
deleted file mode 100644
index 30837235..00000000
Binary files a/game/themes/Fantasy/[jukebox]random.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]repeat.png b/game/themes/Fantasy/[jukebox]repeat.png
deleted file mode 100644
index 135f3792..00000000
Binary files a/game/themes/Fantasy/[jukebox]repeat.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songlistdown.png b/game/themes/Fantasy/[jukebox]songlistdown.png
deleted file mode 100644
index e467c935..00000000
Binary files a/game/themes/Fantasy/[jukebox]songlistdown.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songlistup.png b/game/themes/Fantasy/[jukebox]songlistup.png
deleted file mode 100644
index fd9d5ac9..00000000
Binary files a/game/themes/Fantasy/[jukebox]songlistup.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songmenunext.png b/game/themes/Fantasy/[jukebox]songmenunext.png
deleted file mode 100644
index 75576dbe..00000000
Binary files a/game/themes/Fantasy/[jukebox]songmenunext.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songmenuplaylist.png b/game/themes/Fantasy/[jukebox]songmenuplaylist.png
deleted file mode 100644
index ee8e5d1c..00000000
Binary files a/game/themes/Fantasy/[jukebox]songmenuplaylist.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songmenuplaypause.png b/game/themes/Fantasy/[jukebox]songmenuplaypause.png
deleted file mode 100644
index 660d849b..00000000
Binary files a/game/themes/Fantasy/[jukebox]songmenuplaypause.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songmenuprevious.png b/game/themes/Fantasy/[jukebox]songmenuprevious.png
deleted file mode 100644
index 9497515f..00000000
Binary files a/game/themes/Fantasy/[jukebox]songmenuprevious.png and /dev/null differ
diff --git a/game/themes/Fantasy/[jukebox]songoptions.png b/game/themes/Fantasy/[jukebox]songoptions.png
deleted file mode 100644
index 9b7c4c01..00000000
Binary files a/game/themes/Fantasy/[jukebox]songoptions.png and /dev/null differ
diff --git a/game/themes/Fantasy/[main]button2.png b/game/themes/Fantasy/[main]button2.png
deleted file mode 100644
index 64c165e1..00000000
Binary files a/game/themes/Fantasy/[main]button2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[main]songCover.jpg b/game/themes/Fantasy/[main]songCover.jpg
deleted file mode 100644
index 6708171c..00000000
Binary files a/game/themes/Fantasy/[main]songCover.jpg and /dev/null differ
diff --git a/game/themes/Fantasy/[menu]PopUpFg.png b/game/themes/Fantasy/[menu]PopUpFg.png
deleted file mode 100644
index 2c9785b4..00000000
Binary files a/game/themes/Fantasy/[menu]PopUpFg.png and /dev/null differ
diff --git a/game/themes/Fantasy/[menu]jumpToBg.png b/game/themes/Fantasy/[menu]jumpToBg.png
deleted file mode 100644
index 8e3a3a00..00000000
Binary files a/game/themes/Fantasy/[menu]jumpToBg.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP1.png b/game/themes/Fantasy/[name]noavatarP1.png
deleted file mode 100644
index 5699e37f..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP1.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP2.png b/game/themes/Fantasy/[name]noavatarP2.png
deleted file mode 100644
index 9639ab92..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP3.png b/game/themes/Fantasy/[name]noavatarP3.png
deleted file mode 100644
index 5962dad1..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP3.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP4.png b/game/themes/Fantasy/[name]noavatarP4.png
deleted file mode 100644
index 10a93956..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP4.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP5.png b/game/themes/Fantasy/[name]noavatarP5.png
deleted file mode 100644
index e6dbed2b..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP5.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]noavatarP6.png b/game/themes/Fantasy/[name]noavatarP6.png
deleted file mode 100644
index 72da72fa..00000000
Binary files a/game/themes/Fantasy/[name]noavatarP6.png and /dev/null differ
diff --git a/game/themes/Fantasy/[name]select.png b/game/themes/Fantasy/[name]select.png
deleted file mode 100644
index 031aafc9..00000000
Binary files a/game/themes/Fantasy/[name]select.png and /dev/null differ
diff --git a/game/themes/Fantasy/[party]scoreDecoration.png b/game/themes/Fantasy/[party]scoreDecoration.png
deleted file mode 100644
index d596ceef..00000000
Binary files a/game/themes/Fantasy/[party]scoreDecoration.png and /dev/null differ
diff --git a/game/themes/Fantasy/[party]winDecoration.png b/game/themes/Fantasy/[party]winDecoration.png
deleted file mode 100644
index b91afb22..00000000
Binary files a/game/themes/Fantasy/[party]winDecoration.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]frame.png b/game/themes/Fantasy/[score]frame.png
deleted file mode 100644
index 8c5f4477..00000000
Binary files a/game/themes/Fantasy/[score]frame.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_0.png b/game/themes/Fantasy/[score]rating_0.png
deleted file mode 100644
index 4af787bb..00000000
Binary files a/game/themes/Fantasy/[score]rating_0.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_1.png b/game/themes/Fantasy/[score]rating_1.png
deleted file mode 100644
index 99f740ba..00000000
Binary files a/game/themes/Fantasy/[score]rating_1.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_2.png b/game/themes/Fantasy/[score]rating_2.png
deleted file mode 100644
index e4089d25..00000000
Binary files a/game/themes/Fantasy/[score]rating_2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_3.png b/game/themes/Fantasy/[score]rating_3.png
deleted file mode 100644
index 98acace3..00000000
Binary files a/game/themes/Fantasy/[score]rating_3.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_4.png b/game/themes/Fantasy/[score]rating_4.png
deleted file mode 100644
index 50d31480..00000000
Binary files a/game/themes/Fantasy/[score]rating_4.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_5.png b/game/themes/Fantasy/[score]rating_5.png
deleted file mode 100644
index b4ce77cd..00000000
Binary files a/game/themes/Fantasy/[score]rating_5.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_6.png b/game/themes/Fantasy/[score]rating_6.png
deleted file mode 100644
index 97c94fb0..00000000
Binary files a/game/themes/Fantasy/[score]rating_6.png and /dev/null differ
diff --git a/game/themes/Fantasy/[score]rating_7.png b/game/themes/Fantasy/[score]rating_7.png
deleted file mode 100644
index 2fe1a0f0..00000000
Binary files a/game/themes/Fantasy/[score]rating_7.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player1]lyric_active.png b/game/themes/Fantasy/[sing.player1]lyric_active.png
deleted file mode 100644
index 089c8c5e..00000000
Binary files a/game/themes/Fantasy/[sing.player1]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player1]lyric_inactive.png b/game/themes/Fantasy/[sing.player1]lyric_inactive.png
deleted file mode 100644
index a349007d..00000000
Binary files a/game/themes/Fantasy/[sing.player1]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player2]lyric_active.png b/game/themes/Fantasy/[sing.player2]lyric_active.png
deleted file mode 100644
index 509767fa..00000000
Binary files a/game/themes/Fantasy/[sing.player2]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player2]lyric_inactive.png b/game/themes/Fantasy/[sing.player2]lyric_inactive.png
deleted file mode 100644
index ac40ec61..00000000
Binary files a/game/themes/Fantasy/[sing.player2]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player3]lyric_active.png b/game/themes/Fantasy/[sing.player3]lyric_active.png
deleted file mode 100644
index 7b130ac5..00000000
Binary files a/game/themes/Fantasy/[sing.player3]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player3]lyric_inactive.png b/game/themes/Fantasy/[sing.player3]lyric_inactive.png
deleted file mode 100644
index c5a00600..00000000
Binary files a/game/themes/Fantasy/[sing.player3]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player4]lyric_active.png b/game/themes/Fantasy/[sing.player4]lyric_active.png
deleted file mode 100644
index 993041fd..00000000
Binary files a/game/themes/Fantasy/[sing.player4]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player4]lyric_inactive.png b/game/themes/Fantasy/[sing.player4]lyric_inactive.png
deleted file mode 100644
index f09669b2..00000000
Binary files a/game/themes/Fantasy/[sing.player4]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player5]lyric_active.png b/game/themes/Fantasy/[sing.player5]lyric_active.png
deleted file mode 100644
index 631dc9c3..00000000
Binary files a/game/themes/Fantasy/[sing.player5]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player5]lyric_inactive.png b/game/themes/Fantasy/[sing.player5]lyric_inactive.png
deleted file mode 100644
index 716071e8..00000000
Binary files a/game/themes/Fantasy/[sing.player5]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player6]lyric_active.png b/game/themes/Fantasy/[sing.player6]lyric_active.png
deleted file mode 100644
index 65133d03..00000000
Binary files a/game/themes/Fantasy/[sing.player6]lyric_active.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing.player6]lyric_inactive.png b/game/themes/Fantasy/[sing.player6]lyric_inactive.png
deleted file mode 100644
index 0c5f34d3..00000000
Binary files a/game/themes/Fantasy/[sing.player6]lyric_inactive.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]lyricsHelpBar.png b/game/themes/Fantasy/[sing]lyricsHelpBar.png
deleted file mode 100644
index 3f6dcc42..00000000
Binary files a/game/themes/Fantasy/[sing]lyricsHelpBar.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesBgLeft.png b/game/themes/Fantasy/[sing]notesBgLeft.png
deleted file mode 100644
index 8075fce2..00000000
Binary files a/game/themes/Fantasy/[sing]notesBgLeft.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesBgMid.png b/game/themes/Fantasy/[sing]notesBgMid.png
deleted file mode 100644
index 7fd12fdc..00000000
Binary files a/game/themes/Fantasy/[sing]notesBgMid.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesBgRight.png b/game/themes/Fantasy/[sing]notesBgRight.png
deleted file mode 100644
index fd167b97..00000000
Binary files a/game/themes/Fantasy/[sing]notesBgRight.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesLeft.png b/game/themes/Fantasy/[sing]notesLeft.png
deleted file mode 100644
index ba07ab0d..00000000
Binary files a/game/themes/Fantasy/[sing]notesLeft.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesMid.png b/game/themes/Fantasy/[sing]notesMid.png
deleted file mode 100644
index be838fa5..00000000
Binary files a/game/themes/Fantasy/[sing]notesMid.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesPlainLeft.png b/game/themes/Fantasy/[sing]notesPlainLeft.png
deleted file mode 100644
index 4173b3a9..00000000
Binary files a/game/themes/Fantasy/[sing]notesPlainLeft.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesPlainMid.png b/game/themes/Fantasy/[sing]notesPlainMid.png
deleted file mode 100644
index 5d8ed85d..00000000
Binary files a/game/themes/Fantasy/[sing]notesPlainMid.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesPlainRight.png b/game/themes/Fantasy/[sing]notesPlainRight.png
deleted file mode 100644
index 1191b342..00000000
Binary files a/game/themes/Fantasy/[sing]notesPlainRight.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]notesRight.png b/game/themes/Fantasy/[sing]notesRight.png
deleted file mode 100644
index c596c212..00000000
Binary files a/game/themes/Fantasy/[sing]notesRight.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]pause.png b/game/themes/Fantasy/[sing]pause.png
deleted file mode 100644
index f5ab158c..00000000
Binary files a/game/themes/Fantasy/[sing]pause.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]textBar.png b/game/themes/Fantasy/[sing]textBar.png
deleted file mode 100644
index 00869fe9..00000000
Binary files a/game/themes/Fantasy/[sing]textBar.png and /dev/null differ
diff --git a/game/themes/Fantasy/[sing]timeBarBG.png b/game/themes/Fantasy/[sing]timeBarBG.png
deleted file mode 100644
index 2fcb261d..00000000
Binary files a/game/themes/Fantasy/[sing]timeBarBG.png and /dev/null differ
diff --git a/game/themes/Fantasy/[special]bar1.png b/game/themes/Fantasy/[special]bar1.png
deleted file mode 100644
index c51465db..00000000
Binary files a/game/themes/Fantasy/[special]bar1.png and /dev/null differ
diff --git a/game/themes/Fantasy/[special]bar2.png b/game/themes/Fantasy/[special]bar2.png
deleted file mode 100644
index c51465db..00000000
Binary files a/game/themes/Fantasy/[special]bar2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[stat]detailBG1.png b/game/themes/Fantasy/[stat]detailBG1.png
deleted file mode 100644
index 8abdcfec..00000000
Binary files a/game/themes/Fantasy/[stat]detailBG1.png and /dev/null differ
diff --git a/game/themes/Fantasy/[stat]mainBG1.png b/game/themes/Fantasy/[stat]mainBG1.png
deleted file mode 100644
index 3f5a4190..00000000
Binary files a/game/themes/Fantasy/[stat]mainBG1.png and /dev/null differ
diff --git a/game/themes/Fantasy/[stat]mainBG2.png b/game/themes/Fantasy/[stat]mainBG2.png
deleted file mode 100644
index b88ecaf8..00000000
Binary files a/game/themes/Fantasy/[stat]mainBG2.png and /dev/null differ
diff --git a/game/themes/Fantasy/[stat]mainBG3.png b/game/themes/Fantasy/[stat]mainBG3.png
deleted file mode 100644
index 28c39392..00000000
Binary files a/game/themes/Fantasy/[stat]mainBG3.png and /dev/null differ
diff --git a/game/themes/Party.ini b/game/themes/Party.ini
new file mode 100644
index 00000000..b41e2f47
--- /dev/null
+++ b/game/themes/Party.ini
@@ -0,0 +1,20768 @@
+
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+###################################
+
+[Theme]
+Name = Party
+Creator = Daniel20
+US_Version = USD 110
+DefaultSkin = Basic Violet
+
+[Colors]
+White = 255 255 255
+WhiteGray = 230 230 230
+LightBlue = 119 187 210
+DarkBlue = 28 126 171
+LightRed = 170 146 146
+DarkRed = 155 113 113
+LightGreen = 136 168 136
+DarkGreen = 106 152 104
+LightPurple = 155 136 168
+DarkPurple = 145 104 152
+LightOrange = 168 155 136
+DarkOrange = 151 131 76
+LightYellow = 168 168 136
+DarkYellow = 150 151 76
+Turkis = 13 186 167
+GrayLightest = 223 223 223
+GrayLight = 191 191 191
+Gray = 127 127 127
+GrayDark = 63 63 63
+Black = 0 0 0
+GrayPopup = 51 51 51
+Gold = 255 223 31
+Silver = 223 223 223
+Bronze = 205 127 50
+Red = 255 0 0
+Magenta = 215 0 111
+
+[Loading]
+[LoadingBackground]
+Tex = LoadingBG
+
+[LoadingText1]
+X = 780
+Y = 570
+Color = White
+Font = 1
+Align = 2
+Size = 24
+Text = SING_LOADING
+Reflection = 0
+ReflectionSpacing = 13
+
+[Main]
+[MainBackground]
+Tex = MainBG
+
+[MainTextDescriptionLong]
+X = 385
+Y = 550
+Color = White
+Font = 0
+Size = 0
+Align = 1
+Text =
+
+[MainButtonSolo]
+X = 25
+Y = 95
+W = 95
+H = 110
+Tex = ButtonSolo
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 100
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonSoloText1]
+X = 115
+Y = 40
+Font = 0
+Size = 33
+Align = 0
+Text = SING_SING_DESC
+Color = White
+
+[MainButtonMulti]
+X = 110
+Y = 235
+W = 93
+H = 110
+Tex = ButtonParty
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 100
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonMultiText1]
+X = 110
+Y = 40
+Font = 0
+Size = 33
+Align = 0
+Text = SING_MULTI_DESC
+Color = White
+
+[MainButtonJukebox]
+X = 210
+Y = 385
+W = 77
+H = 100
+Tex = ButtonJukebox
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 90
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonJukeboxText1]
+X = 220
+Y = 40
+Font = 0
+Size = 33
+Align = 1
+Text = SING_JUKEBOX_DESC
+Color = White
+
+[MainButtonStats]
+X = 570
+Y = 510
+W = 40
+H = 58
+Tex = ButtonStats
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 48
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonStatsText1]
+X = 20
+Y = 67
+Font = 0
+Size = 18
+Align = 1
+Text = SING_STATS
+Color = White
+
+[MainButtonOptions]
+X = 660
+Y = 510
+W = 40
+H = 58
+Tex = ButtonOption
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = -1
+Fade = 1
+FadeText = 1
+SelectH = 50
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonOptionsText1]
+X = 20
+Y = 67
+Font = 0
+Size = 18
+Align = 1
+Text = SING_OPTIONS
+Color = White
+
+[MainButtonExit]
+X = 740
+Y = 513
+W = 40
+H = 58
+Tex = ButtonExit
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 50
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonExitText1]
+X = 19
+Y = 65
+Font = 0
+Size = 18
+Align = 1
+Text = SING_EXIT
+Color = White
+
+[MainButtonAbout]
+X = 20
+Y = 525
+W = 38
+H = 48
+Tex = ButtonAbout
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+ReflectionSpacing = 0
+Fade = 1
+FadeText = 1
+SelectH = 38
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[MainButtonAboutText1]
+X = 20
+Y = 50
+Font = 0
+Size = 18
+Align = 1
+Text = SING_ABOUT
+Color = White
+
+
+[MainProgressSongsText]
+X = 380
+Y = 15
+Color = White
+Font = 0
+Size = 17
+Align = 1
+Z = 1
+
+[Name]
+Texts = 2
+
+[NameBackground]
+Tex = MainBG
+
+#write your name
+[NameStatic1]
+X = 30
+Y = 400
+W = 200
+H = 35
+Tex = MainBar
+Color =
+Type = Transparent
+
+#choose avatar
+#[NameStatic2]
+#X = 30
+#Y = 535
+#W = 200
+#H = 35
+#Tex = MainBar
+#Color =
+#Type = Transparent
+
+[NameText1]
+X = 30
+Y = 20
+Color = White
+Font = 0
+Size = 45
+Align = 0
+Text = SING_PLAYER_TITLE
+
+[NameText2]
+X = 50
+Y = 75
+Color = White
+Font = 1
+Size = 26
+Text = SING_PLAYER_READY
+
+[NameText3]
+X = 50
+Y = 350
+Color = White
+Font = 1
+Size = 26
+Align = 0
+Text = SING_PLAYER_EDIT
+
+[NameText4]
+X = 50
+Y = 405
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text = SING_PLAYER_NAME
+
+#[NameText5]
+#X = 50
+#Y = 540
+#Color = White
+#Font = 0
+#Size = 22
+#Align = 0
+#Text = SING_PLAYER_AVATAR
+
+[NameSelectPlayerCount]
+Text = SING_PLAYER_COUNT
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 30
+Y = 265
+W = 200
+H = 35
+Size=5
+SkipX = 30
+SBGW = 160
+Align = 0
+TextSize = 22
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+[NamePlayerSelectStatic1]
+X = 101
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic1Text]
+X = 133
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Z = 1
+
+[NamePlayerSelectStatic1Avatar]
+X = 108
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P1
+Type = Transparent
+
+[NamePlayerSelectStatic2]
+X = 202
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic2Text]
+X = 235
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Text = P2
+Z = 1
+
+[NamePlayerSelectStatic2Avatar]
+X = 209
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P2
+Type = Transparent
+
+[NamePlayerSelectStatic3]
+X = 312
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic3Text]
+X = 344
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Text = P3
+Z = 1
+
+[NamePlayerSelectStatic3Avatar]
+X = 319
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P3
+Type = Transparent
+
+[NamePlayerSelectStatic4]
+X = 418
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic4Text]
+X = 451
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Text = P4
+Z = 1
+
+[NamePlayerSelectStatic4Avatar]
+X = 425
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P4
+Type = Transparent
+
+[NamePlayerSelectStatic5]
+X = 524
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P5Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic5Text]
+X = 557
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Text = P5
+Z = 1
+
+[NamePlayerSelectStatic5Avatar]
+X = 531
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P5
+Type = Transparent
+
+[NamePlayerSelectStatic6]
+X = 630
+Y = 120
+W = 66
+H = 88
+Tex = AvatarFrame2
+Color = P6Dark
+Type = Colorized
+Z = 1
+
+[NamePlayerSelectStatic6Text]
+X = 662
+Y = 211
+Font = 1
+Size = 16
+Align = 1
+Color = White
+Text = P6
+Z = 1
+
+[NamePlayerSelectStatic6Avatar]
+X = 637
+Y = 127
+W = 51
+H = 72
+Z = 1
+Tex = NoAvatar_P6
+Type = Transparent
+
+[NamePlayerSelectCurrent]
+X = 0
+Y = 120
+W = 67
+H = 130
+Z = 0.95
+Tex = SelectFrame
+Color = ColorDark
+DColor = White
+Type = Transparent
+
+[NamePlayerAvatar]
+X = 560
+Y = 421
+W = 67
+H = 90
+Reflection = 0
+
+[NamePlayerButtonAvatar]
+X = 541
+Y = 403
+W = 107
+H = 124
+Tex = AvatarFrame
+Color = ColorDark
+DColor = ColorLight
+Type = Transparent
+
+[NamePlayerScrollAvatar]
+Count = 3
+Distance = 40
+
+[NamePlayerButtonName]
+X = 260
+Y = 400
+W = 160
+H = 35
+Z = 1
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+
+[NamePlayerButtonNameText1]
+X = 80
+Y = 5
+Font = 0
+Size = 22
+Align = 1
+Color = White
+
+[NameSelectPlayerColor]
+Text= SING_PLAYER_COLOR
+Tex = MainBar
+TexSBG = SelectBG
+Type = Transparent
+TypeSBG = Transparent
+X = 30
+Y = 445
+W = 200
+H = 35
+Size=5
+SkipX = 30
+SBGW = 160
+TextSize = 22
+DColor =
+Color =
+TColor = White
+TDColor = White
+SBGDColor = PlayerDark
+SBGColor = PlayerLight
+STColor = White
+STDColor = GrayDark
+
+[NameSelectPlayerLevel]
+Text = SING_PLAYER_LEVEL
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+Type = Transparent
+TypeSBG = Transparent
+X = 30
+Y = 490
+W = 200
+H = 35
+Size=5
+SkipX = 30
+SBGW = 160
+TextSize = 22
+DColor =
+Color =
+TColor = White
+TDColor = White
+SBGDColor = PlayerDark
+SBGColor = PlayerLight
+STColor = White
+STDColor = GrayDark
+
+#########################################
+##### S O N G S E L E C T I O N #####
+#########################################
+
+[SongMenu]
+
+[SongMenuBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.6
+
+[SongMenuStatic1]
+Tex = interface_dialog_backgroundtop
+X = 250
+Y = 0
+W = 300
+H = 210
+Z = 0.96
+Color = White
+Type = Transparent
+#Reflection = 1
+#ReflectionSpacing = 0
+
+[SongMenuStatic2]
+X = 258
+Y = 15
+W = 24
+H = 24
+Color = White
+Tex = icon_song_menu
+Type = Colorized
+Z = 0.97
+
+[SongMenuTextMenu]
+X = 288
+Y = 9
+Z = 0.97
+Color = ColorLight
+Size = 36
+Text = MENU
+
+[SongMenuButton1]
+X = 280
+Y = 58
+Z = 0.97
+W = 220
+H = 25
+Tex = Rectangle
+Color = ColorLight
+DColor = ColorDark
+Type = Colorized
+Texts = 1
+
+[SongMenuButton1Text1]
+X = 6
+Y = 0
+Z = 0.97
+Color = White
+Size = 24
+Text = SONG_MENU_PLAY
+
+# shows up instead of Button 1
+# in some song menus
+[SongMenuSelectSlide1]
+TexSBG = Rectangle
+Text =
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 280
+Y = 58
+W = 0
+H = 25
+Z = 0.97
+SkipX = 0
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SongMenuButton2]
+X = 280
+Y = 85
+Z = 0.97
+W = 220
+H = 25
+Tex = Rectangle
+Color = ColorLight
+DColor = ColorDark
+Type = Colorized
+Texts = 1
+
+[SongMenuButton2Text1]
+X = 6
+Y = 0
+Color = White
+Size = 24
+Text = SONG_MENU_EDIT
+Z = 0.97
+
+# shows up instead of Button 2
+# in some song menus
+[SongMenuSelectSlide2]
+TexSBG = Rectangle
+Text =
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 280
+Y = 85
+W = 0
+H = 25
+Z = 0.97
+SkipX = 0
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SongMenuButton3]
+X = 280
+Y = 115
+Z = 0.97
+W = 220
+H = 25
+Tex = Rectangle
+Color = ColorLight
+DColor = ColorDark
+Type = Colorized
+Texts = 1
+
+[SongMenuButton3Text1]
+X = 6
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = SONG_MENU_MODI
+Align = 0
+Z = 0.97
+
+# shows up instead of BUtton 3
+# in some song menus
+[SongMenuSelectSlide3]
+TexSBG = Rectangle
+Text =
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 280
+Y = 115
+W = 0
+H = 25
+Z = 0.97
+SkipX = 0
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SongMenuButton4]
+X = 280
+Y = 145
+Z = 0.97
+W = 220
+H = 25
+Tex = Rectangle
+Color = ColorLight
+DColor = ColorDark
+Type = Colorized
+Texts = 1
+
+[SongMenuButton4Text1]
+X = 6
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = SONG_MENU_CANCEL
+Align = 0
+Z = 0.97
+
+[SongMenuButton5]
+X = 280
+Y = 175
+Z = 0.97
+W = 220
+H = 25
+Tex = Rectangle
+Color = ColorLight
+DColor = ColorDark
+Type = Colorized
+Texts = 1
+
+[SongMenuButton5Text1]
+X = 6
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = SONG_MENU_CANCEL
+Align = 0
+Z = 0.97
+
+[SongJumpto]
+
+[SongJumptoBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.5
+
+[SongJumptoStatic1]
+X = 458
+Y = 20
+W = 24
+H = 24
+Color = White
+Tex = icon_song_search
+Type = Colorized
+Z = 0.97
+
+[SongJumptoText1]
+X = 488
+Y = 15
+Z = 0.97
+Color = ColorLight
+Size = 30
+Text = SONG_JUMPTO_TYPE_DESC
+
+[SongJumptoSelectSlideType]
+X = 455
+Y = -40
+Z = 0.97
+H = 30
+SBGW = 240
+SkipX = 0
+Size = 1
+oneItemOnly = 1
+showArrows = 1
+
+#text
+TColor = White
+TDColor = White
+#Select0r.Text.Color
+STColor = White
+STDColor = White
+
+[SongJumptoButtonSearchText]
+X = 475
+Y = 32
+Z = 0.97
+W = 290
+H = 50
+Size = 30
+Font = 1
+Align = 0
+Color = ColorLight
+
+#[SongJumptoTextFound]
+#X = 270
+#Y = 125
+#Color = White
+#Font = 0
+#Size = 20
+#Text = SONG_JUMPTO_HELP
+#Align = 0
+#Z = 0.97
+
+#####################
+### screen song ###
+#####################
+
+[SongRouletteStatic2PlayersDuetSingerP1]
+X = 35
+Y = 520
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongRouletteText2PlayersDuetSingerP1]
+X = 112
+Y = 525
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongRouletteStatic2PlayersDuetSingerP2]
+X = 35
+Y = 550
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongRouletteText2PlayersDuetSingerP2]
+X = 112
+Y = 555
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongRouletteStatic3PlayersDuetSingerP1]
+X = 35
+Y = 490
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongRouletteText3PlayersDuetSingerP1]
+X = 112
+Y = 495
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongRouletteStatic3PlayersDuetSingerP2]
+X = 35
+Y = 520
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongRouletteText3PlayersDuetSingerP2]
+X = 112
+Y = 525
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongRouletteStatic3PlayersDuetSingerP3]
+X = 35
+Y = 550
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongRouletteText3PlayersDuetSingerP3]
+X = 112
+Y = 555
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongRouletteStatic4PlayersDuetSingerP3]
+X = 50
+Y = 520
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongRouletteStatic4PlayersDuetSingerP4]
+X = 50
+Y = 550
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongRouletteStatic6PlayersDuetSingerP4]
+X = 50
+Y = 490
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongRouletteStatic6PlayersDuetSingerP5]
+X = 50
+Y = 520
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongRouletteStatic6PlayersDuetSingerP6]
+X = 50
+Y = 550
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+
+#####################
+
+[SongCarouselStatic2PlayersDuetSingerP1]
+X = 55
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongCarouselText2PlayersDuetSingerP1]
+X = 132
+Y = 505
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongCarouselStatic2PlayersDuetSingerP2]
+X = 55
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongCarouselText2PlayersDuetSingerP2]
+X = 132
+Y = 535
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongCarouselStatic3PlayersDuetSingerP1]
+X = 55
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongCarouselText3PlayersDuetSingerP1]
+X = 132
+Y = 505
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongCarouselStatic3PlayersDuetSingerP2]
+X = 55
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongCarouselText3PlayersDuetSingerP2]
+X = 132
+Y = 535
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongCarouselStatic3PlayersDuetSingerP3]
+X = 55
+Y = 560
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongCarouselText3PlayersDuetSingerP3]
+X = 132
+Y = 565
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongCarouselStatic4PlayersDuetSingerP3]
+X = 65
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongCarouselStatic4PlayersDuetSingerP4]
+X = 65
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongCarouselStatic6PlayersDuetSingerP4]
+X = 65
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongCarouselStatic6PlayersDuetSingerP5]
+X = 65
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongCarouselStatic6PlayersDuetSingerP6]
+X = 65
+Y = 560
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+##################################
+
+[SongSlotMachineStatic2PlayersDuetSingerP1]
+X = 295
+Y = 435
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongSlotMachineText2PlayersDuetSingerP1]
+X = 372
+Y = 440
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlotMachineStatic2PlayersDuetSingerP2]
+X = 295
+Y = 465
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlotMachineText2PlayersDuetSingerP2]
+X = 372
+Y = 470
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlotMachineStatic3PlayersDuetSingerP1]
+X = 295
+Y = 425
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongSlotMachineText3PlayersDuetSingerP1]
+X = 372
+Y = 430
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlotMachineStatic3PlayersDuetSingerP2]
+X = 295
+Y = 455
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlotMachineText3PlayersDuetSingerP2]
+X = 372
+Y = 460
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlotMachineStatic3PlayersDuetSingerP3]
+X = 295
+Y = 485
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlotMachineText3PlayersDuetSingerP3]
+X = 372
+Y = 490
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlotMachineStatic4PlayersDuetSingerP3]
+X = 305
+Y = 435
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongSlotMachineStatic4PlayersDuetSingerP4]
+X = 305
+Y = 465
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongSlotMachineStatic6PlayersDuetSingerP4]
+X = 305
+Y = 425
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongSlotMachineStatic6PlayersDuetSingerP5]
+X = 305
+Y = 455
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongSlotMachineStatic6PlayersDuetSingerP6]
+X = 305
+Y = 485
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+
+#############################
+
+[SongSlideStatic2PlayersDuetSingerP1]
+X = 55
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongSlideText2PlayersDuetSingerP1]
+X = 132
+Y = 505
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlideStatic2PlayersDuetSingerP2]
+X = 55
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlideText2PlayersDuetSingerP2]
+X = 132
+Y = 535
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlideStatic3PlayersDuetSingerP1]
+X = 55
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongSlideText3PlayersDuetSingerP1]
+X = 132
+Y = 505
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlideStatic3PlayersDuetSingerP2]
+X = 55
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlideText3PlayersDuetSingerP2]
+X = 132
+Y = 535
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlideStatic3PlayersDuetSingerP3]
+X = 55
+Y = 560
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongSlideText3PlayersDuetSingerP3]
+X = 132
+Y = 565
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongSlideStatic4PlayersDuetSingerP3]
+X = 65
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongSlideStatic4PlayersDuetSingerP4]
+X = 65
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongSlideStatic6PlayersDuetSingerP4]
+X = 65
+Y = 500
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongSlideStatic6PlayersDuetSingerP5]
+X = 65
+Y = 530
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongSlideStatic6PlayersDuetSingerP6]
+X = 65
+Y = 560
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+
+#############################
+
+[SongListStatic2PlayersDuetSingerP1]
+X = 555
+Y = 115
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongListText2PlayersDuetSingerP1]
+X = 660
+Y = 120
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongListStatic2PlayersDuetSingerP2]
+X = 555
+Y = 145
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongListText2PlayersDuetSingerP2]
+X = 660
+Y = 150
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongListStatic3PlayersDuetSingerP1]
+X = 555
+Y = 110
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongListText3PlayersDuetSingerP1]
+X = 660
+Y = 115
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongListStatic3PlayersDuetSingerP2]
+X = 555
+Y = 140
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongListText3PlayersDuetSingerP2]
+X = 660
+Y = 145
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongListStatic3PlayersDuetSingerP3]
+X = 555
+Y = 170
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongListText3PlayersDuetSingerP3]
+X = 660
+Y = 175
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongListStatic4PlayersDuetSingerP3]
+X = 567
+Y = 115
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongListStatic4PlayersDuetSingerP4]
+X = 567
+Y = 145
+W = 194
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongListStatic6PlayersDuetSingerP4]
+X = 567
+Y = 110
+W = 200
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongListStatic6PlayersDuetSingerP5]
+X = 567
+Y = 140
+W = 200
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongListStatic6PlayersDuetSingerP6]
+X = 567
+Y = 170
+W = 200
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+#############################
+
+[SongChessboardStatic2PlayersDuetSingerP1]
+X = 30
+Y = 475
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongChessboardText2PlayersDuetSingerP1]
+X = 107
+Y = 480
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongChessboardStatic2PlayersDuetSingerP2]
+X = 30
+Y = 505
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongChessboardText2PlayersDuetSingerP2]
+X = 107
+Y = 510
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongChessboardStatic3PlayersDuetSingerP1]
+X = 30
+Y = 475
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongChessboardText3PlayersDuetSingerP1]
+X = 107
+Y = 480
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongChessboardStatic3PlayersDuetSingerP2]
+X = 30
+Y = 505
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongChessboardText3PlayersDuetSingerP2]
+X = 107
+Y = 510
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongChessboardStatic3PlayersDuetSingerP3]
+X = 30
+Y = 535
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongChessboardText3PlayersDuetSingerP3]
+X = 107
+Y = 540
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongChessboardStatic4PlayersDuetSingerP3]
+X = 40
+Y = 475
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongChessboardStatic4PlayersDuetSingerP4]
+X = 40
+Y = 505
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongChessboardStatic6PlayersDuetSingerP4]
+X = 40
+Y = 475
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongChessboardStatic6PlayersDuetSingerP5]
+X = 40
+Y = 505
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongChessboardStatic6PlayersDuetSingerP6]
+X = 40
+Y = 535
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+#############################
+
+[SongMosaicStatic2PlayersDuetSingerP1]
+X = 565
+Y = 135
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongMosaicText2PlayersDuetSingerP1]
+X = 642
+Y = 140
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongMosaicStatic2PlayersDuetSingerP2]
+X = 565
+Y = 165
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongMosaicText2PlayersDuetSingerP2]
+X = 642
+Y = 170
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongMosaicStatic3PlayersDuetSingerP1]
+X = 565
+Y = 120
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P1Dark
+Tex = SongDuetSinger
+
+[SongMosaicText3PlayersDuetSingerP1]
+X = 642
+Y = 125
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongMosaicStatic3PlayersDuetSingerP2]
+X = 565
+Y = 150
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P2Dark
+Tex = SongDuetSinger3
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongMosaicText3PlayersDuetSingerP2]
+X = 642
+Y = 155
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongMosaicStatic3PlayersDuetSingerP3]
+X = 565
+Y = 180
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger2
+Reflection = 1
+ReflectionSpacing = 1
+
+[SongMosaicText3PlayersDuetSingerP3]
+X = 642
+Y = 185
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[SongMosaicStatic4PlayersDuetSingerP3]
+X = 575
+Y = 135
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P3Dark
+Tex = SongDuetSinger
+
+[SongMosaicStatic4PlayersDuetSingerP4]
+X = 575
+Y = 165
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger2
+
+[SongMosaicStatic6PlayersDuetSingerP4]
+X = 575
+Y = 120
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P4Dark
+Tex = SongDuetSinger
+
+[SongMosaicStatic6PlayersDuetSingerP5]
+X = 575
+Y = 150
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P5Dark
+Tex = SongDuetSinger3
+
+[SongMosaicStatic6PlayersDuetSingerP6]
+X = 575
+Y = 180
+W = 154
+H = 30
+Z = 0.95
+Type = Transparent
+Color = P6Dark
+Tex = SongDuetSinger2
+
+########################################################################################
+##### #####
+##### Roulette #####
+##### #####
+########################################################################################
+
+[SongRoulette]
+
+[SongRouletteBackground]
+Tex = SongBG
+
+
+
+[SongRouletteCover]
+X = 300
+Y = 150
+W = 200
+H = 150
+Reflections = 1
+
+[SongRouletteEqualizer]
+Visible = 1
+Direction = 1
+Color = White
+Alpha = 1
+X = 265
+Y = 476
+PieceW = 4
+PieceH = 4
+Space = 1
+Bands = 5
+Length = 15
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongRouletteMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteCalculatedMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteVideoIcon]
+X = 310
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteDuetIcon]
+X = 335
+Y = 475
+W = 20
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongRouletteStatic1]
+X = 278
+Y = 100
+W = 244
+H = 200
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection1
+Type = Colorized
+
+[SongRouletteStatic2]
+X = 300
+Y = 300
+W = 200
+H = 210
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection2
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongRouletteTextArtist]
+X = 400
+Y = 318
+W = 190
+Color = White
+Font = 1
+Size = 24
+Align = 1
+Text =
+
+[SongRouletteTextTitle]
+X = 400
+Y = 384
+W = 190
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Text =
+
+[SongRouletteTextNumber]
+X = 495
+Y = 480
+Z = 0.95
+Color = White
+Size = 16
+Align = 2
+Reflection = 0
+ReflectionSpacing = 21
+
+[SongRouletteTextYear]
+X = 400
+Y = 477
+Z = 0.95
+Color = White
+Size = 20
+Align = 1
+
+########## LEGEND ROULETTE #########
+
+[SongRouletteStaticNonParty1]
+X = 527
+Y = 405
+Z = 0.95
+W = 163
+H = 107
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongRouletteTextNonParty1]
+X = 606
+Y = 410
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongRouletteStaticNonParty2]
+X = 541
+Y = 430
+Z = 1
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongRouletteTextNonParty2]
+X = 570
+Y = 432
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongRouletteStaticNonParty3]
+X = 540
+Y = 450
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongRouletteTextNonParty3]
+X = 570
+Y = 452
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongRouletteStaticNonParty4]
+X = 540
+Y = 470
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongRouletteTextNonParty4]
+X = 570
+Y = 472
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongRouletteStaticNonParty5]
+X = 540
+Y = 490
+Z = 0.952
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongRouletteTextNonParty5]
+X = 570
+Y = 492
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+
+#[SongRouletteTextScore]
+#X = 130
+#Y = 450
+#Color = ColorLight
+#Font = 0
+#Size = 24
+#Align = 0
+
+[SongRouletteTextMaxScore]
+X = 30
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongRouletteTextMediaScore]
+X = 30
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongRouletteTextMaxScore2]
+X = 170
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongRouletteTextMediaScore2]
+X = 170
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongRouletteTextScoreUser]
+X = 170
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongRouletteTextMaxScoreLocal]
+X = 180
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongRouletteTextMediaScoreLocal]
+X = 180
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongRouletteTextScoreUserLocal]
+X = 180
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongRouletteTextNonParty6]
+X = 30
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+# Menu opens with [M]
+[SongRouletteStaticNonParty6]
+X = 255
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongRouletteTextNonParty7]
+X = 287
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongRouletteStaticNonParty7]
+X = 375
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongRouletteTextNonParty8]
+X = 407
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongRouletteStaticNonParty8]
+X = 580
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongRouletteTextNonParty9]
+X = 612
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+
+# NAVBAR for party
+# enter a number
+[SongRouletteStaticParty1]
+X = 200
+Y = 545
+Z = 0.952
+W = 26
+H = 30
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongRouletteTextParty1]
+X = 230
+Y = 547
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 0
+ReflectionSpacing = 13
+
+# menu
+[SongRouletteStaticParty2]
+X = 390
+Y = 545
+Z = 0.952
+W = 26
+H = 30
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongRouletteTextParty2]
+X = 420
+Y = 547
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongRouletteTextParty3]
+X = 70
+Y = 5
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[SongRouletteTextParty3]
+X = 238
+Y = 548
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_SONG_WHEREAMI
+#variable statics end
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongRouletteStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongRouletteTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongRouletteInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongRouletteInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongRouletteTextMedleyMax]
+N = 3
+
+[SongRouletteTextMedleyNumber1]
+X=27
+Y=375
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongRouletteTextMedleyArtist1]
+X=50
+Y=366
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongRouletteTextMedleyTitle1]
+X=50
+Y=383
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongRouletteTextMedleyNumber2]
+X=27
+Y=420
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongRouletteTextMedleyArtist2]
+X=50
+Y=411
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongRouletteTextMedleyTitle2]
+X=50
+Y=428
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongRouletteTextMedleyNumber3]
+X=27
+Y=465
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongRouletteTextMedleyArtist3]
+X=50
+Y=454
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongRouletteTextMedleyTitle3]
+X=50
+Y=471
+Color=White
+Font=0
+Size=20
+Align=0
+
+
+
+[SongRouletteStaticMedley1]
+Tex = PlayerNumberBox
+X = 15
+Y = 370
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongRouletteStaticMedley2]
+Tex = PlayerNumberBox
+X = 15
+Y = 415
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongRouletteStaticMedley3]
+Tex = PlayerNumberBox
+X = 15
+Y = 460
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+
+
+########################################################################################
+##### #####
+##### Chessboard #####
+##### #####
+########################################################################################
+
+[SongChessboard]
+
+[SongChessboardBackground]
+Tex = SongBG
+
+[SongChessboardStatic1]
+X = 750
+Y = 189
+W = 35
+H = 46
+Z = 0.4
+Tex = SongSelection1up
+Color = ColorLight
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardStatic2]
+X = 750
+Y = 333
+W = 35
+H = 46
+Z = 0.951
+Tex = SongSelection1dn
+Color = ColorLight
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardCover]
+X = 240
+Y = 100
+W = 80
+H = 90
+SelectX = 10
+SelectY = 100
+SelectW = 195
+SelectH = 170
+ZoomThumbW = 100
+ZoomThumbH = 120
+ZoomThumbStyle = 0
+Rows = 4
+Cols = 6
+Padding = 2
+Reflections = 0
+Tex = PlayerNumberBox
+
+[SongChessboardEqualizer]
+Visible = 0
+Direction = 1
+Color = White
+Alpha = 1
+X = 745
+Y = 570
+PieceW = 4
+PieceH = 4
+Space = 1
+Bands = 8
+Length = 30
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongChessboardMedleyIcon]
+X = 40
+Y = 433
+W = 28
+H = 18
+Z = 0.95
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongChessboardCalculatedMedleyIcon]
+X = 40
+Y = 433
+W = 28
+H = 18
+Z = 0.95
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongChessboardVideoIcon]
+X = 18
+Y = 430
+W = 16
+H = 23
+Z = 0.95
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongChessboardDuetIcon]
+X = 40
+Y = 430
+W = 18
+H = 22
+Z = 0.95
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongChessboardRapIcon]
+X = 123
+Y = 430
+W = 18
+H = 24
+Z = 0.95
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongChessboardStatic3]
+X = 10
+Y = 270
+W = 195
+H = 195
+Z = 0.10
+Color = ColorLight
+alpha = 0.45
+Tex = SongSelection2
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardTextArtist]
+X = 105
+Y = 292
+W = 180
+Color = White
+Font = 1
+Size = 21
+Align = 1
+Text =
+
+[SongChessboardTextTitle]
+X = 105
+Y = 355
+W = 180
+Color = White
+Font = 0
+Size = 21
+Align = 1
+Text =
+
+[SongChessboardTextNumber]
+X = 195
+Y = 435
+Z = 0.95
+Color = White
+Size = 15
+Align = 2
+Reflection = 0
+ReflectionSpacing = 21
+
+[SongChessboardTextYear]
+X = 105
+Y = 431
+Z = 0.95
+Color = White
+Size = 18
+Align = 1
+
+
+#################
+#### Legend ####
+#################
+
+[SongChessboardStaticNonParty1]
+X = 567
+Y = 485
+W = 163
+H = 107
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongChessboardTextNonParty1]
+X = 646
+Y = 490
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongChessboardStaticNonParty2]
+X = 581
+Y = 510
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongChessboardTextNonParty2]
+X = 610
+Y = 512
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongChessboardStaticNonParty3]
+X = 580
+Y = 530
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongChessboardTextNonParty3]
+X = 610
+Y = 532
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongChessboardStaticNonParty4]
+X = 580
+Y = 550
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongChessboardTextNonParty4]
+X = 610
+Y = 552
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongChessboardStaticNonParty5]
+X = 580
+Y = 570
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongChessboardTextNonParty5]
+X = 610
+Y = 572
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+[SongChessboardTextScore]
+X = 30
+Y = 410
+Color = White
+Font = 1
+Size = 24
+Align = 0
+
+[SongChessboardTextMaxScore]
+X = 15
+Y = 488
+Color = White
+Font = 0
+Size = 20
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongChessboardTextMediaScore]
+X = 15
+Y = 528
+Color = White
+Font = 0
+Size = 20
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongChessboardTextMaxScore2]
+X = 110
+Y = 488
+Color = White
+Font = 0
+Size = 20
+Align = 2
+
+[SongChessboardTextMediaScore2]
+X = 110
+Y = 528
+Color = White
+Font = 0
+Size = 20
+Align = 2
+
+[SongChessboardTextScoreUser]
+X = 70
+Y = 506
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongChessboardTextMaxScoreLocal]
+X = 85
+Y = 488
+Color = White
+Font = 0
+Size = 20
+Align = 0
+
+[SongChessboardTextMediaScoreLocal]
+X = 85
+Y = 528
+Color = White
+Font = 0
+Size = 20
+Align = 0
+
+[SongChessboardTextScoreUserLocal]
+X = 85
+Y = 506
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongChessboardTextNonParty6]
+X = 30
+Y = 15
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+
+# Menu opens with [M]
+[SongChessboardStaticNonParty6]
+X = 200
+Y = 560
+W = 28
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardTextNonParty7]
+X = 237
+Y = 562
+Z = 0.952
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongChessboardStaticNonParty7]
+X = 295
+Y = 560
+W = 28
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardTextNonParty8]
+X = 331
+Y = 562
+Z = 0.952
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongChessboardStaticNonParty8]
+X = 465
+Y = 560
+W = 28
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongChessboardTextNonParty9]
+X = 501
+Y = 562
+Z = 0.952
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+# NAVBAR for party
+# enter a number
+[SongChessboardStaticParty1]
+X = 232
+Y = 561
+Z = 0.952
+W = 26
+H = 28
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongChessboardTextParty1]
+X = 262
+Y = 562
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 0
+ReflectionSpacing = 13
+
+# menu
+[SongChessboardStaticParty2]
+X = 410
+Y = 561
+Z = 0.952
+W = 26
+H = 28
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongChessboardTextParty2]
+X = 440
+Y = 562
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongChessboardTextParty3]
+X = 30
+Y = 15
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongChessboardStaticTeam1Joker1]
+Tex = Joker
+X = 565
+Y = 489
+W = 25
+H = 28
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam1Joker2]
+Tex = Joker
+X = 600
+Y = 489
+W = 25
+H = 28
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam1Joker3]
+Tex = Joker
+X = 635
+Y = 489
+W = 25
+H = 28
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam1Joker4]
+Tex = Joker
+X = 670
+Y = 489
+W = 25
+H = 28
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 489
+W = 25
+H = 28
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam2Joker1]
+Tex = Joker
+X = 565
+Y = 526
+W = 25
+H = 28
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam2Joker2]
+Tex = Joker
+X = 600
+Y = 526
+W = 25
+H = 28
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam2Joker3]
+Tex = Joker
+X = 635
+Y = 526
+W = 25
+H = 28
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam2Joker4]
+Tex = Joker
+X = 670
+Y = 526
+W = 25
+H = 28
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 526
+W = 25
+H = 28
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam3Joker1]
+Tex = Joker
+X = 565
+Y = 561
+W = 25
+H = 28
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam3Joker2]
+Tex = Joker
+X = 600
+Y = 561
+W = 25
+H = 28
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam3Joker3]
+Tex = Joker
+X = 635
+Y = 561
+W = 25
+H = 28
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam3Joker4]
+Tex = Joker
+X = 670
+Y = 561
+W = 25
+H = 28
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 561
+W = 25
+H = 28
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongChessboardTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongChessboardInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongChessboardInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongChessboardTextMedleyMax]
+N = 2
+
+[SongChessboardTextMedleyNumber1]
+X=215
+Y=485
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongChessboardTextMedleyArtist1]
+X=237
+Y=480
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongChessboardTextMedleyTitle1]
+X=237
+Y=495
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongChessboardTextMedleyNumber2]
+X=215
+Y=525
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongChessboardTextMedleyArtist2]
+X=237
+Y=515
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongChessboardTextMedleyTitle2]
+X=237
+Y=530
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongChessboardStaticMedley1]
+Tex = PlayerNumberBox
+X = 203
+Y = 480
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongChessboardStaticMedley2]
+Tex = PlayerNumberBox
+X = 203
+Y = 520
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+
+########################################################################################
+##### #####
+##### Carousel #####
+##### #####
+########################################################################################
+
+[SongCarousel]
+
+[SongCarouselBackground]
+Tex = SongBG
+
+
+[SongCarouselCover]
+X = 300
+Y = 120
+W = 200
+H = 200
+Padding = 60
+Reflections = 1
+
+[SongCarouselEqualizer]
+Visible = 1
+Direction = 1
+Color = White
+Alpha = 1
+X = 265
+Y = 500
+PieceW = 4
+PieceH = 4
+Space = 1
+Bands = 5
+Length = 15
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongCarouselMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongCarouselCalculatedMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongCarouselVideoIcon]
+X = 310
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongCarouselDuetIcon]
+X = 335
+Y = 475
+W = 20
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongCarouselRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongCarouselStatic1]
+X = 278
+Y = 120
+W = 244
+H = 200
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection1
+Type = Colorized
+
+[SongCarouselStatic2]
+X = 300
+Y = 320
+W = 200
+H = 190
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection2
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongCarouselTextArtist]
+X = 400
+Y = 328
+W = 190
+Color = White
+Font = 1
+Size = 24
+Align = 1
+Text =
+
+[SongCarouselTextTitle]
+X = 400
+Y = 394
+W = 190
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Text =
+
+[SongCarouselTextNumber]
+X = 495
+Y = 480
+Z = 0.95
+Color = White
+Size = 16
+Align = 2
+Reflection = 0
+ReflectionSpacing = 21
+
+[SongCarouselTextYear]
+X = 400
+Y = 477
+Z = 0.95
+Color = White
+Size = 20
+Align = 1
+
+########## LEGEND CAROUSEL #########
+
+[SongCarouselStaticNonParty3]
+X = 582
+Y = 405
+Z = 0.95
+W = 163
+H = 107
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongCarouselTextNonParty5]
+X = 661
+Y = 410
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongCarouselStaticNonParty4]
+X = 596
+Y = 430
+Z = 0.952
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongCarouselTextNonParty6]
+X = 625
+Y = 432
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongCarouselStaticNonParty5]
+X = 595
+Y = 450
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongCarouselTextNonParty7]
+X = 625
+Y = 452
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongCarouselStaticNonParty6]
+X = 595
+Y = 470
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongCarouselTextNonParty8]
+X = 625
+Y = 472
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongCarouselStaticNonParty7]
+X = 595
+Y = 490
+Z = 0.952
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongCarouselTextNonParty9]
+X = 625
+Y = 492
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+[SongCarouselTextMaxScore]
+X = 30
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongCarouselTextMediaScore]
+X = 30
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongCarouselTextMaxScore2]
+X = 170
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongCarouselTextMediaScore2]
+X = 170
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongCarouselTextScoreUser]
+X = 170
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongCarouselTextMaxScoreLocal]
+X = 180
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongCarouselTextMediaScoreLocal]
+X = 180
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongCarouselTextScoreUserLocal]
+X = 180
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongCarouselTextNonParty1]
+X = 30
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+# Menu opens with [M]
+[SongCarouselStaticNonParty1]
+X = 255
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongCarouselTextNonParty2]
+X = 287
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongCarouselStaticNonParty2]
+X = 375
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongCarouselTextNonParty3]
+X = 407
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongCarouselStaticNonParty8]
+X = 580
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongCarouselTextNonParty4]
+X = 612
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+# NAVBAR for party
+# enter a number
+[SongCarouselStaticParty1]
+X = 245
+Y = 555
+Z = 0.952
+W = 25
+H = 28
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongCarouselTextParty1]
+X = 278
+Y = 555
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 0
+ReflectionSpacing = 13
+
+# menu
+[SongCarouselStaticParty2]
+X = 420
+Y = 555
+Z = 0.952
+W = 25
+H = 28
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongCarouselTextParty2]
+X = 448
+Y = 555
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongCarouselTextParty3]
+X = 30
+Y = 30
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongCarouselStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongCarouselTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongCarouselInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongCarouselInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongCarouselTextMedleyMax]
+N = 3
+
+[SongCarouselTextMedleyNumber1]
+X=27
+Y=375
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongCarouselTextMedleyArtist1]
+X=50
+Y=366
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongCarouselTextMedleyTitle1]
+X=50
+Y=383
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongCarouselTextMedleyNumber2]
+X=27
+Y=420
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongCarouselTextMedleyArtist2]
+X=50
+Y=411
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongCarouselTextMedleyTitle2]
+X=50
+Y=428
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongCarouselTextMedleyNumber3]
+X=27
+Y=465
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongCarouselTextMedleyArtist3]
+X=50
+Y=454
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongCarouselTextMedleyTitle3]
+X=50
+Y=471
+Color=White
+Font=0
+Size=20
+Align=0
+
+
+[SongCarouselStaticMedley1]
+Tex = PlayerNumberBox
+X = 15
+Y = 370
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongCarouselStaticMedley2]
+Tex = PlayerNumberBox
+X = 15
+Y = 415
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongCarouselStaticMedley3]
+Tex = PlayerNumberBox
+X = 15
+Y = 460
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+########################################################################################
+##### #####
+##### SlotMachine #####
+##### #####
+########################################################################################
+
+[SongSlotMachine]
+
+[SongSlotMachineBackground]
+Tex = SongBG
+
+[SongSlotMachineCover]
+X = 60
+Y = 190
+W = 325
+H = 200
+
+[SongSlotMachineEqualizer]
+Visible = 1
+Direction = 1
+Color = White
+Alpha = 1
+X = 580
+Y = 380
+PieceW = 3
+PieceH = 3
+Space = 1
+Bands = 30
+Length = 15
+
+[SongSlotMachineMedleyIcon]
+X = 315
+Y = 352
+W = 36
+H = 26
+Z = 0.95
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+
+[SongSlotMachineCalculatedMedleyIcon]
+X = 315
+Y = 352
+W = 36
+H = 26
+Z = 0.952
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+
+[SongSlotMachineVideoIcon]
+X = 280
+Y = 350
+W = 26
+H = 30
+Z = 0.952
+Color = White
+Tex = icon_song_video
+Type = Transparent
+
+[SongSlotMachineDuetIcon]
+X = 315
+Y = 350
+W = 25
+H = 30
+Z = 0.952
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+
+[SongSlotMachineRapIcon]
+X = 357
+Y = 350
+W = 25
+H = 30
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+
+[SongSlotMachineStatic1]
+X = 260
+Y = 190
+W = 460
+H = 200
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection3
+Type = Colorized
+
+[SongSlotMachineTextArtist]
+X = 280
+Y = 210
+W = 420
+Color = White
+Font = 1
+Size = 40
+Align = 0
+Text =
+
+[SongSlotMachineTextTitle]
+X = 280
+Y = 280
+W = 420
+Color = White
+Font = 0
+Size = 36
+Align = 0
+Text =
+
+[SongSlotMachineTextNumber]
+X = 705
+Y = 200
+Z = 0.95
+Color = White
+Size = 22
+Align = 2
+
+[SongSlotMachineTextYear]
+X = 460
+Y = 350
+Z = 0.95
+Color = White
+Size = 28
+Align = 1
+
+########## LEGEND SLOT MACHINE #########
+
+[SongSlotMachineStaticNonParty1]
+X = 555
+Y = 415
+W = 163
+H = 107
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextNonParty1]
+X = 635
+Y = 420
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongSlotMachineStaticNonParty2]
+X = 566
+Y = 438
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongSlotMachineTextNonParty2]
+X = 595
+Y = 442
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongSlotMachineStaticNonParty3]
+X = 565
+Y = 460
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextNonParty3]
+X = 595
+Y = 462
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongSlotMachineStaticNonParty4]
+X = 565
+Y = 480
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextNonParty4]
+X = 595
+Y = 482
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongSlotMachineStaticNonParty5]
+X = 565
+Y = 500
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextNonParty5]
+X = 595
+Y = 502
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+[SongSlotMachineTextScore]
+X = 290
+Y = 420
+Color = ColorLight
+Font = 0
+Size = 24
+Align = 0
+
+[SongSlotMachineTextMaxScore]
+X = 290
+Y = 450
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongSlotMachineTextMediaScore]
+X = 290
+Y = 490
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongSlotMachineTextMaxScore2]
+X = 430
+Y = 450
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongSlotMachineTextMediaScore2]
+X = 430
+Y = 490
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongSlotMachineTextScoreUser]
+X = 430
+Y = 468
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongSlotMachineTextMaxScoreLocal]
+X = 440
+Y = 450
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongSlotMachineTextMediaScoreLocal]
+X = 440
+Y = 490
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongSlotMachineTextScoreUserLocal]
+X = 440
+Y = 468
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongSlotMachineTextNonParty6]
+X = 30
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+
+# Menu opens with [M]
+[SongSlotMachineStaticNonParty6]
+X = 340
+Y = 545
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongSlotMachineTextNonParty7]
+X = 370
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongSlotMachineStaticNonParty7]
+X = 440
+Y = 545
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongSlotMachineTextNonParty8]
+X = 470
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 1
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongSlotMachineStaticNonParty8]
+X = 630
+Y = 545
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongSlotMachineTextNonParty9]
+X = 660
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 1
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+# NAVBAR for party
+# enter a number
+[SongSlotMachineStaticParty1]
+X = 245
+Y = 555
+Z = 0.952
+W = 25
+H = 28
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextParty1]
+X = 278
+Y = 555
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 0
+ReflectionSpacing = 13
+
+# menu
+[SongSlotMachineStaticParty2]
+X = 420
+Y = 555
+Z = 0.952
+W = 25
+H = 28
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongSlotMachineTextParty2]
+X = 448
+Y = 555
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongSlotMachineTextParty3]
+X = 30
+Y = 30
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongSlotMachineStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 35
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 35
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 35
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlotMachineTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongSlotMachineInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongSlotMachineInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongSlotMachineTextMedleyMax]
+N = 3
+
+[SongSlotMachineTextMedleyNumber1]
+X=275
+Y=79
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlotMachineTextMedleyArtist1]
+X=295
+Y=72
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineTextMedleyTitle1]
+X=295
+Y=86
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineTextMedleyNumber2]
+X=275
+Y=115
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlotMachineTextMedleyArtist2]
+X=295
+Y=107
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineTextMedleyTitle2]
+X=295
+Y=122
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineTextMedleyNumber3]
+X=275
+Y=151
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlotMachineTextMedleyArtist3]
+X=295
+Y=141
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineTextMedleyTitle3]
+X=295
+Y=156
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlotMachineStaticMedley1]
+Tex = PlayerNumberBox
+X = 263
+Y = 74
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongSlotMachineStaticMedley2]
+Tex = PlayerNumberBox
+X = 263
+Y = 110
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongSlotMachineStaticMedley3]
+Tex = PlayerNumberBox
+X = 263
+Y = 146
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+########################################################################################
+##### #####
+##### Slide #####
+##### #####
+########################################################################################
+
+[SongSlide]
+
+[SongSlideBackground]
+Tex = SongBG
+
+[SongSlideCover]
+X = 300
+Y = 120
+W = 200
+H = 200
+Padding = 120
+Reflections = 1
+ReflectionSpacing = 10
+
+[SongSlideEqualizer]
+Visible = 1
+Direction = 1
+Color = White
+Alpha = 1
+X = 265
+Y = 500
+PieceW = 4
+PieceH = 4
+Space = 1
+Bands = 5
+Length = 15
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongSlideMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongSlideCalculatedMedleyIcon]
+X = 335
+Y = 477
+W = 30
+H = 20
+Z = 0.952
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongSlideVideoIcon]
+X = 310
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongSlideDuetIcon]
+X = 490
+Y = 475
+W = 20
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongSlideRapIcon]
+X = 420
+Y = 475
+W = 18
+H = 24
+Z = 0.952
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 22
+
+[SongSlideStatic1]
+X = 278
+Y = 120
+W = 244
+H = 200
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection1
+Type = Colorized
+
+[SongSlideStatic2]
+X = 300
+Y = 320
+W = 200
+H = 190
+Z = 0.95
+Color = ColorLight
+Tex = SongSelection2
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongSlideTextArtist]
+X = 400
+Y = 328
+W = 190
+Color = White
+Font = 1
+Size = 24
+Align = 1
+Text =
+
+[SongSlideTextTitle]
+X = 400
+Y = 394
+W = 190
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Text =
+
+[SongSlideTextNumber]
+X = 495
+Y = 480
+Z = 0.95
+Color = White
+Size = 16
+Align = 2
+Reflection = 0
+ReflectionSpacing = 21
+
+[SongSlideTextYear]
+X = 400
+Y = 477
+Z = 0.95
+Color = White
+Size = 20
+Align = 1
+
+########## LEGEND SLIDE #########
+
+[SongSlideStatic3]
+X = 582
+Y = 405
+Z = 0.95
+W = 163
+H = 107
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongSlideTextNonParty5]
+X = 661
+Y = 410
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongSlideStatic4]
+X = 596
+Y = 430
+Z = 0.952
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongSlideTextNonParty6]
+X = 625
+Y = 432
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongSlideStatic5]
+X = 595
+Y = 450
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongSlideTextNonParty7]
+X = 625
+Y = 452
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongSlideStatic6]
+X = 595
+Y = 470
+Z = 0.952
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongSlideTextNonParty8]
+X = 625
+Y = 472
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongSlideStatic7]
+X = 595
+Y = 490
+Z = 0.952
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongSlideTextNonParty9]
+X = 625
+Y = 492
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+#[SongSlideTextScore]
+#X = 530
+#Y = 420
+#Color = ColorLight
+#Font = 0
+#Size = 24
+#Align = 0
+
+[SongSlideTextMaxScore]
+X = 30
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongSlideTextMediaScore]
+X = 30
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongSlideTextMaxScore2]
+X = 170
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongSlideTextMediaScore2]
+X = 170
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongSlideTextScoreUser]
+X = 170
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongSlideTextMaxScoreLocal]
+X = 180
+Y = 500
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongSlideTextMediaScoreLocal]
+X = 180
+Y = 540
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongSlideTextScoreUserLocal]
+X = 180
+Y = 518
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongSlideTextNonParty1]
+X = 30
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+# Menu opens with [M]
+[SongSlideStaticNonParty1]
+X = 255
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongSlideTextNonParty2]
+X = 287
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 0
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongSlideStaticNonParty2]
+X = 375
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongSlideTextNonParty3]
+X = 407
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongSlideStaticNonParty3]
+X = 580
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongSlideTextNonParty4]
+X = 612
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+[SongSlideStaticParty1]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+# NAVBAR for party
+# enter a number
+[SongSlideStaticParty2]
+X = 260
+Y = 545
+Z = 0.952
+W = 32
+H = 30
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongSlideTextParty3]
+X = 300
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 1
+ReflectionSpacing = 13
+
+# menu
+[SongSlideStaticParty3]
+X = 400
+Y = 552
+Z = 0.952
+W = 24
+H = 23
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongSlideTextParty4]
+X = 426
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+[SongSlideStaticParty4]
+X = 540
+Y = 552
+Z = 0.952
+W = 24
+H = 24
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[SongSlideTextParty5]
+X = 570
+Y = 548
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_LEGEND_CONTINUE
+Reflection = 1
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongSlideTextParty1]
+X = 70
+Y = 5
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[SongSlideTextParty2]
+X = 238
+Y = 548
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_SONG_WHEREAMI
+#variable statics end
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongSlideStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongSlideTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongSlideInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongSlideInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongSlideTextMedleyMax]
+N = 3
+
+[SongSlideTextMedleyNumber1]
+X=27
+Y=375
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlideTextMedleyArtist1]
+X=50
+Y=366
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlideTextMedleyTitle1]
+X=50
+Y=383
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlideTextMedleyNumber2]
+X=27
+Y=420
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlideTextMedleyArtist2]
+X=50
+Y=411
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlideTextMedleyTitle2]
+X=50
+Y=428
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlideTextMedleyNumber3]
+X=27
+Y=465
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongSlideTextMedleyArtist3]
+X=50
+Y=454
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongSlideTextMedleyTitle3]
+X=50
+Y=471
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongSlideStaticMedley1]
+Tex = PlayerNumberBox
+X = 15
+Y = 370
+W = 25
+H = 30
+Z = 1
+Color = ColorDark
+Type = Colorized
+
+[SongSlideStaticMedley2]
+Tex = PlayerNumberBox
+X = 15
+Y = 415
+W = 25
+H = 30
+Z = 1
+Color = ColorDark
+Type = Colorized
+
+[SongSlideStaticMedley3]
+Tex = PlayerNumberBox
+X = 15
+Y = 460
+W = 25
+H = 30
+Color = ColorDark
+Type = Colorized
+
+
+########################################################################################
+##### #####
+##### List #####
+##### #####
+########################################################################################
+
+[SongList]
+
+[SongListBackground]
+Tex = SongBG
+
+
+[SongListSelectSong]
+X = 40
+Y = 90
+W = 490
+H = 80
+Z = 0.50
+Rows = 5
+Padding = 2
+DColor = GrayLightest
+Color = ColorLight
+Tex = SongSelection5
+DTex = SongSelection4
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongListCover]
+X = 44
+Y = 95
+W = 55
+H = 70
+Z = 0.95
+SelectX = 555
+SelectY = 338
+SelectW = 215
+SelectH = 161
+SelectReflection = 0
+SelectReflectionSpacing = 0
+Padding = 12
+Reflections = 0
+Rows = 5
+
+[SongListEqualizer]
+Visible = 0
+Direction = 1
+Color = White
+Alpha = 1
+X = 750
+Y = 505
+PieceW = 4
+PieceH = 4
+Space = 1
+Bands = 7
+Length = 15
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongListMedleyIcon]
+X = 490
+Y = 122
+W = 30
+H = 20
+Z = 1
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+
+[SongListCalculatedMedleyIcon]
+X = 490
+Y = 122
+W = 30
+H = 20
+Z = 1
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+
+[SongListVideoIcon]
+X = 491
+Y = 96
+W = 18
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+
+[SongListDuetIcon]
+X = 490
+Y = 122
+W = 22
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+
+[SongListRapIcon]
+X = 467
+Y = 100
+W = 18
+H = 22
+Z = 1
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+
+[SongListTextArtist]
+X = 115
+Y = 100
+W = 440
+Color = White
+Font = 1
+Size = 28
+Align = 0
+Text =
+
+[SongListTextTitle]
+X = 115
+Y = 130
+W = 330
+Color = White
+Font = 0
+Size = 26
+Align = 0
+Text =
+
+[SongListTextNumber]
+X = 522
+Y = 500
+Z = 0.95
+Color = White
+Size = 20
+Align = 2
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongListTextYear]
+X = 522
+Y = 148
+Z = 0.95
+Color = White
+Size = 18
+Align = 2
+
+########## LEGEND LIST #########
+
+[SongListStaticNonParty1]
+X = 555
+Y = 216
+W = 215
+H = 119
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongListTextNonParty1]
+X = 661
+Y = 222
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongListStaticNonParty2]
+X = 596
+Y = 250
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongListTextNonParty2]
+X = 625
+Y = 252
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongListStaticNonParty3]
+X = 595
+Y = 270
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongListTextNonParty3]
+X = 625
+Y = 272
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongListStaticNonParty4]
+X = 595
+Y = 290
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongListTextNonParty4]
+X = 625
+Y = 292
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongListStaticNonParty5]
+X = 595
+Y = 310
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongListTextNonParty5]
+X = 625
+Y = 312
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+#[SongListTextScore]
+#X = 530
+#Y = 420
+#Color = ColorLight
+#Font = 0
+#Size = 24
+#Align = 0
+
+[SongListTextMaxScore]
+X = 40
+Y = 510
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongListTextMediaScore]
+X = 40
+Y = 550
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MEDIA
+
+[SongListTextMaxScore2]
+X = 180
+Y = 510
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongListTextMediaScore2]
+X = 180
+Y = 550
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongListTextScoreUser]
+X = 180
+Y = 528
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongListTextMaxScoreLocal]
+X = 190
+Y = 510
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongListTextMediaScoreLocal]
+X = 190
+Y = 550
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongListTextScoreUserLocal]
+X = 190
+Y = 528
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongListTextNonParty6]
+X = 40
+Y = 12
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+# Menu opens with [M]
+
+[SongListStaticNonParty6]
+X = 255
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongListTextNonParty7]
+X = 287
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongListStaticNonParty7]
+X = 375
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongListTextNonParty8]
+X = 407
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]laylist
+[SongListStaticNonParty8]
+X = 580
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongListTextNonParty9]
+X = 612
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+[SongListStaticParty1]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+# NAVBAR for party
+# enter a number
+[SongListStaticParty2]
+X = 260
+Y = 545
+Z = 0.952
+W = 32
+H = 30
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongListTextParty3]
+X = 300
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 1
+ReflectionSpacing = 13
+
+# menu
+[SongListStaticParty3]
+X = 400
+Y = 552
+Z = 0.952
+W = 24
+H = 23
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongListTextParty4]
+X = 426
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+[SongListStaticParty4]
+X = 540
+Y = 552
+Z = 0.952
+W = 24
+H = 24
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[SongListTextParty5]
+X = 570
+Y = 548
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_LEGEND_CONTINUE
+Reflection = 1
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongListTextParty1]
+X = 70
+Y = 5
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[SongListTextParty2]
+X = 238
+Y = 548
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_SONG_WHEREAMI
+#variable statics end
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongListStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongListTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongListInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongListInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongListTextMedleyMax]
+N = 3
+
+[SongListTextMedleyNumber1]
+X=543
+Y=100
+Color=White
+Font=1
+Size=18
+Align=1
+
+[SongListTextMedleyArtist1]
+X=565
+Y=91
+Color=ColorDark
+Font=0
+Size=18
+Align=0
+
+[SongListTextMedleyTitle1]
+X=565
+Y=108
+Color=White
+Font=0
+Size=18
+Align=0
+
+[SongListTextMedleyNumber2]
+X=543
+Y=145
+Color=White
+Font=1
+Size=18
+Align=1
+
+[SongListTextMedleyArtist2]
+X=565
+Y=136
+Color=ColorDark
+Font=0
+Size=18
+Align=0
+
+[SongListTextMedleyTitle2]
+X=565
+Y=153
+Color=White
+Font=0
+Size=18
+Align=0
+
+[SongListTextMedleyNumber3]
+X=543
+Y=190
+Color=White
+Font=1
+Size=18
+Align=1
+
+[SongListTextMedleyArtist3]
+X=565
+Y=181
+Color=ColorDark
+Font=0
+Size=18
+Align=0
+
+[SongListTextMedleyTitle3]
+X=565
+Y=198
+Color=White
+Font=0
+Size=18
+Align=0
+
+[SongListStaticMedley1]
+Tex = PlayerNumberBox
+X = 532
+Y = 95
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongListStaticMedley2]
+Tex = PlayerNumberBox
+X = 532
+Y = 140
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongListStaticMedley3]
+Tex = PlayerNumberBox
+X = 532
+Y = 185
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+########################################################################################
+##### #####
+##### Mosaic #####
+##### #####
+########################################################################################
+
+[SongMosaic]
+
+[SongMosaicBackground]
+Tex = SongBG
+
+[SongMosaicCover]
+X = 45
+Y = 90
+W = 120
+H = 135
+SelectX = 180
+SelectY = 90
+SelectW = 355
+SelectH = 278
+ZoomThumbW = 125
+ZoomThumbH = 140
+ZoomThumbStyle = 0
+Rows = 3
+Cols = 1
+Padding = 4
+Reflections = 0
+
+[SongMosaicEqualizer]
+Visible = 1
+Direction = 1
+Color = White
+Alpha = 1
+X = 15
+Y = 500
+PieceW = 5
+PieceH = 5
+Space = 1
+Bands = 4
+Length = 18
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongMosaicMedleyIcon]
+X = 500
+Y = 432
+W = 30
+H = 20
+Z = 1
+Color = White
+Tex = icon_song_medley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicCalculatedMedleyIcon]
+X = 500
+Y = 432
+W = 30
+H = 20
+Z = 1
+Color = White
+Tex = icon_song_calcmedley
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicVideoIcon]
+X = 502
+Y = 400
+W = 18
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_video
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicDuetIcon]
+X = 500
+Y = 428
+W = 22
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_duet
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicRapIcon]
+X = 500
+Y = 465
+W = 20
+H = 24
+Z = 1
+Color = White
+Tex = icon_song_rap
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicStatic1]
+X = 180
+Y = 370
+W = 355
+H = 132
+Z = 0.9
+Color = ColorLight
+Tex = JukeboxSongSelection
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 2
+
+[SongMosaicTextArtist]
+X = 190
+Y = 380
+W = 300
+Color = White
+Font = 1
+Size = 28
+Align = 0
+Text =
+
+[SongMosaicTextTitle]
+X = 190
+Y = 435
+W = 300
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text =
+
+[SongMosaicTextNumber]
+X = 141
+Y = 517
+Z = 0.95
+Color = White
+Size = 18
+Align = 1
+Reflection = 0
+ReflectionSpacing = 0
+
+[SongMosaicTextYear]
+X = 530
+Y = 380
+Z = 1
+Color = White
+Size = 18
+Align = 2
+
+########## LEGEND MOSAIC #########
+
+[SongMosaicStaticNonParty1]
+X = 555
+Y = 370
+W = 215
+H = 131
+Z = 0
+Tex = BGFade
+Color = White
+Type = Transparent
+
+[SongMosaicTextNonParty1]
+X = 661
+Y = 376
+Z = 0.952
+Color = White
+Font = 1
+Size = 14
+Align = 1
+Text = SING_SONG_SELECTION_LEGEND_TITLE
+
+[SongMosaicStaticNonParty2]
+X = 596
+Y = 404
+W = 15
+H = 20
+Tex = icon_song_video
+Color = White
+Type = Transparent
+
+
+[SongMosaicTextNonParty2]
+X = 625
+Y = 406
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_VIDEO
+
+[SongMosaicStaticNonParty3]
+X = 595
+Y = 424
+W = 26
+H = 16
+Tex = icon_song_medley
+Color = White
+Type = Transparent
+
+[SongMosaicTextNonParty3]
+X = 625
+Y = 426
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEY
+
+[SongMosaicStaticNonParty4]
+X = 595
+Y = 444
+W = 26
+H = 16
+Tex = icon_song_calcmedley
+Color = White
+Type = Transparent
+
+[SongMosaicTextNonParty4]
+X = 625
+Y = 446
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_MEDLEYC
+
+
+[SongMosaicStaticNonParty5]
+X = 595
+Y = 464
+W = 13
+H = 17
+Tex = icon_song_duet
+Color = White
+Type = Transparent
+
+[SongMosaicTextNonParty5]
+X = 625
+Y = 466
+Z = 0.952
+Color = White
+Font = 0
+Size = 12
+Align = 0
+Text = SING_SONG_SELECTION_LEGEND_DUET
+
+#[SongListTextScore]
+#X = 530
+#Y = 420
+#Color = ColorLight
+#Font = 0
+#Size = 24
+#Align = 0
+
+[SongMosaicTextMaxScore]
+X = 565
+Y = 280
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text =SONG_SCORE_MAX
+
+[SongMosaicTextMediaScore]
+X = 565
+Y = 320
+Color = White
+Font = 0
+Size = 22
+Align = 0
+Text = SONG_SCORE_MEDIA
+
+[SongMosaicTextMaxScore2]
+X = 705
+Y = 280
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongMosaicTextMediaScore2]
+X = 705
+Y = 320
+Color = White
+Font = 0
+Size = 22
+Align = 2
+
+[SongMosaicTextScoreUser]
+X = 705
+Y = 298
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 2
+
+[SongMosaicTextMaxScoreLocal]
+X = 715
+Y = 280
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongMosaicTextMediaScoreLocal]
+X = 715
+Y = 320
+Color = White
+Font = 0
+Size = 22
+Align = 0
+
+[SongMosaicTextScoreUserLocal]
+X = 715
+Y = 298
+Color = ColorLight
+Font = 0
+Size = 20
+Align = 0
+
+#Variable statics and texts for song-screen in sing- and partymode
+# There can be an unlimited Number of Statics and Texts, As long
+# as the numbers are in order.
+# Statics that are shown in PartyMode Only are Named_
+# SongStaticParty[No]
+# Texts that are shown in PartyMode Only are Named_
+# SongTextParty[No]
+# Statics that are shown in Normal Mode Only are Named_
+# SongStaticNonParty[No]
+# Texts that are shown in Normal Mode Only are Named_
+# SongTextNonParty[No]
+#Here are the ones for singmode
+
+[SongMosaicTextNonParty6]
+X = 40
+Y = 12
+Color = White
+Font = 0
+Size = 60
+Text = SING_SONG_SELECTION
+Align = 0
+
+# Menu opens with [M]
+
+[SongMosaicStaticNonParty6]
+X = 255
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonM
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongMosaicTextNonParty7]
+X = 287
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+# The so famous search, shown with [J]
+[SongMosaicStaticNonParty7]
+X = 375
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonJ
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongMosaicTextNonParty8]
+X = 407
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_JUMPTO_DESC
+Reflection = 0
+ReflectionSpacing = 13
+
+# [P]layList
+[SongMosaicStaticNonParty8]
+X = 580
+Y = 560
+W = 25
+H = 30
+Z = 0.952
+Tex = ButtonP
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[SongMosaicTextNonParty9]
+X = 612
+Y = 563
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_SONG_SELECTION_PLAYLIST
+Reflection = 0
+ReflectionSpacing = 13
+
+#and these are the ones for partymode
+[SongMosaicStaticParty1]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+# NAVBAR for party
+# enter a number
+[SongMosaicStaticParty2]
+X = 260
+Y = 545
+Z = 0.952
+W = 32
+H = 30
+Tex = Button13
+Color = White
+Type = Transparent
+
+[SongMosaicTextParty3]
+X = 300
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SONG_MENU_NAME_PARTY_JOKER
+Reflection = 1
+ReflectionSpacing = 13
+
+# menu
+[SongMosaicStaticParty3]
+X = 400
+Y = 552
+Z = 0.952
+W = 24
+H = 23
+Tex = ButtonM
+Color = White
+Type = Transparent
+
+[SongMosaicTextParty4]
+X = 426
+Y = 548
+Z = 0.952
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_MENU
+Reflection = 1
+ReflectionSpacing = 13
+
+[SongMosaicStaticParty4]
+X = 540
+Y = 552
+Z = 0.952
+W = 24
+H = 24
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[SongMosaicTextParty5]
+X = 570
+Y = 548
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = PARTY_SONG_LEGEND_CONTINUE
+Reflection = 1
+ReflectionSpacing = 13
+
+#Texts for Party Mode
+[SongMosaicTextParty1]
+X = 70
+Y = 5
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[SongMosaicTextParty2]
+X = 238
+Y = 548
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_SONG_WHEREAMI
+#variable statics end
+
+# Jokers, 5 for each team, only shown in party Mode
+[SongMosaicStaticTeam1Joker1]
+Tex = Joker
+X = 505
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam1Joker2]
+Tex = Joker
+X = 555
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam1Joker3]
+Tex = Joker
+X = 605
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam1Joker4]
+Tex = Joker
+X = 655
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam1Joker5]
+Tex = Joker
+X = 705
+Y = 400
+W = 40
+H = 40
+Z = 0.98
+Color = P1Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam2Joker1]
+Tex = Joker
+X = 505
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam2Joker2]
+Tex = Joker
+X = 555
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam2Joker3]
+Tex = Joker
+X = 605
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam2Joker4]
+Tex = Joker
+X = 655
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam2Joker5]
+Tex = Joker
+X = 705
+Y = 450
+W = 40
+H = 40
+Z = 0.98
+Color = P2Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam3Joker1]
+Tex = Joker
+X = 505
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam3Joker2]
+Tex = Joker
+X = 555
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam3Joker3]
+Tex = Joker
+X = 605
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam3Joker4]
+Tex = Joker
+X = 655
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicStaticTeam3Joker5]
+Tex = Joker
+X = 705
+Y = 500
+W = 40
+H = 40
+Z = 0.98
+Color = P3Dark
+Type = Colorized
+TexX1 = 0
+TexY1 = 0
+TexX2 = 1
+TexY2 = 1
+
+[SongMosaicTextPartyTime]
+X = 750
+Y = 450
+Color = White
+DColor = Red
+Font = 1
+Size = 70
+Align = 2
+
+[SongMosaicInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 90
+W = 300
+H = 25
+Z = 0.98
+Color = ColorDark
+Type = Transparent
+
+[SongMosaicInfoMessageText]
+X = 400
+Y = 94
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+#############################
+## ##
+## Medley Playlist ##
+## ##
+#############################
+
+[SongMosaicTextMedleyMax]
+N = 4
+
+[SongMosaicTextMedleyNumber1]
+X=548
+Y=111
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongMosaicTextMedleyNumber2]
+X=548
+Y=156
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongMosaicTextMedleyNumber3]
+X=548
+Y=201
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongMosaicTextMedleyNumber4]
+X=548
+Y=246
+Color=White
+Font=1
+Size=20
+Align=1
+
+[SongMosaicTextMedleyArtist1]
+X=570
+Y=102
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyArtist2]
+X=570
+Y=146
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyArtist3]
+X=570
+Y=192
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyArtist4]
+X=570
+Y=237
+Color=ColorDark
+Font=0
+Size=20
+Align=0
+
+
+[SongMosaicTextMedleyTitle1]
+X=570
+Y=118
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyTitle2]
+X=570
+Y=163
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyTitle3]
+X=570
+Y=208
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongMosaicTextMedleyTitle4]
+X=570
+Y=252
+Color=White
+Font=0
+Size=20
+Align=0
+
+[SongMosaicStaticMedley1]
+Tex = PlayerNumberBox
+X = 537
+Y = 105
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongMosaicStaticMedley2]
+Tex = PlayerNumberBox
+X = 537
+Y = 150
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongMosaicStaticMedley3]
+Tex = PlayerNumberBox
+X = 537
+Y = 195
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+[SongMosaicStaticMedley4]
+Tex = PlayerNumberBox
+X = 537
+Y = 240
+W = 24
+H = 30
+Color = ColorDark
+Type = Colorized
+
+##########################################
+######### S I N G S C R E E N ##########
+##########################################
+
+[Sing]
+Texts = 1
+
+[SingBackground]
+Type=color
+ColR=1
+ColB=1
+ColG=1
+
+[SingStatic1]
+;TextBG
+Tex = LyricBar
+X = 0
+Y = 482
+W = 800
+H = 98
+Color = ColorDark
+Type = Transparent
+
+[SingStatic2]
+;TimeBar
+Tex = TimeBar1
+X = 0
+Y = 580
+W = 800
+H = 20
+Color = White
+Type = Transparent
+
+[SingTimeProgress]
+X = 40
+Y = 587
+W = 679
+H = 6
+Color = White
+
+[SingTimeText]
+Text = SING_TIME
+X = 761
+Y = 582
+Font = 1
+Size = 18
+Color = White
+Align = 1
+
+[SingInfoMessageBG]
+Tex = SongMessage
+X = 250
+Y = 40
+W = 300
+H = 25
+Z = 0.98
+Color = GrayDark
+Type = Transparent
+
+[SingInfoMessageText]
+X = 400
+Y = 44
+Color = White
+Font = 1
+Size = 20
+Align = 1
+
+[SingLyricsUpperBar]
+X = 80
+W = 640
+Y = 493
+H = 41
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[SingLyricsLowerBar]
+X = 80
+W = 640
+Y = 535
+H = 41
+
+# O N E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#PlayerOne
+
+
+[SingP1Static]
+X = 9
+Y = 258
+W = 52
+H = 70
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP1Text]
+#Text = PLAYERNAME
+#X = 80
+#Y = 300
+#Font = 1
+#Size = 22
+#Color = White
+#Align = 0
+
+[SingP1Static2]
+Tex = ScoreBG
+X = 680
+Y = 282
+W = 100
+H = 36
+Color = P1Dark
+Type = Colorized
+
+[SingP1TextScore]
+Text = 00000
+X = 698
+Y = 284
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP1SingBar]
+X = 680
+Y = 316
+W = 100
+H = 8
+
+[SingP1Avatar]
+X = 15
+Y = 266
+W = 40
+H = 54
+Z = 1
+Alpha = 1
+
+# T W O P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1TwoPStatic]
+X = 18
+Y = 82
+W = 45
+H = 59
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP1TwoPText]
+#Text = PLAYERNAME
+#X = 80
+#Y = 112
+#Font = 1
+#Size = 22
+#Color = White
+#Align = 0
+
+[SingP1TwoPStatic2]
+Tex = ScoreBG
+X = 680
+Y = 92
+W = 100
+H = 36
+Color = P1Dark
+Type = Colorized
+
+[SingP1TwoPTextScore]
+Text = 00000
+X = 698
+Y = 94
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP1TwoPSingBar]
+X = 680
+Y = 126
+W = 100
+H = 8
+
+[SingP1TwoPAvatar]
+X = 23
+Y = 88
+W = 35
+H = 47
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingP2RStatic]
+X = 18
+Y = 273
+W = 45
+H = 59
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP2RText]
+#Text = PLAYERNAME
+#X = 80
+#Y = 302
+#Font = 1
+#Size = 22
+#Color = White
+#Align = 0
+
+[SingP2RStatic2]
+Tex = ScoreBG
+X = 680
+Y = 282
+W = 100
+H = 36
+Color = P2Dark
+Type = Colorized
+
+[SingP2RTextScore]
+Text = 00000
+X = 698
+Y = 284
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP2RSingBar]
+X = 680
+Y = 316
+W = 100
+H = 8
+
+[SingP2RAvatar]
+X = 23
+Y = 279
+W = 35
+H = 47
+Z = 1
+Alpha = 1
+
+# T H R E E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1ThreePStatic]
+X = 16
+Y = 57
+W = 45
+H = 59
+Z = 1
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+[SingP1ThreePText]
+#Text =
+#X = 27
+#Y = 66
+#Font = 1
+#Size = 24
+#Color = White
+#Align = 0
+
+[SingP1ThreePStatic2]
+Tex = ScoreBG
+X = 75
+Y = 61
+W = 100
+H = 36
+Color = P1Dark
+Type = Colorized
+
+[SingP1ThreePTextScore]
+Text = 00000
+X = 93
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP1ThreePSingBar]
+X = 75
+Y = 95
+W = 100
+H = 8
+
+[SingP1ThreePAvatar]
+X = 21
+Y = 63
+W = 35
+H = 47
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingP2MStatic]
+X = 311
+Y = 57
+W = 45
+H = 59
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP2MText]
+#Text = P2
+#X = 321
+#Y = 66
+#Font = 1
+#Size = 24
+#Color = White
+#Align = 0
+
+[SingP2MStatic2]
+Tex = ScoreBG
+X = 370
+Y = 61
+W = 100
+H = 36
+Color = P2Dark
+Type = Colorized
+
+[SingP2MTextScore]
+Text = 00000
+X = 388
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP2MSingBar]
+X = 370
+Y = 95
+W = 100
+H = 8
+
+[SingP2MAvatar]
+X = 316
+Y = 63
+W = 35
+H = 47
+Z = 1
+Alpha = 1
+
+#Player Three
+[SingP3RStatic]
+X = 611
+Y = 57
+W = 45
+H = 59
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP3RText]
+#Text = P3
+#X = 621
+#Y = 66
+#Font = 1
+#Size = 24
+#Color = White
+#Align = 0
+
+[SingP3RStatic2]
+Tex = ScoreBG
+X = 670
+Y = 61
+W = 100
+H = 36
+Color = P3Dark
+Type = Colorized
+
+[SingP3RTextScore]
+Text = 00000
+X = 688
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP3SingBar]
+X = 670
+Y = 95
+W = 100
+H = 8
+
+[SingP3RAvatar]
+X = 616
+Y = 63
+W = 35
+H = 47
+Z = 1
+Alpha = 1
+
+[SingSongNameStatic]
+Tex = SongName
+X = 10
+Y = 10
+W = 780
+H = 29
+Color = White
+Type = Transparent
+
+[SingSongNameText]
+Text = SongNameText
+X = 400
+Y = 13
+Font = 0
+Size = 25
+Color = White
+Align = 1
+
+
+# FOUR P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1FourPStatic]
+X = 20
+Y = 54
+W = 40
+H = 54
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP1FourPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 122
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP1FourPStatic2]
+Tex = ScoreBG
+X = 80
+Y = 61
+W = 100
+H = 36
+Color = P1Dark
+Type = Colorized
+
+[SingP1FourPTextScore]
+Text = 00000
+X = 98
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP1FourPSingBar]
+X = 80
+Y = 95
+W = 100
+H = 8
+
+[SingP1FourPAvatar]
+X = 24
+Y = 59
+W = 32
+H = 43
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingP2FourPStatic]
+X = 220
+Y = 54
+W = 40
+H = 54
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP2FourPText]
+#Text = PLAYERNAME
+#X = 24
+#Y = 302
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP2FourPStatic2]
+Tex = ScoreBG
+X = 280
+Y = 61
+W = 100
+H = 36
+Color = P2Dark
+Type = Colorized
+
+[SingP2FourPTextScore]
+Text = 00000
+X = 298
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP2FourPSingBar]
+X = 280
+Y = 95
+W = 100
+H = 8
+
+[SingP2FourPAvatar]
+X = 224
+Y = 59
+W = 32
+H = 43
+Z = 1
+Alpha = 1
+
+#Player Three
+[SingP3FourPStatic]
+X = 420
+Y = 54
+W = 40
+H = 54
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP3FourPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 122
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP3FourPStatic2]
+Tex = ScoreBG
+X = 480
+Y = 61
+W = 100
+H = 36
+Color = P3Dark
+Type = Colorized
+
+[SingP3FourPTextScore]
+Text = 00000
+X = 498
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP3FourPSingBar]
+X = 480
+Y = 95
+W = 100
+H = 8
+
+[SingP3FourPAvatar]
+X = 424
+Y = 59
+W = 32
+H = 43
+Z = 1
+Alpha = 1
+
+#Player Four
+[SingP4FourPStatic]
+X = 620
+Y = 54
+W = 40
+H = 54
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP4FourPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 302
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP4FourPStatic2]
+Tex = ScoreBG
+X = 680
+Y = 61
+W = 100
+H = 36
+Color = P4Dark
+Type = Colorized
+
+[SingP4FourPTextScore]
+Text = 00000
+X = 698
+Y = 63
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP4FourPSingBar]
+X = 680
+Y = 95
+W = 100
+H = 8
+
+[SingP4FourPAvatar]
+X = 624
+Y = 59
+W = 32
+H = 43
+Z = 1
+Alpha = 1
+
+# SIX P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1SixPStatic]
+X = 19
+Y = 98
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+[SingP1SixPAvatar]
+X = 23
+Y = 103
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP1SixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 100
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP1SixPStatic2]
+Tex = ScoreBG
+X = 20
+Y = 40
+W = 100
+H = 36
+Color = P1Dark
+Type = Colorized
+
+[SingP1SixPTextScore]
+Text = 00000
+X = 38
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP1SixPSingBar]
+X = 20
+Y = 76
+W = 100
+H = 8
+
+#Player Two
+[SingP2SixPStatic]
+X = 19
+Y = 225
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+[SingP2SixPAvatar]
+X = 23
+Y = 230
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP2SixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 227
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP2SixPStatic2]
+Tex = ScoreBG
+X = 150
+Y = 40
+W = 100
+H = 36
+Color = P2Dark
+Type = Colorized
+
+[SingP2SixPTextScore]
+Text = 00000
+X = 168
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP2SixPSingBar]
+X = 150
+Y = 75
+W = 100
+H = 8
+
+#Player Three
+[SingP3SixPStatic]
+X = 19
+Y = 350
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+[SingP3SixPAvatar]
+X = 23
+Y = 355
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP3SixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 352
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP3SixPStatic2]
+Tex = ScoreBG
+X = 280
+Y = 40
+W = 100
+H = 36
+Color = P3Dark
+Type = Colorized
+
+[SingP3SixPTextScore]
+Text = 00000
+X = 298
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP3SixPSingBar]
+X = 280
+Y = 76
+W = 100
+H = 8
+
+#Player Four
+[SingP4SixPStatic]
+X = 389
+Y = 98
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+Alpha = 1
+
+[SingP4SixPAvatar]
+X = 393
+Y = 103
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP4SixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 100
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP4SixPStatic2]
+Tex = ScoreBG
+X = 410
+Y = 40
+W = 100
+H = 36
+Color = P4Dark
+Type = Colorized
+
+[SingP4SixPTextScore]
+Text = 00000
+X = 428
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP4SixPSingBar]
+X = 410
+Y = 76
+W = 100
+H = 8
+
+#Player Five
+[SingP5SixPStatic]
+X = 389
+Y = 225
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P5Dark
+Type = Colorized
+Alpha = 1
+
+[SingP5SixPAvatar]
+X = 393
+Y = 230
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP5SixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 227
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP5SixPStatic2]
+Tex = ScoreBG
+X = 540
+Y = 40
+W = 100
+H = 36
+Color = P5Dark
+Type = Colorized
+
+[SingP5SixPTextScore]
+Text = 00000
+X = 558
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP5SixPSingBar]
+X = 540
+Y = 76
+W = 100
+H = 8
+
+#Player Six
+[SingP6SixPStatic]
+X = 389
+Y = 350
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P6Dark
+Type = Colorized
+Alpha = 1
+
+[SingP6SixPAvatar]
+X = 393
+Y = 355
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP6SixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 352
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP6SixPStatic2]
+Tex = ScoreBG
+X = 670
+Y = 40
+W = 100
+H = 36
+Color = P6Dark
+Type = Colorized
+
+[SingP6SixPTextScore]
+Text = 00000
+X = 688
+Y = 42
+Font = 0
+Size = 30
+Color = White
+Align = 0
+
+[SingP6SixPSingBar]
+X = 670
+Y = 76
+W = 100
+H = 8
+
+##################################
+########## Duet ##########
+##################################
+
+[SingLyricsDuetP2UpperBar]
+X = 80
+W = 640
+Y = 493
+H = 41
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[SingLyricsDuetP2LowerBar]
+X = 80
+W = 640
+Y = 535
+H = 41
+
+[SingLyricsDuetP1UpperBar]
+X = 80
+W = 640
+Y = 5
+H = 41
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[SingLyricsDuetP1LowerBar]
+X = 80
+W = 640
+Y = 49
+H = 41
+
+[SingStaticDuet1]
+Tex = LyricBar
+X = 0
+Y = -5
+W = 800
+H = 93
+Color = White
+Type = Transparent
+
+# T H R E E P L A Y E R D U E T M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingDuetP1ThreePStatic]
+X = 11
+Y = 99
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP1ThreePText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 118
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP1ThreePStatic2]
+X = 710
+Y = 100
+W = 80
+H = 25
+
+[SingDuetP1ThreePTextScore]
+X = 725
+Y = 102
+Font = 0
+Size = 24
+
+[SingDuetP1ThreePSingBar]
+X = 710
+Y = 125
+W = 80
+H = 6
+
+[SingDuetP1ThreePAvatar]
+X = 15
+Y = 104
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingDuetP2MStatic]
+X = 11
+Y = 224
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP2MText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 243
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP2MStatic2]
+X = 710
+Y = 225
+W = 80
+H = 25
+
+[SingDuetP2MTextScore]
+X = 725
+Y = 227
+Font = 0
+Size = 24
+
+[SingDuetP2MSingBar]
+X = 710
+Y = 250
+W = 80
+H = 6
+
+[SingDuetP2MAvatar]
+X = 15
+Y = 229
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#Player Three
+[SingDuetP3RStatic]
+X = 11
+Y = 349
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+#[SingDuetP3RText]
+#Text = PLAYERNAME
+#X = 58
+#Y = 368
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingDuetP3RStatic2]
+X = 710
+Y = 350
+W = 80
+H = 25
+
+[SingDuetP3RTextScore]
+X = 725
+Y = 352
+Font = 0
+Size = 24
+
+[SingDuetP3RSingBar]
+X = 710
+Y = 375
+W = 80
+H = 6
+
+[SingDuetP3RAvatar]
+X = 15
+Y = 354
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+# FOUR DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1DuetFourPStatic]
+X = 19
+Y = 110
+W = 38
+H = 50
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP1DuetFourPText]
+#Text = PLAYERNAME
+#X = 65
+#Y = 126
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP1DuetFourPStatic2]
+Tex = ScoreBG
+X = 305
+Y = 117
+W = 80
+H = 25
+
+[SingP1DuetFourPTextScore]
+Text = 00000
+X = 320
+Y = 119
+Font = 0
+Size = 24
+
+[SingP1DuetFourPSingBar]
+X = 305
+Y = 142
+W = 80
+H = 6
+
+[SingP1DuetFourPAvatar]
+X = 23
+Y = 115
+W = 30
+H = 40
+Z = 1
+Alpha = 1
+
+#Player Two
+[SingP2DuetFourPStatic]
+X = 19
+Y = 292
+W = 38
+H = 50
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP2DuetFourPText]
+#Text = PLAYERNAME
+#X = 64
+#Y = 306
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP2DuetFourPStatic2]
+Tex = ScoreBG
+X = 305
+Y = 297
+W = 80
+H = 25
+
+[SingP2DuetFourPTextScore]
+Text = 00000
+X = 320
+Y = 299
+Font = 0
+Size = 24
+
+[SingP2DuetFourPSingBar]
+X = 305
+Y = 322
+W = 80
+H = 6
+
+[SingP2DuetFourPAvatar]
+X = 23
+Y = 297
+W = 30
+H = 40
+Z = 1
+Alpha = 1
+
+#Player Three
+[SingP3DuetFourPStatic]
+X = 389
+Y = 112
+W = 38
+H = 50
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP3DuetFourPText]
+#Text = PLAYERNAME
+#X = 435
+#Y = 126
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP3DuetFourPStatic2]
+Tex = ScoreBG
+X = 700
+Y = 117
+W = 80
+H = 25
+
+[SingP3DuetFourPTextScore]
+Text = 00000
+X = 715
+Y = 119
+Font = 0
+Size = 24
+
+[SingP3DuetFourPSingBar]
+X = 700
+Y = 142
+W = 80
+H = 6
+
+[SingP3DuetFourPAvatar]
+X = 393
+Y = 117
+W = 30
+H = 40
+Z = 1
+Alpha = 1
+
+#Player Four
+[SingP4DuetFourPStatic]
+X = 389
+Y = 292
+W = 38
+H = 50
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+Alpha = 1
+
+#[SingP4DuetFourPText]
+#Text = PLAYERNAME
+#X = 435
+#Y = 306
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP4DuetFourPStatic2]
+X = 700
+Y = 297
+W = 80
+H = 25
+
+[SingP4DuetFourPTextScore]
+X = 715
+Y = 299
+Font = 0
+Size = 24
+
+[SingP4DuetFourPSingBar]
+X = 700
+Y = 322
+W = 80
+H = 6
+
+[SingP4DuetFourPAvatar]
+X = 393
+Y = 297
+W = 30
+H = 40
+Z = 1
+Alpha = 1
+
+# SIX DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1DuetSixPStatic]
+X = 19
+Y = 100
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+Alpha = 1
+
+[SingP1DuetSixPAvatar]
+X = 23
+Y = 105
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP1DuetSixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 100
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP1DuetSixPStatic2]
+Tex = ScoreBG
+X = 305
+Y = 95
+W = 80
+H = 25
+Color = P1Dark
+Type = Colorized
+
+[SingP1DuetSixPTextScore]
+Text = 00000
+X = 320
+Y = 97
+Font = 0
+Size = 24
+
+[SingP1DuetSixPSingBar]
+X = 305
+Y = 120
+W = 80
+H = 6
+
+#Player Two
+[SingP2DuetSixPStatic]
+X = 19
+Y = 227
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+Alpha = 1
+
+[SingP2DuetSixPAvatar]
+X = 23
+Y = 232
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP2DuetSixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 227
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP2DuetSixPStatic2]
+Tex = ScoreBG
+X = 305
+Y = 222
+W = 80
+H = 25
+Color = P2Dark
+Type = Colorized
+
+[SingP2DuetSixPTextScore]
+Text = 00000
+X = 320
+Y = 224
+Font = 0
+Size = 24
+
+[SingP2DuetSixPSingBar]
+X = 305
+Y = 247
+W = 80
+H = 6
+
+#Player Three
+[SingP3DuetSixPStatic]
+X = 19
+Y = 352
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+Alpha = 1
+
+[SingP3DuetSixPAvatar]
+X = 23
+Y = 357
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP3DuetSixPText]
+#Text = PLAYERNAME
+#X = 25
+#Y = 352
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP3DuetSixPStatic2]
+Tex = ScoreBG
+X = 305
+Y = 347
+W = 80
+H = 25
+Color = P3Dark
+Type = Colorized
+
+[SingP3DuetSixPTextScore]
+Text = 00000
+X = 320
+Y = 349
+Font = 0
+Size = 24
+
+[SingP3DuetSixPSingBar]
+X = 305
+Y = 372
+W = 80
+H = 6
+
+#Player Four
+[SingP4DuetSixPStatic]
+X = 389
+Y = 100
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+Alpha = 1
+
+[SingP4DuetSixPAvatar]
+X = 393
+Y = 105
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP4DuetSixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 100
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP4DuetSixPStatic2]
+Tex = ScoreBG
+X = 700
+Y = 95
+W = 80
+H = 25
+Color = P4Dark
+Type = Colorized
+
+[SingP4DuetSixPTextScore]
+Text = 00000
+X = 715
+Y = 97
+Font = 0
+Size = 24
+
+[SingP4DuetSixPSingBar]
+X = 700
+Y = 120
+W = 80
+H = 6
+
+#Player Five
+[SingP5DuetSixPStatic]
+X = 389
+Y = 227
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P5Dark
+Type = Colorized
+Alpha = 1
+
+[SingP5DuetSixPAvatar]
+X = 393
+Y = 232
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP5DuetSixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 227
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP5DuetSixPStatic2]
+Tex = ScoreBG
+X = 700
+Y = 222
+W = 80
+H = 25
+Color = P5Dark
+Type = Colorized
+
+[SingP5DuetSixPTextScore]
+Text = 00000
+X = 715
+Y = 224
+Font = 0
+Size = 24
+
+[SingP5DuetSixPSingBar]
+X = 700
+Y = 247
+W = 80
+H = 6
+
+#Player Six
+[SingP6DuetSixPStatic]
+X = 389
+Y = 352
+W = 34
+H = 46
+Tex = AvatarFrame2
+Color = P6Dark
+Type = Colorized
+Alpha = 1
+
+[SingP6DuetSixPAvatar]
+X = 393
+Y = 357
+W = 26
+H = 36
+Z = 1
+Alpha = 1
+
+#[SingP6DuetSixPText]
+#Text = PLAYERNAME
+#X = 395
+#Y = 352
+#Font = 1
+#Size = 18
+#Color = White
+#Align = 0
+
+[SingP6DuetSixPStatic2]
+Tex = ScoreBG
+X = 700
+Y = 347
+W = 80
+H = 25
+Color = P6Dark
+Type = Colorized
+
+[SingP6DuetSixPTextScore]
+Text = 00000
+X = 715
+Y = 349
+Font = 0
+Size = 24
+
+[SingP6DuetSixPSingBar]
+X = 700
+Y = 372
+W = 80
+H = 6
+
+
+## Oscilloscope Position Screen ##
+
+# O N E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#PlayerOne
+[SingP1Oscilloscope]
+X = 80
+Y = 275
+H = 30
+W = 100
+
+# T W O P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1TwoPOscilloscope]
+X = 80
+Y = 95
+H = 30
+W = 100
+
+#Player Two
+[SingP2ROscilloscope]
+X = 80
+Y = 285
+H = 30
+W = 100
+
+# T H R E E P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1ThreePOscilloscope]
+X = 15
+Y = 15
+H = 30
+W = 160
+
+#Player Two
+[SingP2MOscilloscope]
+X = 310
+Y = 15
+H = 30
+W = 160
+
+#Player Three
+[SingP3ROscilloscope]
+X = 610
+Y = 15
+H = 30
+W = 160
+
+# T H R E E P L A Y E R D U E T M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingDuetP1ThreePOscilloscope]
+X = 56
+Y = 110
+H = 25
+W = 100
+
+#Player Two
+[SingDuetP2MOscilloscope]
+X = 56
+Y = 235
+H = 25
+W = 100
+
+#Player Three
+[SingDuetP3ROscilloscope]
+X = 56
+Y = 360
+H = 25
+W = 100
+
+## 4/6 Players One Screen ##
+
+# FOUR P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1FourPOscilloscope]
+X = 22
+Y = 25
+H = 30
+W = 157
+
+#Player Two
+[SingP2FourPOscilloscope]
+X = 222
+Y = 25
+H = 30
+W = 157
+
+#Player Three
+[SingP3FourPOscilloscope]
+X = 422
+Y = 25
+H = 30
+W = 157
+
+#Player Four
+[SingP4FourPOscilloscope]
+X = 622
+Y = 25
+H = 30
+W = 157
+
+# SIX P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1SixPOscilloscope]
+X = 20
+Y = 8
+H = 30
+W = 100
+
+#Player Two
+[SingP2SixPOscilloscope]
+X = 150
+Y = 8
+H = 30
+W = 100
+
+#Player Three
+[SingP3SixPOscilloscope]
+X = 280
+Y = 8
+H = 30
+W = 100
+
+#Player Four
+[SingP4SixPOscilloscope]
+X = 410
+Y = 8
+H = 30
+W = 100
+
+#Player Five
+[SingP5SixPOscilloscope]
+X = 540
+Y = 8
+H = 30
+W = 100
+
+#Player Six
+[SingP6SixPOscilloscope]
+X = 670
+Y = 8
+H = 30
+W = 100
+
+# FOUR DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1DuetFourPOscilloscope]
+X = 60
+Y = 118
+H = 25
+W = 100
+
+#Player Two
+[SingP2DuetFourPOscilloscope]
+X = 60
+Y = 298
+H = 25
+W = 100
+
+#Player Three
+[SingP3DuetFourPOscilloscope]
+X = 430
+Y = 118
+H = 25
+W = 100
+
+#Player Four
+[SingP4DuetFourPOscilloscope]
+X = 430
+Y = 298
+H = 25
+W = 100
+
+# SIX DUET P L A Y E R M O D E # # # # # # # # # # # # # # # # # # # #
+#Player One
+[SingP1DuetSixPOscilloscope]
+X = 60
+Y = 107
+H = 25
+W = 100
+
+#Player Two
+[SingP2DuetSixPOscilloscope]
+X = 60
+Y = 236
+H = 25
+W = 100
+
+#Player Three
+[SingP3DuetSixPOscilloscope]
+X = 60
+Y = 362
+H = 25
+W = 100
+
+#Player Four
+[SingP4DuetSixPOscilloscope]
+X = 430
+Y = 107
+H = 25
+W = 100
+
+#Player Five
+[SingP5DuetSixPOscilloscope]
+X = 430
+Y = 236
+H = 25
+W = 100
+
+#Player Six
+[SingP6DuetSixPOscilloscope]
+X = 430
+Y = 362
+H = 25
+W = 100
+
+[Score]
+Texts = 1
+
+[ScoreBackground]
+Tex = ScoreScreenBG
+
+[ScoreText1]
+X = 50
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Text = SONG_SCORE
+Align = 0
+
+[ScoreTextArtistTitle]
+X = 50
+Y = 59
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = ArtistTitle
+
+[ScoreStatic1]
+X = 323
+Y = 550
+W = 27
+H = 30
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 2
+
+[ScoreText2]
+X = 360
+Y = 553
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = SING_LEGEND_CONTINUE
+Reflection = 0
+ReflectionSpacing = 13
+#end of main stuff
+
+# # # # # # # # # # # # # # # # # # One Player Score # # # # # # # # # # # #
+[ScoreTextName1]
+X = 197
+Y = 280
+Font = 0
+Size = 40
+Text = P1
+Font = 1
+Color = White
+Align = 0
+
+# Rating
+[ScoreStaticRatingPicture1]
+X = 385
+Y = 140
+H = 80
+W = 75
+
+[ScoreTextScore1]
+X = 422
+Y = 235
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+# Note Score
+[ScoreStaticBoxDark1]
+Tex = ScoreBar_box_dark
+X = 203
+Y = 327
+W = 16
+H = 20
+Color = P1Dark
+Type = Colorized
+
+[ScoreTextNotes1]
+X = 227
+Y = 322
+Color = White
+Font = 0
+Size = 30
+Text = SING_NOTES
+Align = 0
+
+[ScoreTextNotesScore1]
+X = 487
+Y = 322
+Color = White
+Font = 0
+Size = 30
+Align = 2
+Text = 0
+
+# A simple line
+[ScorePlayer1Static1]
+Tex = ScoreLine
+X = 200
+Y = 351
+W = 287
+H = 1
+Color = White
+Type = Colorized
+
+# Line Bonus
+[ScoreStaticBoxLight1]
+Tex = ScoreBar_box_light
+X = 203
+Y = 358
+W = 16
+H = 20
+Color = P1Light
+Type = Colorized
+
+[ScoreTextLineBonus1]
+X = 227
+Y = 352
+Color = White
+Font = 0
+Size = 30
+Text = SING_PHRASE_BONUS
+Align = 0
+
+[ScoreTextLineBonusScore1]
+X = 487
+Y = 352
+Color = White
+Font = 0
+Size = 30
+Align = 2
+Text = 0
+
+# A simple line
+[ScorePlayer1Static2]
+Tex = ScoreLine
+X = 200
+Y = 382
+W = 287
+H = 1
+Color = White
+Type = Colorized
+
+# Golden Notes
+[ScoreStaticBoxLightest1]
+Tex = ScoreBar_box_lightest
+X = 203
+Y = 390
+W = 16
+H = 20
+Color = P1Lightest
+Type = Colorized
+
+[ScoreTextGoldenNotes1]
+X = 227
+Y = 383
+Color = White
+Font = 0
+Size = 30
+Text = SING_GOLDEN_NOTES
+Align = 0
+
+[ScoreTextGoldenNotesScore1]
+X = 487
+Y = 383
+Color = White
+Font = 0
+Size = 30
+Align = 2
+Text = 0
+
+[ScoreTextTotal1]
+X = 225
+Y = 454
+Color = White
+Font = 0
+Size = 30
+Text = SING_TOTAL
+Align = 0
+Reflection = 1
+ReflectionSpacing = 26
+
+[ScoreTextTotalSCore1]
+X = 487
+Y = 444
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 0
+Reflection = 1
+ReflectionSpacing = 24
+
+#ScoreBar
+[ScoreStaticBackLevel1]
+Tex = ScoreLevel
+X = 503
+Y = 168
+W = 95
+H = 310
+Color = P1Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound1]
+Tex = ScoreLevelRound
+X = 503
+Y = 138
+W = 95
+H = 8
+Color = P1Lightest
+Type = Colorized
+
+[ScoreStaticLevel1]
+Tex = ScoreLevel
+X = 503
+Y = 400
+W = 95
+H = 10
+Color = P1Dark
+Type = Colorized
+
+[ScoreStaticLevelRound1]
+Tex = ScoreLevelRound
+X = 503
+Y = 392
+W = 95
+H = 8
+Color = P1Dark
+Type = Colorized
+
+[ScorePlayer1Static3]
+Tex = ScoreEndCap
+X = 499
+Y = 478
+W = 110
+H = 30
+z = 0.9
+Color = P1Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer1Static4]
+Tex = ScoreGlassBox
+X = 499
+Y = 148
+W = 113
+H = 331
+z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer1Avatar]
+X = 202
+Y = 170
+W = 72
+H = 97
+Z = 1
+
+[ScorePlayer1Static5]
+X = 193
+Y = 158
+W = 91
+H = 121
+Z = 0.9
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+
+# # # # # # # # # # # # # # # # # # Two Player Score # # # # # # # # # # # #
+# P L A Y E R O N E
+
+[ScoreStaticRatingPicture2]
+X = 180
+Y = 150
+H = 85
+W = 75
+
+[ScoreTextScore2]
+X = 217
+Y = 235
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+[ScoreStaticBoxDark2]
+Tex = ScoreBar_box_dark
+X = 50
+Y = 327
+W = 16
+H = 20
+Color = P1Dark
+Type = Colorized
+
+[ScoreTextNotes2]
+X = 72
+Y = 324
+Color = White
+Font = 0
+Size = 24
+Text = SING_NOTES
+Align = 0
+
+[ScoreTextNotesScore2]
+X = 282
+Y = 324
+Color = White
+Font = 0
+Size = 24
+Align = 2
+Text = 0000
+
+[ScoreStaticBoxLight2]
+Tex = ScoreBar_box_light
+X = 50
+Y = 358
+W = 16
+H = 20
+Color = P1Lightest
+Type = Colorized
+
+[ScoreTextLineBonus2]
+X = 72
+Y = 355
+Color = White
+Font = 0
+Size = 24
+Text = SING_PHRASE_BONUS
+Align = 0
+
+[ScoreTextLineBonusScore2]
+X = 282
+Y = 355
+Color = White
+Font = 0
+Size = 24
+Align = 2
+Text = 0000
+
+[ScoreStaticBoxLightest2]
+Tex = ScoreBar_box_lightest
+X = 50
+Y = 390
+W = 16
+H = 20
+Color = P1Lightest
+Type = Colorized
+
+[ScoreTextGoldenNotes2]
+X = 72
+Y = 387
+Color = White
+Font = 0
+Size = 24
+Text = SING_GOLDEN_NOTES
+Align = 0
+
+[ScoreTextGoldenNotesScore2]
+X = 282
+Y = 387
+Color = White
+Font = 0
+Size = 24
+Align = 2
+Text = 0000
+
+[ScoreTextTotal2]
+X = 70
+Y = 454
+Color = White
+Font = 0
+Size = 30
+Text = SING_TOTAL
+Reflection = 1
+ReflectionSpacing = 24
+
+[ScoreTextTotalSCore2]
+X = 283
+Y = 444
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Reflection = 1
+ReflectionSpacing = 24
+
+# Lines
+[ScorePlayer2Static1]
+Tex = ScoreLine
+X = 45
+Y = 351
+W = 237
+H = 1
+Type = Colorized
+Color = White
+
+[ScorePlayer2Static2]
+Tex = ScoreLine
+X = 45
+Y = 382
+W = 237
+H = 1
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreStaticBackLevel2]
+Tex = ScoreLevel
+X = 298
+Y = 168
+W = 95
+H = 310
+Color = P1Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound2]
+Tex = ScoreLevelRound
+X = 298
+Y = 138
+W = 95
+H = 8
+Color = P1Lightest
+Type = Colorized
+
+[ScoreStaticLevel2]
+Tex = ScoreLevel
+X = 298
+Y = 400
+W = 95
+H = 10
+Color = P1Dark
+Type = Colorized
+
+[ScoreStaticLevelRound2]
+Tex = ScoreLevelRound
+X = 298
+Y = 392
+W = 95
+H = 8
+Color = P1Dark
+Type = Colorized
+
+[ScorePlayer2Static3]
+Tex = ScoreEndCap
+X = 294
+Y = 478
+W = 110
+H = 30
+z = 0.9
+Color = P1Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer2Static4]
+Tex = ScoreGlassBox
+X = 294
+Y = 148
+W = 113
+H = 331
+z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer2Avatar]
+X = 50
+Y = 169
+W = 72
+H = 97
+Z = 1
+
+[ScorePlayer2Static5]
+X = 41
+Y = 157
+W = 91
+H = 121
+Z = 0.9
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+
+# P L A Y E R T W O
+
+[ScoreStaticRatingPicture3]
+X = 545
+Y = 165
+H = 75
+W = 75
+
+[ScoreTextScore3]
+X = 583
+Y = 235
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+[ScoreStaticBoxDark3]
+Tex = ScoreBar_box_dark
+X = 735
+Y = 327
+W = 16
+H = 20
+Color = P2Dark
+Type = Colorized
+
+[ScoreTextNotes3]
+X = 728
+Y = 324
+Color = White
+Font = 0
+Size = 24
+Text = SING_NOTES
+Align = 2
+
+[ScoreTextNotesScore3]
+X = 518
+Y = 324
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = 0000
+
+[ScoreStaticBoxLight3]
+Tex = ScoreBar_box_light
+X = 735
+Y = 358
+W = 16
+H = 20
+Color = P2Lightest
+Type = Colorized
+
+[ScoreTextLineBonus3]
+X = 728
+Y = 355
+Color = White
+Font = 0
+Size = 24
+Text = SING_PHRASE_BONUS
+Align = 2
+
+[ScoreTextLineBonusScore3]
+X = 518
+Y = 355
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = 0000
+
+[ScoreStaticBoxLightest3]
+Tex = ScoreBar_box_lightest
+X = 735
+Y = 390
+W = 16
+H = 20
+Color = P2Lightest
+Type = Colorized
+
+[ScoreTextGoldenNotes3]
+X = 728
+Y = 387
+Color = White
+Font = 0
+Size = 24
+Text = SING_GOLDEN_NOTES
+Align = 2
+
+[ScoreTextGoldenNotesScore3]
+X = 518
+Y = 387
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text = 0000
+
+[ScoreTextTotal3]
+X = 730
+Y = 454
+Color = White
+Font = 0
+Size = 30
+Text = SING_TOTAL
+Align = 2
+Reflection = 1
+ReflectionSpacing = 24
+
+[ScoreTextTotalScore3]
+X = 517
+Y = 444
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 00000
+Reflection = 1
+ReflectionSpacing = 24
+
+#Lines
+[ScorePlayer3Static1]
+Tex = ScoreLine
+X = 518
+Y = 351
+W = 237
+H = 1
+Type = Colorized
+Color = White
+
+[ScorePlayer3Static2]
+Tex = ScoreLine
+X = 518
+Y = 382
+W = 237
+H = 1
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreStaticBackLevel3]
+Tex = ScoreLevel
+X = 409
+Y = 168
+W = 95
+H = 310
+Color = P2Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound3]
+Tex = ScoreLevelRound
+X = 409
+Y = 138
+W = 95
+H = 8
+Color = P2Lightest
+Type = Colorized
+
+[ScoreStaticLevel3]
+Tex = ScoreLevel
+X = 409
+Y = 400
+W = 95
+H = 10
+Color = P2Dark
+Type = Colorized
+
+[ScoreStaticLevelRound3]
+Tex = ScoreLevelRound
+X = 409
+Y = 392
+W = 95
+H = 8
+Color = P2Dark
+Type = Colorized
+
+[ScorePlayer3Static3]
+Tex = ScoreEndCap
+X = 405
+Y = 478
+W = 110
+H = 30
+z = 0.9
+Color = P2Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer3Static4]
+Tex = ScoreGlassBox
+X = 405
+Y = 148
+W = 113
+H = 331
+z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer3Avatar]
+X = 673
+Y = 169
+W = 72
+H = 97
+Z = 1
+
+[ScorePlayer3Static5]
+X = 664
+Y = 157
+W = 91
+H = 121
+Z =
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+
+# # # # # # # # # # # # # # # # # # Three Player Score # # # # # # # # # # # #
+# P L A Y E R O N E
+
+# Rating
+
+[ScoreTextName4]
+X = 22
+Y = 135
+Font = 1
+Size = 38
+Align = 0
+Text = P3
+Color = White
+
+[ScoreStaticRatingPicture4]
+X = 160
+Y = 265
+H = 75
+W = 75
+Z = 2
+
+[ScoreTextScore4]
+X = 197
+Y = 335
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+[ScoreTextNotes4]
+X = 45
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreTextNotesScore4]
+X = 260
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextLineBonus4]
+X = 45
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreTextLineBonusScore4]
+X = 260
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextGoldenNotes4]
+X = 45
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreTextGoldenNotesScore4]
+X = 260
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreStaticBoxDark4]
+Tex = ScoreBar_box_dark
+X = 22
+Y = 185
+W = 16
+H = 20
+Color = P1Dark
+Type = Colorized
+
+[ScoreStaticBoxLight4]
+Tex = ScoreBar_box_light
+X = 22
+Y = 210
+W = 16
+H = 20
+Color = P1Light
+Type = Colorized
+
+[ScoreStaticBoxLightest4]
+Tex = ScoreBar_box_lightest
+X = 22
+Y = 235
+W = 16
+H = 20
+Color = P1Lightest
+Type = Colorized
+
+[ScoreTextTotal4]
+X = 74
+Y = 500
+Font = 0
+Size = 30
+Align = 1
+Text = SING_TOTAL
+Color = White
+
+[ScoreTextTotalScore4]
+X = 195
+Y = 495
+Font = 0
+Size = 42
+Align = 1
+Text = 00000
+Color = White
+
+#lines
+[ScorePlayer4Static1]
+X = 20
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer4Static2]
+X = 20
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer4Static3]
+X = 20
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer4Static4]
+X = 20
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreStaticBackLevel4]
+Tex = ScoreLevel
+X = 24
+Y = 291
+W = 95
+H = 169
+Color = P4Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound4]
+Tex = ScoreLevelRound
+X = 24
+Y = 138
+W = 95
+H = 8
+Color = P4Lightest
+Type = Colorized
+
+[ScoreStaticLevel4]
+Tex = ScoreLevel
+X = 24
+Y = 400
+W = 95
+H = 10
+Color = P4Dark
+Type = Colorized
+
+[ScoreStaticLevelRound4]
+Tex = ScoreLevelRound
+X = 24
+Y = 392
+W = 95
+H = 8
+Color = P4Dark
+Type = Colorized
+
+[ScorePlayer4Static5]
+Tex = ScoreEndCap
+X = 20
+Y = 450
+W = 110
+H = 30
+Z = 0.9
+Color = P1Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer4Static6]
+Tex = ScoreGlassBox
+X = 20
+Y = 270
+W = 113
+H = 180
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer4Avatar]
+X = 168
+Y = 391
+W = 58
+H = 82
+Z = 1
+
+[ScorePlayer4Static7]
+X = 161
+Y = 382
+W = 72
+H = 100
+Z = 0.9
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+
+# P L A Y E R T W O
+
+# Rating
+
+[ScoreTextName5]
+X = 282
+Y = 135
+Font = 1
+Size = 38
+Align = 0
+Text = P2
+Color = White
+
+[ScoreStaticRatingPicture5]
+X = 420
+Y = 265
+H = 75
+W = 75
+
+[ScoreTextScore5]
+X = 457
+Y = 335
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+[ScoreTextNotes5]
+X = 305
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreTextNotesScore5]
+X = 520
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextLineBonus5]
+X = 305
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreTextLineBonusScore5]
+X = 520
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextGoldenNotes5]
+X = 305
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreTextGoldenNotesScore5]
+X = 520
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreStaticBoxDark5]
+Tex = ScoreBar_box_dark
+X = 282
+Y = 185
+W = 16
+H = 20
+Color = P2Dark
+Type = Colorized
+
+[ScoreStaticBoxLight5]
+Tex = ScoreBar_box_light
+X = 282
+Y = 210
+W = 16
+H = 20
+Color = P2Light
+Type = Colorized
+
+[ScoreStaticBoxLightest5]
+Tex = ScoreBar_box_lightest
+X = 282
+Y = 235
+W = 16
+H = 20
+Color = P2Lightest
+Type = Colorized
+
+[ScoreTextTotal5]
+X = 325
+Y = 500
+Font = 0
+Size = 30
+Align = 1
+Text = SING_TOTAL
+Color = White
+
+[ScoreTextTotalScore5]
+X = 455
+Y = 495
+Font = 0
+Size = 42
+Align = 1
+Text = 00000
+Color = White
+
+#lines
+[ScorePlayer5Static1]
+X = 280
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer5Static2]
+X = 280
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer5Static3]
+X = 280
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer5Static4]
+X = 280
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreStaticBackLevel5]
+Tex = ScoreLevel
+X = 284
+Y = 291
+W = 95
+H = 169
+Color = P5Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound5]
+Tex = ScoreLevelRound
+X = 284
+Y = 138
+W = 95
+H = 8
+Color = P5Lightest
+Type = Colorized
+
+[ScoreStaticLevel5]
+Tex = ScoreLevel
+X = 284
+Y = 400
+W = 95
+H = 10
+Color = P5Dark
+Type = Colorized
+
+[ScoreStaticLevelRound5]
+Tex = ScoreLevelRound
+X = 284
+Y = 392
+W = 95
+H = 8
+Color = P5Dark
+Type = Colorized
+
+[ScorePlayer5Static5]
+Tex = ScoreEndCap
+X = 280
+Y = 450
+W = 110
+H = 30
+Z = 0.9
+Color = P2Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer5Static6]
+Tex = ScoreGlassBox
+X = 280
+Y = 270
+W = 113
+H = 180
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer5Avatar]
+X = 427
+Y = 391
+W = 58
+H = 82
+Z = 0.9
+
+[ScorePlayer5Static7]
+X = 421
+Y = 382
+W = 72
+H = 100
+Z = 0.9
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+
+# P L A Y E R T H R E E
+[ScoreTextName6]
+X = 540
+Y = 135
+Font = 1
+Size = 38
+Align = 0
+Text = P3
+Color = White
+
+# Rating
+[ScoreStaticRatingPicture6]
+X = 680
+Y = 265
+H = 75
+W = 75
+
+[ScoreTextScore6]
+X = 717
+Y = 335
+W = 100
+Color = White
+Font = 0
+Size = 27
+Text = Tone Deaf
+Align = 1
+
+[ScoreTextNotes6]
+X = 565
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreTextNotesScore6]
+X = 780
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextLineBonus6]
+X = 565
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreTextLineBonusScore6]
+X = 780
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreTextGoldenNotes6]
+X = 565
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreTextGoldenNotesScore6]
+X = 780
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreStaticBoxDark6]
+Tex = ScoreBar_box_dark
+X = 542
+Y = 185
+W = 16
+H = 20
+Color = P3Dark
+Type = Colorized
+
+[ScoreStaticBoxLight6]
+Tex = ScoreBar_box_light
+X = 542
+Y = 210
+W = 16
+H = 20
+Color = P3Light
+Type = Colorized
+
+[ScoreStaticBoxLightest6]
+Tex = ScoreBar_box_lightest
+X = 542
+Y = 235
+W = 16
+H = 20
+Color = P3Lightest
+Type = Colorized
+
+[ScoreTextTotal6]
+X = 590
+Y = 500
+Font = 0
+Size = 30
+Align = 1
+Text = SING_TOTAL
+Color = White
+
+[ScoreTextTotalScore6]
+X = 720
+Y = 495
+Font = 0
+Size = 42
+Align = 1
+Text = 00000
+Color = White
+
+#lines
+[ScorePlayer6Static1]
+X = 540
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer6Static2]
+X = 540
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer6Static3]
+X = 540
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScorePlayer6Static4]
+X = 540
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreStaticBackLevel6]
+Tex = ScoreLevel
+X = 544
+Y = 291
+W = 95
+H = 169
+Color = P6Lightest
+Type = Colorized
+
+[ScoreStaticBackLevelRound6]
+Tex = ScoreLevelRound
+X = 544
+Y = 138
+W = 95
+H = 8
+Color = P6Lightest
+Type = Colorized
+
+[ScoreStaticLevel6]
+Tex = ScoreLevel
+X = 544
+Y = 400
+W = 95
+H = 10
+Color = P6Dark
+Type = Colorized
+
+[ScoreStaticLevelRound6]
+Tex = ScoreLevelRound
+X = 544
+Y = 392
+W = 95
+H = 8
+Color = P6Dark
+Type = Colorized
+
+[ScorePlayer6Static5]
+Tex = ScoreEndCap
+X = 540
+Y = 450
+W = 110
+H = 30
+z = 0.9
+Color = P3Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScorePlayer6Static6]
+Tex = ScoreGlassBox
+X = 540
+Y = 270
+W = 113
+H = 180
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScorePlayer6Avatar]
+X = 689
+Y = 391
+W = 58
+H = 82
+Z = 0.9
+
+[ScorePlayer6Static7]
+X = 682
+Y = 382
+W = 72
+H = 100
+Z = 0.9
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+
+#################################################
+## ##
+## Four Player Score One Screen ##
+## ##
+#################################################
+# P L A Y E R O N E
+[ScoreFourPTextName1]
+X = 75
+Y = 140
+Font = 1
+Size = 32
+Align = 0
+Text = P1
+Color = White
+
+# Rating
+[ScoreFourPStaticRatingPicture1]
+X = 315
+Y = 160
+H = 55
+W = 55
+Z = 100
+
+[ScoreFourPTextScore1]
+X = 340
+Y = 220
+W = 100
+Color = White
+Font = 0
+Size = 24
+Text = Tone Deaf
+Align = 1
+
+[ScoreFourPTextNotes1]
+X = 45
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreFourPTextNotesScore1]
+X = 260
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextLineBonus1]
+X = 45
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreFourPTextLineBonusScore1]
+X = 260
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextGoldenNotes1]
+X = 45
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreFourPTextGoldenNotesScore1]
+X = 260
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPStaticBoxDark1]
+Tex = ScoreBar_box_dark
+X = 20
+Y = 185
+W = 18
+H = 20
+Color = P1Dark
+Type = Colorized
+
+[ScoreFourPStaticBoxLight1]
+Tex = ScoreBar_box_light
+X = 20
+Y = 210
+W = 18
+H = 20
+Color = P1Light
+Type = Colorized
+
+[ScoreFourPStaticBoxLightest1]
+Tex = ScoreBar_box_lightest
+X = 20
+Y = 235
+W = 18
+H = 20
+Color = P1Lightest
+Type = Colorized
+
+[ScoreFourPTextTotal1]
+X = 45
+Y = 280
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreFourPTextTotalScore1]
+X = 260
+Y = 275
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreFourPPlayer1Static1]
+X = 20
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer1Static2]
+X = 20
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer1Static3]
+X = 20
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer1Static4]
+X = 20
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreFourPStaticBackLevel1]
+Tex = ScoreLevel
+X = 294
+Y = 155
+W = 95
+H = 125
+Color = P1Lightest
+Type = Colorized
+
+[ScoreFourPStaticBackLevelRound1]
+Tex = ScoreLevelRound
+X = 294
+Y = 155
+W = 95
+H = 8
+Color = P1Lightest
+Type = Colorized
+
+[ScoreFourPStaticLevel1]
+Tex = ScoreLevel
+X = 294
+Y = 400
+W = 95
+H = 10
+Color = P1Dark
+Type = Colorized
+
+[ScoreFourPStaticLevelRound1]
+Tex = ScoreLevelRound
+X = 294
+Y = 392
+W = 95
+H = 8
+Color = P1Dark
+Type = Colorized
+
+[ScoreFourPPlayer1Static5]
+Tex = ScoreEndCap
+X = 290
+Y = 280
+W = 110
+H = 30
+Z = 0.9
+Color = P1Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScoreFourPPlayer1Static6]
+Tex = ScoreGlassBox
+X = 290
+Y = 140
+W = 113
+H = 140
+Z = 0.89
+Color = White
+Type = Transparent
+
+
+[ScoreFourPPlayer1Avatar]
+X = 24
+Y = 115
+W = 36
+H = 49
+Z = 1
+
+[ScoreFourPPlayer1Static7]
+X = 20
+Y = 110
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+
+# P L A Y E R T W O
+[ScoreFourPTextName2]
+X = 595
+Y = 140
+Font = 1
+Size = 32
+Align = 0
+Text = P2
+Color = White
+
+# Rating
+[ScoreFourPStaticRatingPicture2]
+X = 435
+Y = 160
+H = 55
+W = 55
+
+[ScoreFourPTextScore2]
+X = 460
+Y = 220
+W = 100
+Color = White
+Font = 0
+Size = 24
+Text = Tone Deaf
+Align = 1
+
+[ScoreFourPTextNotes2]
+X = 565
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreFourPTextNotesScore2]
+X = 780
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextLineBonus2]
+X = 565
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreFourPTextLineBonusScore2]
+X = 780
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextGoldenNotes2]
+X = 565
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreFourPTextGoldenNotesScore2]
+X = 780
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPStaticBoxDark2]
+Tex = ScoreBar_box_dark
+X = 540
+Y = 185
+W = 18
+H = 20
+Color = P2Dark
+Type = Colorized
+
+[ScoreFourPStaticBoxLight2]
+Tex = ScoreBar_box_light
+X = 540
+Y = 210
+W = 18
+H = 20
+Color = P2Light
+Type = Colorized
+
+[ScoreFourPStaticBoxLightest2]
+Tex = ScoreBar_box_lightest
+X = 540
+Y = 235
+W = 18
+H = 20
+Color = P2Lightest
+Type = Colorized
+
+[ScoreFourPTextTotal2]
+X = 565
+Y = 280
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreFourPTextTotalScore2]
+X = 780
+Y = 275
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreFourPPlayer2Static1]
+X = 540
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer2Static2]
+X = 540
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer2Static3]
+X = 540
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer2Static4]
+X = 540
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreFourPStaticBackLevel2]
+Tex = ScoreLevel
+X = 414
+Y = 155
+W = 95
+H = 125
+Color = P2Lightest
+Type = Colorized
+
+[ScoreFourPStaticBackLevelRound2]
+Tex = ScoreLevelRound
+X = 414
+Y = 155
+W = 95
+H = 8
+Color = P2Lightest
+Type = Colorized
+
+[ScoreFourPStaticLevel2]
+Tex = ScoreLevel
+X = 414
+Y = 400
+W = 95
+H = 10
+Color = P2Dark
+Type = Colorized
+
+[ScoreFourPStaticLevelRound2]
+Tex = ScoreLevelRound
+X = 414
+Y = 392
+W = 95
+H = 8
+Color = P2Dark
+Type = Colorized
+
+[ScoreFourPPlayer2Static5]
+Tex = ScoreEndCap
+X = 410
+Y = 280
+W = 110
+H = 30
+Z = 0.9
+Color = P2Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScoreFourPPlayer2Static6]
+Tex = ScoreGlassBox
+X = 410
+Y = 140
+W = 113
+H = 140
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScoreFourPPlayer2Avatar]
+X = 544
+Y = 115
+W = 36
+H = 49
+Z = 1
+
+[ScoreFourPPlayer2Static7]
+X = 540
+Y = 110
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+
+# P L A Y E R T H R E E
+[ScoreFourPTextName3]
+X = 75
+Y = 360
+Font = 1
+Size = 32
+Align = 0
+Text = P1
+Color = White
+
+# Rating
+[ScoreFourPStaticRatingPicture3]
+X = 315
+Y = 380
+H = 55
+W = 55
+Z = 100
+
+[ScoreFourPTextScore3]
+X = 340
+Y = 440
+W = 100
+Color = White
+Font = 0
+Size = 24
+Text = Tone Deaf
+Align = 1
+
+[ScoreFourPTextNotes3]
+X = 45
+Y = 400
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreFourPTextNotesScore3]
+X = 260
+Y = 400
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextLineBonus3]
+X = 45
+Y = 425
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreFourPTextLineBonusScore3]
+X = 260
+Y = 425
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextGoldenNotes3]
+X = 45
+Y = 450
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreFourPTextGoldenNotesScore3]
+X = 260
+Y = 450
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPStaticBoxDark3]
+Tex = ScoreBar_box_dark
+X = 20
+Y = 405
+W = 18
+H = 20
+Color = P3Dark
+Type = Colorized
+
+[ScoreFourPStaticBoxLight3]
+Tex = ScoreBar_box_light
+X = 20
+Y = 430
+W = 18
+H = 20
+Color = P3Light
+Type = Colorized
+
+[ScoreFourPStaticBoxLightest3]
+Tex = ScoreBar_box_lightest
+X = 20
+Y = 455
+W = 18
+H = 20
+Color = P3Lightest
+Type = Colorized
+
+[ScoreFourPTextTotal3]
+X = 45
+Y = 500
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreFourPTextTotalScore3]
+X = 260
+Y = 495
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreFourPPlayer3Static1]
+X = 20
+Y = 400
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer3Static2]
+X = 20
+Y = 425
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer3Static3]
+X = 20
+Y = 450
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer3Static4]
+X = 20
+Y = 475
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreFourPStaticBackLevel3]
+Tex = ScoreLevel
+X = 294
+Y = 382
+W = 95
+H = 118
+Color = P3Lightest
+Type = Colorized
+
+[ScoreFourPStaticBackLevelRound3]
+Tex = ScoreLevelRound
+X = 294
+Y = 375
+W = 95
+H = 10
+Color = P3Lightest
+Type = Colorized
+
+[ScoreFourPStaticLevel3]
+Tex = ScoreLevel
+X = 294
+Y = 385
+W = 95
+H = 8
+Color = P3Dark
+Type = Colorized
+
+[ScoreFourPStaticLevelRound3]
+Tex = ScoreLevelRound
+X = 294
+Y = 385
+W = 95
+H = 8
+Color = P3Dark
+Type = Colorized
+
+[ScoreFourPPlayer3Static5]
+Tex = ScoreEndCap
+X = 290
+Y = 500
+W = 110
+H = 30
+Z = 0.9
+Color = P3Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScoreFourPPlayer3Static6]
+Tex = ScoreGlassBox
+X = 290
+Y = 360
+W = 113
+H = 140
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScoreFourPPlayer3Avatar]
+X = 24
+Y = 335
+W = 36
+H = 49
+Z = 1
+
+[ScoreFourPPlayer3Static7]
+X = 20
+Y = 330
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+
+# P L A Y E R F O U R
+[ScoreFourPTextName4]
+X = 595
+Y = 360
+Font = 1
+Size = 32
+Align = 0
+Text = P4
+Color = White
+
+# Rating
+[ScoreFourPStaticRatingPicture4]
+X = 435
+Y = 380
+H = 55
+W = 55
+
+[ScoreFourPTextScore4]
+X = 460
+Y = 440
+W = 100
+Color = White
+Font = 0
+Size = 24
+Text = Tone Deaf
+Align = 1
+
+[ScoreFourPTextNotes4]
+X = 565
+Y = 400
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreFourPTextNotesScore4]
+X = 780
+Y = 400
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextLineBonus4]
+X = 565
+Y = 425
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreFourPTextLineBonusScore4]
+X = 780
+Y = 425
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPTextGoldenNotes4]
+X = 565
+Y = 450
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreFourPTextGoldenNotesScore4]
+X = 780
+Y = 450
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreFourPStaticBoxDark4]
+Tex = ScoreBar_box_dark
+X = 540
+Y = 405
+W = 18
+H = 20
+Color = P4Dark
+Type = Colorized
+
+[ScoreFourPStaticBoxLight4]
+Tex = ScoreBar_box_light
+X = 540
+Y = 430
+W = 18
+H = 20
+Color = P4Light
+Type = Colorized
+
+[ScoreFourPStaticBoxLightest4]
+Tex = ScoreBar_box_lightest
+X = 540
+Y = 455
+W = 18
+H = 20
+Color = P4Lightest
+Type = Colorized
+
+[ScoreFourPTextTotal4]
+X = 565
+Y = 500
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreFourPTextTotalScore4]
+X = 780
+Y = 495
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreFourPPlayer4Static1]
+X = 540
+Y = 400
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer4Static2]
+X = 540
+Y = 425
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer4Static3]
+X = 540
+Y = 450
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreFourPPlayer4Static4]
+X = 540
+Y = 475
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+#ScoreBar
+[ScoreFourPStaticBackLevel4]
+Tex = ScoreLevel
+X = 414
+Y = 382
+W = 95
+H = 118
+Color = P4Lightest
+Type = Colorized
+
+[ScoreFourPStaticBackLevelRound4]
+Tex = ScoreLevelRound
+X = 414
+Y = 375
+W = 95
+H = 8
+Color = P4Lightest
+Type = Colorized
+
+[ScoreFourPStaticLevel4]
+Tex = ScoreLevel
+X = 414
+Y = 400
+W = 95
+H = 10
+Color = P4Dark
+Type = Colorized
+
+[ScoreFourPStaticLevelRound4]
+Tex = ScoreLevelRound
+X = 414
+Y = 392
+W = 95
+H = 8
+Color = P4Dark
+Type = Colorized
+
+[ScoreFourPPlayer4Static5]
+Tex = ScoreEndCap
+X = 410
+Y = 500
+W = 110
+H = 30
+Z = 0.9
+Color = P4Dark
+Type = Colorized
+Reflection = 1
+ReflectionSpacing = 0
+
+[ScoreFourPPlayer4Static6]
+Tex = ScoreGlassBox
+X = 410
+Y = 360
+W = 113
+H = 140
+Z = 0.89
+Color = White
+Type = Transparent
+
+[ScoreFourPPlayer4Avatar]
+X = 544
+Y = 335
+W = 36
+H = 49
+Z = 1
+
+[ScoreFourPPlayer4Static7]
+X = 540
+Y = 330
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+
+#################################################
+## ##
+## Six Player Score One Screen ##
+## ##
+#################################################
+# P L A Y E R O N E
+[ScoreSixPTextName1]
+X = 75
+Y = 135
+Font = 1
+Size = 32
+Align = 0
+Text = P1
+Color = White
+
+[ScoreSixPTextNotes1]
+X = 20
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore1]
+X = 260
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus1]
+X = 20
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore1]
+X = 260
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes1]
+X = 20
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore1]
+X = 260
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal1]
+X = 20
+Y = 280
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore1]
+X = 260
+Y = 275
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer1Static1]
+X = 20
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer1Static2]
+X = 20
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer1Static3]
+X = 20
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer1Static4]
+X = 20
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+
+[ScoreSixPPlayer1Avatar]
+X = 24
+Y = 115
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer1Static5]
+X = 20
+Y = 110
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P1Dark
+Type = Colorized
+
+
+# P L A Y E R T W O
+[ScoreSixPTextName2]
+X = 335
+Y = 135
+Font = 1
+Size = 32
+Align = 0
+Text = P2
+Color = White
+
+[ScoreSixPTextNotes2]
+X = 280
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore2]
+X = 520
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus2]
+X = 280
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore2]
+X = 520
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes2]
+X = 280
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore2]
+X = 520
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal2]
+X = 280
+Y = 280
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore2]
+X = 520
+Y = 275
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer2Static1]
+X = 280
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer2Static2]
+X = 280
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer2Static3]
+X = 280
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer2Static4]
+X = 280
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+
+[ScoreSixPPlayer2Avatar]
+X = 284
+Y = 115
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer2Static5]
+X = 280
+Y = 110
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P2Dark
+Type = Colorized
+
+# P L A Y E R T H R E E
+[ScoreSixPTextName3]
+X = 595
+Y = 135
+Font = 1
+Size = 32
+Align = 0
+Text = P2
+Color = White
+
+[ScoreSixPTextNotes3]
+X = 540
+Y = 180
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore3]
+X = 780
+Y = 180
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus3]
+X = 540
+Y = 205
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore3]
+X = 780
+Y = 205
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes3]
+X = 540
+Y = 230
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore3]
+X = 780
+Y = 230
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal3]
+X = 540
+Y = 280
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore3]
+X = 780
+Y = 275
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer3Static1]
+X = 540
+Y = 180
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer3Static2]
+X = 540
+Y = 205
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer3Static3]
+X = 540
+Y = 230
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer3Static4]
+X = 540
+Y = 255
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer3Avatar]
+X = 544
+Y = 115
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer3Static5]
+X = 540
+Y = 110
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P3Dark
+Type = Colorized
+
+# P L A Y E R F O U R
+[ScoreSixPTextName4]
+X = 75
+Y = 355
+Font = 1
+Size = 32
+Align = 0
+Text = P1
+Color = White
+
+[ScoreSixPTextNotes4]
+X = 20
+Y = 400
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore4]
+X = 260
+Y = 400
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus4]
+X = 20
+Y = 425
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore4]
+X = 260
+Y = 425
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes4]
+X = 20
+Y = 450
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore4]
+X = 260
+Y = 450
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal4]
+X = 20
+Y = 500
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore4]
+X = 260
+Y = 495
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer4Static1]
+X = 20
+Y = 400
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer4Static2]
+X = 20
+Y = 425
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer4Static3]
+X = 20
+Y = 450
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer4Static4]
+X = 20
+Y = 475
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer4Avatar]
+X = 24
+Y = 337
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer4Static5]
+X = 20
+Y = 332
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P4Dark
+Type = Colorized
+
+# P L A Y E R F I V E
+[ScoreSixPTextName5]
+X = 335
+Y = 355
+Font = 1
+Size = 32
+Align = 0
+Text = P5
+Color = White
+
+[ScoreSixPTextNotes5]
+X = 280
+Y = 400
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore5]
+X = 520
+Y = 400
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus5]
+X = 280
+Y = 425
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore5]
+X = 520
+Y = 425
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes5]
+X = 280
+Y = 450
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore5]
+X = 520
+Y = 450
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal5]
+X = 280
+Y = 500
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore5]
+X = 520
+Y = 495
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer5Static1]
+X = 280
+Y = 400
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer5Static2]
+X = 280
+Y = 425
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer5Static3]
+X = 280
+Y = 450
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer5Static4]
+X = 280
+Y = 475
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer5Avatar]
+X = 284
+Y = 337
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer5Static5]
+X = 280
+Y = 332
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P5Dark
+Type = Colorized
+
+# P L A Y E R S I X
+[ScoreSixPTextName6]
+X = 595
+Y = 355
+Font = 1
+Size = 32
+Align = 0
+Text = P2
+Color = White
+
+[ScoreSixPTextNotes6]
+X = 540
+Y = 400
+Font = 0
+Size = 26
+Align = 0
+Text = SING_NOTES
+Color = White
+
+[ScoreSixPTextNotesScore6]
+X = 780
+Y = 400
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextLineBonus6]
+X = 540
+Y = 425
+Font = 0
+Size = 26
+Align = 0
+Text = SING_PHRASE_BONUS
+Color = White
+
+[ScoreSixPTextLineBonusScore6]
+X = 780
+Y = 425
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextGoldenNotes6]
+X = 540
+Y = 450
+Font = 0
+Size = 26
+Align = 0
+Text = SING_GOLDEN_NOTES
+Color = White
+
+[ScoreSixPTextGoldenNotesScore6]
+X = 780
+Y = 450
+Font = 0
+Size = 26
+Align = 2
+Text = 0000
+Color = White
+
+[ScoreSixPTextTotal6]
+X = 540
+Y = 500
+Font = 0
+Size = 30
+Align = 0
+Text = SING_TOTAL
+Color = White
+
+[ScoreSixPTextTotalScore6]
+X = 780
+Y = 495
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+Color = White
+
+#lines
+[ScoreSixPPlayer6Static1]
+X = 540
+Y = 400
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer6Static2]
+X = 540
+Y = 425
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer6Static3]
+X = 540
+Y = 450
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer6Static4]
+X = 540
+Y = 475
+W = 240
+H = 1
+Tex = ScoreLine
+Type = Colorized
+Color = White
+
+[ScoreSixPPlayer6Avatar]
+X = 544
+Y = 337
+W = 36
+H = 49
+Z = 1
+
+[ScoreSixPPlayer6Static5]
+X = 540
+Y = 332
+W = 44
+H = 59
+Z = 0.9
+Tex = AvatarFrame2
+Color = P6Dark
+Type = Colorized
+
+############################
+# Send Score 1 Player #
+############################
+
+[ScoreButtonSend1]
+X = 200
+Y = 505
+W = 180
+H = 30
+Tex = ButtonSendScore
+DColor = ColorLight
+Color = ColorDark
+Type = Transparent
+Texts = 1
+
+[ScoreButtonSend1Text1]
+X = 90
+Y = 4
+Font = 0
+Size = 24
+Align = 1
+Color = White
+Text = SCORE_SEND_DESC
+
+############################
+# Send Score 2/4 Players #
+############################
+
+[ScoreButtonSend2]
+X = 310
+Y = 100
+W = 180
+H = 30
+Z = 1
+Tex = ButtonSendScore
+DColor = ColorLight
+Color = ColorDark
+Type = Transparent
+Texts = 1
+
+[ScoreButtonSend2Text1]
+X = 90
+Y = 4
+Font = 0
+Size = 24
+Align = 1
+Color = White
+Text = SCORE_SEND_DESC
+
+############################
+# Send Score 3/6 Players #
+############################
+
+[ScoreButtonSend3]
+X = 310
+Y = 100
+W = 180
+H = 30
+Z = 1
+Tex = ButtonSendScore
+DColor = ColorLight
+Color = ColorDark
+Type = Transparent
+Texts = 1
+
+[ScoreButtonSend3Text1]
+X = 90
+Y = 4
+Font = 0
+Size = 24
+Align = 1
+Color = White
+Text = SCORE_SEND_DESC
+
+################################
+## Send Score PopUp ##
+################################
+
+[SendScorePopup]
+
+[SendScorePopupBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.4
+
+[SendScorePopupStatic1]
+Tex = interface_dialog_background2
+X = 200
+Y = 150
+W = 400
+H = 280
+Z = 1
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 15
+
+[SendScorePopupText1]
+X = 400
+Y = 157
+W = 400
+Color = ColorLight
+Font = 0
+Size = 30
+Align = 1
+Z = 1
+
+[SendScorePopupSelectSlide1]
+Text = SCORE_SEND_PLAYER
+TexSBG = Rectangle
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 220
+Y = 220
+W = 120
+H = 25
+Z = 1
+SkipX = 10
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SendScorePopupSelectSlide2]
+Text = SING_OPTIONS_NETWORK_WEBSITE
+TexSBG = Rectangle
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 220
+Y = 250
+W = 120
+H = 25
+Z = 1
+SkipX = 10
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SendScorePopupSelectSlide3]
+Text = SING_OPTIONS_NETWORK_USERNAME
+TexSBG = Rectangle
+TypeSBG = Colorized
+ShowArrows = 1
+OneItemOnly = 1
+X = 220
+Y = 280
+W = 120
+H = 25
+Z = 1
+SkipX = 10
+SBGW = 220
+TextSize = 24
+Color = ColorLight
+DColor = ColorDark
+TColor = White
+TDColor = White
+SBGColor = ColorLight
+SBGDColor = ColorDark
+STColor = White
+STDColor = White
+
+[SendScorePopupButtonUsername]
+X = 380
+Y = 320
+W = 160
+H = 25
+Tex = Button
+Color = GrayLight
+DColor = GrayDark
+Type = Transparent
+Texts = 2
+Z = 1
+
+[SendScorePopupButtonUsernameText1]
+X = 5
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[SendScorePopupButtonUsernameText2]
+X = -120
+Y = 0
+Text=SING_OPTIONS_NETWORK_USERNAME
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[SendScorePopupButtonPassword]
+X = 380
+Y = 350
+W = 160
+H = 25
+Tex = Button
+Color = GrayLight
+DColor = GrayDark
+Type = Transparent
+Texts = 2
+Z = 1
+
+[SendScorePopupButtonPasswordText1]
+X = 5
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[SendScorePopupButtonPasswordText2]
+X = -120
+Y = 0
+Text=SING_OPTIONS_NETWORK_PASSWORD
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[SendScorePopupButton1]
+X = 295
+Y = 390
+W = 100
+H = 25
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+Z = 1
+
+[SendScorePopupButton1Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Z = 1
+
+[SendScorePopupButton2]
+X = 405
+Y = 390
+W = 100
+H = 25
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+Z = 1
+
+[SendScorePopupButton2Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Z = 1
+
+[ScoreDownloadPopup]
+
+[ScoreDownloadPopupBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.4
+
+[ScoreDownloadPopupStatic1]
+Tex = interface_dialog_background
+X = 200
+Y = 150
+W = 400
+H = 200
+Z = 1
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 15
+
+[ScoreDownloadPopupText1]
+X = 400
+Y = 160
+W = 400
+Color = ColorLight
+Font = 0
+Size = 30
+Text = SCORE_DOWNLOAD_TITLE
+Align = 1
+Z = 1
+
+[ScoreDownloadPopupSongText]
+X = 220
+Y = 210
+W = 280
+Color = White
+Font = 0
+Size = 30
+Text = song progress
+Align = 0
+Z = 1
+
+[ScoreDownloadPopupWebText]
+X = 580
+Y = 210
+W = 280
+Color = White
+Font = 0
+Size = 30
+Text = web progress
+Align = 2
+Z = 1
+
+[ScoreDownloadPopupButton1]
+X = 350
+Y = 310
+W = 100
+H = 25
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+Z = 1
+
+[ScoreDownloadPopupButton1Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = YES
+Align = 1
+Z = 1
+
+[ScoreDownloadPopupStatic2]
+Tex = ProgressBar
+X = 219
+Y = 248
+W = 362
+H = 20
+Z = 1
+Color = Gray
+Type = Transparent
+
+[ScoreDownloadPopupStatic3]
+Tex = ProgressBar
+X = 219
+Y = 273
+W = 362
+H = 20
+Z = 1
+Color = Gray
+Type = Transparent
+
+[ScoreDownloadPopupProgressSong]
+X = 220
+Y = 250
+W = 360
+H = 16
+Color = ColorDark
+
+[ScoreDownloadPopupProgressWeb]
+X = 220
+Y = 275
+W = 360
+H = 16
+Color = ColorDark
+
+[Top5]
+Texts = 1
+
+[Top5Background]
+Tex = Top5BG
+
+[Top5Text1]
+X = 70
+Y = 6
+Color = White
+Font = 0
+Size = 60
+Align = 0
+Text = SING_TOP_5_CHARTS
+
+[Top5TextArtistTitle]
+X = 70
+Y = 59
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = artist - title
+
+[Top5Text4]
+X = 70
+Y = 83
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = SING_OPTIONS_GAME_DIFFICULTY
+
+[Top5TextLevel]
+X = 270
+Y = 83
+Color = White
+Font = 0
+Size = 30
+Align = 1
+Text = easy
+
+[Top5Text5]
+X = 560
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_TOP_5_CHARTS_SWITCH_DIFFICULTY
+
+[Top5TextName1]
+X = 150
+Y = 190
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 1. Player1
+
+[Top5TextName2]
+X = 150
+Y = 240
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 2. Player2
+
+[Top5TextName3]
+X = 150
+Y = 290
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 3. Player3
+
+[Top5TextName4]
+X = 150
+Y = 340
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 4. Player4
+
+[Top5TextName5]
+X = 150
+Y = 390
+Color = White
+Font = 0
+Size = 42
+Align = 0
+Text = 5. Player5
+
+[Top5TextScore1]
+X = 560
+Y = 190
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextScore2]
+X = 560
+Y = 240
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextScore3]
+X = 560
+Y = 290
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextScore4]
+X = 560
+Y = 340
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextScore5]
+X = 560
+Y = 390
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+
+[Top5TextDate1]
+X = 760
+Y = 190
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextDate2]
+X = 760
+Y = 240
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextDate3]
+X = 760
+Y = 290
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextDate4]
+X = 760
+Y = 340
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextDate5]
+X = 760
+Y = 390
+Color = White
+Font = 0
+Size = 42
+Align = 2
+Text = 00000
+
+[Top5TextNumber1]
+X = 120
+Y = 196
+Color = White
+Font = 1
+Size = 27
+Align = 1
+Text = 1
+
+[Top5TextNumber2]
+X = 120
+Y = 246
+Color = White
+Font = 1
+Size = 27
+Align = 1
+Text = 2
+
+[Top5TextNumber3]
+X = 120
+Y = 296
+Color = White
+Font = 1
+Size = 27
+Align = 1
+Text = 3
+
+[Top5TextNumber4]
+X = 120
+Y = 346
+Color = White
+Font = 1
+Size = 27
+Align = 1
+Text = 4
+
+[Top5TextNumber5]
+X = 120
+Y = 396
+Color = White
+Font = 1
+Size = 27
+Align = 1
+Text = 5
+
+[Top5StaticNumber1]
+Tex = PlayerNumberBox
+X = 106
+Y = 190
+W = 29
+H = 38
+alpha = 0.6
+Color = ColorDark
+Type = Colorized
+
+[Top5StaticNumber2]
+Tex = PlayerNumberBox
+X = 106
+Y = 240
+W = 29
+H = 38
+alpha = 0.6
+Color = ColorDark
+Type = Colorized
+
+[Top5StaticNumber3]
+Tex = PlayerNumberBox
+X = 106
+Y = 290
+W = 29
+H = 38
+alpha = 0.6
+Color = ColorDark
+Type = Colorized
+
+[Top5StaticNumber4]
+Tex = PlayerNumberBox
+X = 106
+Y = 340
+W = 29
+H = 38
+alpha = 0.6
+Color = ColorDark
+Type = Colorized
+
+[Top5StaticNumber5]
+Tex = PlayerNumberBox
+X = 106
+Y = 390
+W = 29
+H = 38
+alpha = 0.6
+Color = ColorDark
+Type = Colorized
+
+############################
+###### P A R T Y #######
+############################
+
+[PartyOptions]
+Texts = 5
+
+[PartyOptionsBackground]
+Tex = PartyBG
+
+[PartyOptionsText1]
+X = 40
+Y = 20
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyOptionsStatic1]
+X = 370
+Y = 552
+Z = 0.75
+W = 20
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyOptionsText2]
+X = 395
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyOptionsSelectMode]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECT_MODE
+X = 70
+Y = 110
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyOptionsSelectLevel]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_DIFFICULTY
+X = 70
+Y = 165
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+#TexSBG = SelectBG
+#W = 230
+#H = 40
+#SkipX = 10
+
+[PartyOptionsSelectPlayList]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_PLAYLIST
+X = 70
+Y = 220
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyOptionsSelectPlayList2]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_PLAYLIST
+X = 70
+Y = 275
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyOptionsSelectRounds]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_ROUNDS
+X = 70
+Y = 250
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+############################
+## P L A Y E R P A R T Y ##
+############################
+
+[PartyPlayer]
+Texts = 6
+
+[PartyPlayerBackground]
+Tex = PartyBG
+
+[PartyPlayerStatic1]
+X = 370
+Y = 552
+Z = 0.75
+W = 20
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyPlayerText1]
+X = 40
+Y = 20
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyPlayerText2]
+X = 70
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = PARTY_PLAYER_ENTER_NAME
+
+[PartyPlayerText3]
+X = 395
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyPlayerSelectTeams]
+Tex = MainBar
+TexSBG = SelectBG
+Type = Transparent
+TypeSBG = Transparent
+Text = PARTY_TEAMS
+X = 70
+Y = 110
+W = 230
+H = 40
+SkipX = 10
+Fields = 2
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyPlayerSelectPlayers1]
+Tex = MainBar
+TexSBG = PartyPlayerSelectBG
+Type = Transparent
+TypeSBG = Transparent
+Text = PARTY_TEAMS_PLAYER1
+X = 310
+Y = 175
+W = 200
+SBGW = 190
+H = 40
+SkipX = 10
+Fields = 1
+
+TColor = White
+TDColor = White
+
+STColor = White
+STDColor = GrayDark
+
+[PartyPlayerSelectPlayers2]
+Tex = MainBar
+TexSBG = PartyPlayerSelectBG
+Type = Transparent
+TypeSBG = Transparent
+Text = PARTY_TEAMS_PLAYER2
+X = 310
+Y = 300
+W = 200
+SBGW = 190
+H = 40
+SkipX = 10
+Fields = 1
+
+TColor = White
+TDColor = White
+
+STColor = White
+STDColor = GrayDark
+
+[PartyPlayerSelectPlayers3]
+Tex = MainBar
+Type = Transparent
+TypeSBG = Transparent
+TexSBG = PartyPlayerSelectBG
+Text = PARTY_TEAMS_PLAYER3
+X = 310
+Y = 425
+W = 200
+SBGW = 190
+H = 40
+SkipX = 10
+Fields = 4
+
+TColor = White
+TDColor = White
+
+STColor = White
+STDColor = GrayDark
+
+[PartyPlayerTeam1Name]
+Tex = PartyTeamButton2
+X = 70
+Y = 175
+W = 230
+H = 40
+Type = Transparent
+Color = P1Dark
+DColor = P1Light
+Texts = 1
+
+[PartyPlayerTeam1NameText1]
+X = 115
+Y = 4
+Font = 0
+Size = 32
+Align = 1
+Text = Team 1
+Color = White
+
+[PartyPlayerPlayer1Name]
+Tex = Button
+X = 70
+Y = 225
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P1Lightest
+DColor = P1Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer1NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 1
+Color = White
+
+[PartyPlayerPlayer2Name]
+Tex = Button
+X = 232
+Y = 225
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P1Lightest
+DColor = P1Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer2NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 2
+Color = White
+
+[PartyPlayerPlayer3Name]
+Tex = Button
+X = 394
+Y = 225
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P1Lightest
+DColor = P1Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer3NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 3
+Color = White
+
+[PartyPlayerPlayer4Name]
+Tex = Button
+X = 556
+Y = 225
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P1Lightest
+DColor = P1Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer4NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 4
+Color = White
+
+[PartyPlayerTeam2Name]
+Tex = PartyTeamButton2
+X = 70
+Y = 300
+W = 230
+H = 40
+Type = Transparent
+Texts = 1
+Color = P2Dark
+DColor = P2Light
+
+[PartyPlayerTeam2NameText1]
+X = 115
+Y = 4
+Font = 0
+Size = 32
+Align = 1
+Text = Team 2
+Color = White
+
+[PartyPlayerPlayer5Name]
+Tex = Button
+X = 70
+Y = 350
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P2Lightest
+DColor = P2Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer5NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 5
+Color = White
+
+[PartyPlayerPlayer6Name]
+Tex = Button
+X = 232
+Y = 350
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P2Lightest
+DColor = P2Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer6NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 6
+Color = White
+
+[PartyPlayerPlayer7Name]
+Tex = Button
+X = 394
+Y = 350
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P2Lightest
+DColor = P2Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer7NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 7
+Color = White
+
+[PartyPlayerPlayer8Name]
+Tex = Button
+X = 556
+Y = 350
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P2Lightest
+DColor = P2Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer8NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 8
+Color = White
+
+[PartyPlayerTeam3Name]
+Tex = PartyTeamButton2
+X = 70
+Y = 425
+W = 230
+H = 40
+Type = Transparent
+Texts = 1
+Color = P1Dark
+DColor = P1Light
+
+[PartyPlayerTeam3NameText1]
+X = 115
+Y = 4
+Font = 0
+Size = 32
+Align = 1
+Text = Team 3
+Color = White
+
+[PartyPlayerPlayer9Name]
+Tex = Button
+X = 70
+Y = 475
+Z = 0.6
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P3Lightest
+DColor = P3Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer9NameText1]
+X = 75
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 9
+Color = White
+
+[PartyPlayerPlayer10Name]
+Tex = Button
+X = 232
+Y = 475
+Z = 0.6
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P3Lightest
+DColor = P3Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer10NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 10
+Color = White
+
+[PartyPlayerPlayer11Name]
+Tex = Button
+X = 394
+Y = 475
+Z = 0.6
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P3Lightest
+DColor = P3Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer11NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 11
+Color = White
+
+[PartyPlayerPlayer12Name]
+Tex = Button
+X = 556
+Y = 475
+Z = 0.6
+W = 154
+H = 40
+Type = Transparent
+Texts = 1
+Color = P3Lightest
+DColor = P3Light
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyPlayerPlayer12NameText1]
+X = 77
+Y = 5
+Font = 0
+Size = 30
+Align = 1
+Text = Player 12
+Color = White
+
+############################
+## R O U N D P A R T Y ##
+############################
+
+[PartyRoundsBackground]
+Tex = PartyBG
+
+[PartyRoundsStatic1]
+X = 388
+Y = 552
+W = 20
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyRoundsText1]
+X = 40
+Y = 20
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyRoundsText2]
+X = 418
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = PARTY_ROUNDS_LEGEND_CONTINUE
+
+[PartyRoundsSelectRoundCount]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_ROUNDCOUNT
+X = 70
+Y = 100
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound1]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE1
+X = 70
+Y = 155
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound2]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE2
+X = 70
+Y = 210
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound3]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE3
+X = 70
+Y = 265
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound4]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE4
+X = 70
+Y = 320
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound5]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE5
+X = 70
+Y = 375
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound6]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE6
+X = 70
+Y = 430
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[PartyRoundsSelectRound7]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_SELECTMODE7
+X = 70
+Y = 485
+W = 230
+H = 40
+SkipX = 10
+Fields = 7
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+############################
+## S U M A R Y P A R T Y ##
+############################
+[PartyNewRound]
+Texts = 4
+
+[PartyNewRoundBackground]
+Tex = MainBG
+
+[PartyNewRoundText1]
+X = 50
+Y = 10
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyNewRoundText2]
+X = 400
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 1
+Text = PARTY_ROUND_LEGEND_CONTINUE
+
+[PartyNewRoundText3]
+X = 460
+Y = 100
+Color = White
+Font = 0
+Size = 30
+Text = PARTY_ROUND
+Align = 0
+
+[PartyNewRoundText4]
+X = 600
+Y = 100
+Color = White
+Font = 0
+Size = 30
+Text = PARTY_ROUND_WINNER
+Align = 0
+
+[PartyNewRoundText5]
+X = 448
+Y = 350
+Color = White
+Font = 0
+Size = 54
+Text = PARTY_ROUND
+Align = 2
+
+[PartyNewRoundTextTeam1Players]
+X = 30
+Y = 137
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = Dummytext, Player2, Player3, Player4
+
+[PartyNewRoundTextTeam2Players]
+X = 30
+Y = 218
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = Dummytext, Player2, Player3, Player4
+
+[PartyNewRoundTextTeam3Players]
+X = 30
+Y = 299
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = Dummytext, Player2, Player3, Player4
+
+[PartyNewRoundStatic4]
+Tex = PartyRoundBG1
+X = 450
+Y = 103
+W = 330
+H = 24
+Color = ColorDark
+Type = Colorized
+
+[PartyNewRoundStatic5]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyNewRoundStatic6]
+Tex = PartyRoundBG3
+X = 250
+Y = 350
+W = 300
+H = 50
+Color = ColorLight
+Type = Colorized
+
+[PartyNewRoundStatic7]
+Tex = PartyRoundBG4
+X = 50
+Y = 495
+W = 700
+H = 30
+Color = ColorLight
+Type = Colorized
+
+[PartyNewRoundStaticTeam1]
+Tex = PartyTeamButton1
+X = 20
+Y = 110
+W = 400
+H = 50
+Color = P1Dark
+Type = Transparent
+Reflection = 0
+
+[PartyNewRoundStaticTeam2]
+Tex = PartyTeamButton1
+X = 20
+Y = 191
+W = 400
+H = 50
+Color = P2Dark
+Type = Transparent
+Reflection = 0
+
+[PartyNewRoundStaticTeam3]
+Tex = PartyTeamButton1
+X = 20
+Y = 272
+W = 400
+H = 50
+Color = P3Dark
+Type = Transparent
+Reflection = 0
+
+[PartyNewRoundStaticNextPlayer1]
+Tex = PartyPlayerButton
+X = 155
+Y = 415
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = P1Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyNewRoundStaticNextPlayer2]
+Tex = PartyPlayerButton
+X = 325
+Y = 415
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = P2Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyNewRoundStaticNextPlayer3]
+Tex = PartyPlayerButton
+X = 495
+Y = 415
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = P3Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyNewRoundTextRound1]
+X = 460
+Y = 133
+Color = White
+Font = 0
+Size = 24
+Text = Round 1
+Align = 0
+
+[PartyNewRoundTextRound2]
+X = 460
+Y = 162
+Color = White
+Font = 0
+Size = 24
+Text = Round 2
+Align = 0
+
+[PartyNewRoundTextRound3]
+X = 460
+Y = 191
+Color = White
+Font = 0
+Size = 24
+Text = Round 3
+Align = 0
+
+[PartyNewRoundTextRound4]
+X = 460
+Y = 220
+Color = White
+Font = 0
+Size = 24
+Text = Round 4
+Align = 0
+
+[PartyNewRoundTextRound5]
+X = 460
+Y = 249
+Color = White
+Font = 0
+Size = 24
+Text = Round 5
+Align = 0
+
+[PartyNewRoundTextRound6]
+X = 460
+Y = 278
+Color = White
+Font = 0
+Size = 24
+Text = Round 6
+Align = 0
+
+[PartyNewRoundTextRound7]
+X = 460
+Y = 307
+Color = White
+Font = 0
+Size = 24
+Text = Round 7
+Align = 0
+
+[PartyNewRoundTextWinner1]
+X = 600
+Y = 133
+Color = White
+Font = 0
+Size = 24
+Text = Winner 1
+Align = 0
+
+[PartyNewRoundTextWinner2]
+X = 600
+Y = 162
+Color = White
+Font = 0
+Size = 24
+Text = Winner 2
+Align = 0
+
+[PartyNewRoundTextWinner3]
+X = 600
+Y = 191
+Color = White
+Font = 0
+Size = 24
+Text = Winner 3
+Align = 0
+
+[PartyNewRoundTextWinner4]
+X = 600
+Y = 220
+Color = White
+Font = 0
+Size = 24
+Text = Winner 4
+Align = 0
+
+[PartyNewRoundTextWinner5]
+X = 600
+Y = 249
+Color = White
+Font = 0
+Size = 24
+Text = Winner 5
+Align = 0
+
+[PartyNewRoundTextWinner6]
+X = 600
+Y = 278
+Color = White
+Font = 0
+Size = 24
+Text = Winner 6
+Align = 0
+
+[PartyNewRoundTextWinner7]
+X = 600
+Y = 307
+Color = White
+Font = 0
+Size = 24
+Text = Winner 7
+Align = 0
+
+[PartyNewRoundStaticRound1]
+Tex = PartyRoundBG2
+X = 450
+Y = 135
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound2]
+Tex = PartyRoundBG2
+X = 450
+Y = 164
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound3]
+Tex = PartyRoundBG2
+X = 450
+Y = 193
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound4]
+Tex = PartyRoundBG2
+X = 450
+Y = 222
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound5]
+Tex = PartyRoundBG2
+X = 450
+Y = 251
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound6]
+Tex = PartyRoundBG2
+X = 450
+Y = 280
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundStaticRound7]
+Tex = PartyRoundBG2
+X = 450
+Y = 309
+W = 330
+H = 20
+Color = ColorLightest
+Type = Colorized
+
+[PartyNewRoundTextNextRound]
+X = 400
+Y = 495
+Color = White
+Font = 0
+Size = 30
+Text = Next Round
+Align = 1
+
+[PartyNewRoundTextNextRoundNo]
+X = 457
+Y = 350
+Color = White
+Font = 0
+Size = 54
+Text = 99
+Align = 0
+
+[PartyNewRoundTextScoreTeam1]
+X = 390
+Y = 110
+Color = White
+Font = 0
+Size = 51
+Text = 3000
+Align = 1
+
+[PartyNewRoundTextScoreTeam2]
+X = 390
+Y = 191
+Color = White
+Font = 0
+Size = 51
+Text = 2000
+Align = 1
+
+[PartyNewRoundTextScoreTeam3]
+X = 390
+Y = 272
+Color = White
+Font = 0
+Size = 51
+Text = 1000
+Align = 1
+
+[PartyNewRoundTextNameTeam1]
+X = 30
+Y = 108
+Color = White
+Font = 0
+Size = 36
+Text = Team 1
+Align = 0
+
+[PartyNewRoundTextNameTeam2]
+X = 30
+Y = 189
+Color = White
+Font = 0
+Size = 36
+Text = Team 2
+Align = 0
+
+[PartyNewRoundTextNameTeam3]
+X = 30
+Y = 270
+Color = White
+Font = 0
+Size = 36
+Text = Team 3
+Align = 0
+
+[PartyNewRoundTextNextPlayer1]
+X = 230
+Y = 425
+Color = White
+Font = 0
+Size = 30
+Text = Player 1
+Align = 1
+
+[PartyNewRoundTextNextPlayer2]
+X = 400
+Y = 425
+Color = White
+Font = 0
+Size = 30
+Text = Player 2
+Align = 1
+
+[PartyNewRoundTextNextPlayer3]
+X = 570
+Y = 425
+Color = White
+Font = 0
+Size = 30
+Text = Player 3
+Align = 1
+
+
+[PartyScore]
+Texts = 5
+
+[PartyScoreBackground]
+Tex = PartyBG
+
+[PartyScoreDecoTextures]
+ChangeTextures = 1
+
+FirstTexture = PartyScoreDeco
+FirstTyp = Colorized
+FirstColor = Gold
+
+SecondTexture = PartyScoreDeco
+SecondTyp = Colorized
+SecondColor = Silver
+
+ThirdTexture = PartyScoreDeco
+ThirdTyp = Colorized
+ThirdColor = Bronze
+
+[PartyScoreStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyScoreStatic4]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyScoreText1]
+X = 70
+Y = 6
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyScoreText2]
+X = 70
+Y = 53
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_SCORE_DESC
+
+[PartyScoreText3]
+X = 238
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_SCORE_WHEREAMI
+
+[PartyScoreText4]
+X = 290
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = PARTY_LEGEND_CONTINUE
+
+[PartyScoreStatic5]
+Tex = PartyScoreBG1
+X = 50
+Y = 100
+W = 700
+H = 80
+Color = ColorDark
+Type = Colorized
+
+[PartyScoreStatic6]
+Tex = PartyScoreBG2
+X = 50
+Y = 495
+W = 700
+H = 20
+Color = ColorLight
+Type = Colorized
+
+[PartyScoreText5]
+X = 400
+Y = 136
+Color = White
+Font = 0
+Size = 45
+Text = PARTY_SCORE_WINS2
+Align = 1
+
+[PartyScoreTextWinner]
+X = 400
+Y = 98
+Color = White
+Font = 0
+Size = 54
+Text = The Winner is...
+Align = 1
+
+[PartyScoreTextScoreTeam1]
+X = 568
+Y = 198
+Color = White
+Font = 0
+Size = 36
+Text = 3000
+Align = 2
+
+[PartyScoreTextScoreTeam2]
+X = 568
+Y = 298
+Color = White
+Font = 0
+Size = 36
+Text = 2000
+Align = 2
+
+[PartyScoreTextScoreTeam3]
+X = 568
+Y = 398
+Color = White
+Font = 0
+Size = 36
+Text = 1000
+Align = 2
+
+[PartyScoreTextNameTeam1]
+X = 188
+Y = 198
+Font = 0
+Size = 36
+Align = 0
+Text = Team 1
+Color = White
+
+[PartyScoreTextNameTeam2]
+X = 188
+Y = 298
+Color = White
+Font = 0
+Size = 36
+Text = Team 2
+Align = 0
+
+[PartyScoreTextNameTeam3]
+X = 188
+Y = 398
+Color = White
+Font = 0
+Size = 36
+Text = Team 3
+Align = 0
+
+[PartyScoreStaticTeam1]
+X = 188
+Y = 230
+W = 380
+H = 16
+Z = 1
+Tex = PartyTeamPoints
+Color = P1Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyScoreStaticTeam1BG]
+Tex = PartyTeamButton2
+X = 178
+Y = 200
+W = 400
+H = 50
+Type = Transparent
+Color = P1Dark
+DColor = P1Light
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyScoreStaticTeam1Deco]
+Tex = PartyScoreDeco
+X = 563
+Y = 191
+W = 64
+H = 64
+Type = Transparent
+Color = Gold
+Reflection = 1
+ReflectionSpacing = -5
+
+[PartyScoreStaticTeam2]
+X = 188
+Y = 330
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P2Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyScoreStaticTeam2BG]
+Tex = PartyTeamButton2
+X = 178
+Y = 300
+W = 400
+H = 50
+Type = Transparent
+Color = P2Dark
+DColor = P2Light
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyScoreStaticTeam2Deco]
+Tex = PartyScoreDeco
+X = 563
+Y = 291
+W = 64
+H = 64
+Type = Transparent
+Color = Gold
+Reflection = 1
+ReflectionSpacing = -5
+
+[PartyScoreStaticTeam3]
+X = 188
+Y = 430
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P3Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyScoreStaticTeam3BG]
+Tex = PartyTeamButton2
+X = 178
+Y = 400
+W = 400
+H = 50
+Type = Transparent
+Color = P3Dark
+DColor = P3Light
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyScoreStaticTeam3Deco]
+Tex = PartyScoreDeco
+X = 563
+Y = 391
+W = 64
+H = 64
+Type = Transparent
+Color = Gold
+Reflection = 1
+ReflectionSpacing = -5
+
+[PartyWin]
+Texts = 4
+
+[PartyWinBackground]
+Tex = PartyBG
+
+[PartyWinStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyWinStatic4]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyWinText1]
+X = 70
+Y = 6
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE
+
+[PartyWinText2]
+X = 70
+Y = 53
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_WIN_DESC
+
+[PartyWinText3]
+X = 238
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 2
+Text = PARTY_WIN_WHEREAMI
+
+[PartyWinText4]
+X = 290
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = PARTY_WIN_LEGEND_CONTINUE
+
+#[PartyWinTextWinner]
+#X = 150
+#Y = 120
+#Color = White
+#Font = 1
+#Size = 42
+#Text = The Winner is...
+#Align = 0
+
+[PartyWinTextScoreTeam1]
+X = 699
+Y = 183
+Color = White
+Font = 0
+Size = 57
+Text = 3000
+Align = 2
+
+[PartyWinTextScoreTeam2]
+X = 669
+Y = 298
+Color = White
+Font = 0
+Size = 36
+Text = 2000
+Align = 2
+
+[PartyWinTextScoreTeam3]
+X = 649
+Y = 398
+Color = White
+Font = 0
+Size = 27
+Text = 1000
+Align = 2
+
+[PartyWinTextNameTeam1]
+X = 169
+Y = 183
+Font = 0
+Size = 57
+Align = 0
+Text = Team 1
+Color = White
+
+[PartyWinTextNameTeam2]
+X = 289
+Y = 298
+Color = White
+Font = 0
+Size = 36
+Text = Team 2
+Align = 0
+
+[PartyWinTextNameTeam3]
+X = 369
+Y = 398
+Color = White
+Font = 0
+Size = 27
+Text = Team 3
+Align = 0
+
+[PartyWinStaticTeam1]
+X = 169
+Y = 230
+W = 530
+H = 16
+Z = 1
+Tex = PartyTeamPoints
+Color = TeamColor
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam1BG]
+Tex = PartyTeamButton3
+X = 159
+Y = 185
+W = 550
+H = 65
+Type = Transparent
+Color = TeamColor
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam1Rank1]
+X = 169
+Y = 230
+W = 530
+H = 16
+Z = 1
+Tex = PartyTeamPoints
+Color = P1Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam1BGRank1]
+Tex = PartyTeamButton3
+X = 159
+Y = 185
+W = 550
+H = 65
+Type = Transparent
+Color = P1Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam1Rank2]
+X = 289
+Y = 330
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P1Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam1BGRank2]
+Tex = PartyTeamButton3
+X = 279
+Y = 300
+W = 400
+H = 50
+Type = Transparent
+Color = P1Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam1Rank3]
+X = 369
+Y = 420
+W = 280
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P1Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam1BGRank3]
+Tex = PartyTeamButton3
+X = 359
+Y = 400
+W = 300
+H = 40
+Type = Transparent
+Color = P1Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+
+[PartyWinStaticTeam1Deco]
+Tex = PartyWinDeco1
+X = 91
+Y = 176
+W = 79
+H = 79
+Type = Transparent
+Color = Gold
+Reflection = 1
+ReflectionSpacing = 3
+
+[PartyWinStaticTeam2]
+X = 289
+Y = 330
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = TeamColor
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam2BG]
+Tex = PartyTeamButton4
+X = 279
+Y = 300
+W = 400
+H = 50
+Type = Transparent
+Color = TeamColor
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam2Rank1]
+X = 169
+Y = 230
+W = 530
+H = 16
+Z = 1
+Tex = PartyTeamButton3
+Color = P2Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam2BGRank1]
+Tex = PartyTeamButton4
+X = 159
+Y = 185
+W = 550
+H = 65
+Type = Transparent
+Color = P2Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam2Rank2]
+X = 289
+Y = 330
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P2Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam2BGRank2]
+Tex = PartyTeamButton4
+X = 279
+Y = 300
+W = 400
+H = 50
+Type = Transparent
+Color = P2Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam2Rank3]
+X = 369
+Y = 420
+W = 280
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = TeamColor
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam2BGRank3]
+Tex = PartyTeamButton4
+X = 359
+Y = 400
+W = 300
+H = 40
+Type = Transparent
+Color = TeamColor
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam2Deco]
+Tex = PartyWinDeco2
+X = 226
+Y = 291
+W = 64
+H = 64
+Type = Transparent
+Color = Silver
+Reflection = 1
+ReflectionSpacing = 3
+
+[PartyWinStaticTeam3]
+X = 369
+Y = 420
+W = 280
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = TeamColor
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam3BG]
+Tex = PartyTeamButton5
+X = 359
+Y = 400
+W = 300
+H = 40
+Type = Transparent
+Color = TeamColor
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam3Rank1]
+X = 169
+Y = 230
+W = 530
+H = 16
+Z = 1
+Tex = PartyTeamPoints
+Color = P3Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam3BGRank1]
+Tex = PartyTeamButton3
+X = 159
+Y = 185
+W = 550
+H = 65
+Type = Transparent
+Color = P3Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam3Rank2]
+X = 289
+Y = 330
+W = 380
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P3Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam3BGRank2]
+Tex = PartyTeamButton5
+X = 279
+Y = 300
+W = 400
+H = 50
+Type = Transparent
+Color = P3Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam3Rank3]
+X = 369
+Y = 420
+W = 280
+H = 15
+Z = 1
+Tex = PartyTeamPoints
+Color = P3Dark
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 12
+
+[PartyWinStaticTeam3BGRank3]
+Tex = PartyTeamButton5
+X = 359
+Y = 400
+W = 300
+H = 40
+Type = Transparent
+Color = P3Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyWinStaticTeam3Deco]
+Tex = PartyWinDeco3
+X = 316
+Y = 391
+W = 54
+H = 54
+Type = Transparent
+Color = Bronze
+Reflection = 1
+ReflectionSpacing = 3
+
+[PartyTournamentPlayer]
+Texts = 5
+
+[PartyTournamentPlayerBackground]
+Tex = PartyBG
+
+[PartyTournamentPlayerStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyTournamentPlayerStatic4]
+X = 260
+Y = 552
+Z = 0.75
+W = 24
+H = 23
+Tex = ButtonNavi
+Color = White
+Type = Transparent
+
+[PartyTournamentPlayerStatic5]
+X = 388
+Y = 552
+Z = 0.75
+W = 32
+H = 23
+Tex = ButtonAZ
+Color = White
+Type = Transparent
+
+[PartyTournamentPlayerStatic6]
+X = 556
+Y = 552
+Z = 0.75
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyTournamentPlayerText1]
+X = 70
+Y = 6
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE_TOURNAMENT
+
+[PartyTournamentPlayerText2]
+X = 65
+Y = 70
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_MODE_TOURNAMENT_PLAYER_DESC
+
+[PartyTournamentPlayerText3]
+X = 294
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_NAVIGATE
+
+[PartyTournamentPlayerText4]
+X = 418
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = PARTY_PLAYER_ENTER_NAME
+
+[PartyTournamentPlayerText5]
+X = 586
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyTournamentPlayerSelectPlayers]
+Text = PARTY_MODE_TOURNAMENT_NUMBER_PLAYERS
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 35
+SkipX = 10
+
+DColor = ColorDark
+Color = ColorLight
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+[PartyTournamentPlayerPlayer1Name]
+Tex = Button
+X = 70
+Y = 210
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer1NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 1
+Color = White
+
+[PartyTournamentPlayerPlayer2Name]
+Tex = Button
+X = 240
+Y = 210
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer2NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 2
+Color = White
+
+[PartyTournamentPlayerPlayer3Name]
+Tex = Button
+X = 410
+Y = 210
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer3NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 3
+Color = White
+
+[PartyTournamentPlayerPlayer4Name]
+Tex = Button
+X = 580
+Y = 210
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer4NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 4
+Color = White
+
+[PartyTournamentPlayerPlayer5Name]
+Tex = Button
+X = 70
+Y = 290
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer5NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 5
+Color = White
+
+[PartyTournamentPlayerPlayer6Name]
+Tex = Button
+X = 240
+Y = 290
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer6NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 6
+Color = White
+
+[PartyTournamentPlayerPlayer7Name]
+Tex = Button
+X = 410
+Y = 290
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer7NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 7
+Color = White
+
+[PartyTournamentPlayerPlayer8Name]
+Tex = Button
+X = 580
+Y = 290
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer8NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 8
+Color = White
+
+[PartyTournamentPlayerPlayer9Name]
+Tex = Button
+X = 70
+Y = 370
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer9NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 9
+Color = White
+
+[PartyTournamentPlayerPlayer10Name]
+Tex = Button
+X = 240
+Y = 370
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer10NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 10
+Color = White
+
+[PartyTournamentPlayerPlayer11Name]
+Tex = Button
+X = 410
+Y = 370
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer11NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 11
+Color = White
+
+[PartyTournamentPlayerPlayer12Name]
+Tex = Button
+X = 580
+Y = 370
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer12NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 12
+Color = White
+
+[PartyTournamentPlayerPlayer13Name]
+Tex = Button
+X = 70
+Y = 450
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer13NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 13
+Color = White
+
+[PartyTournamentPlayerPlayer14Name]
+Tex = Button
+X = 240
+Y = 450
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer14NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 14
+Color = White
+
+[PartyTournamentPlayerPlayer15Name]
+Tex = Button
+X = 410
+Y = 450
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer15NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 15
+Color = White
+
+[PartyTournamentPlayerPlayer16Name]
+Tex = Button
+X = 580
+Y = 450
+Z = 0.6
+W = 150
+H = 50
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorDark
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentPlayerPlayer16NameText1]
+X = 75
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = Player 16
+Color = White
+
+[PartyTournamentOptions]
+Texts = 4
+
+[PartyTournamentOptionsBackground]
+Tex = PartyBG
+
+
+[PartyTournamentOptionsStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyTournamentOptionsStatic4]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonNavi
+Color = White
+Type = Transparent
+
+[PartyTournamentOptionsStatic5]
+X = 388
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyTournamentOptionsText1]
+X = 70
+Y = 5
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE_TOURNAMENT
+
+[PartyTournamentOptionsText2]
+X = 70
+Y = 65
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_MODE_TOURNAMENT_OPTIONS_DESC
+
+[PartyTournamentOptionsText3]
+X = 294
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_NAVIGATE
+
+[PartyTournamentOptionsText4]
+X = 418
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyTournamentOptionsSelectRoundsFinal]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_MODE_TOURNAMENT_ROUNDS_FINAL
+X = 70
+Y = 110
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor = ColorDark
+Color = ColorLight
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+[PartyTournamentOptionsSelectRounds2Final]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_MODE_TOURNAMENT_ROUNDS_2FINAL
+X = 70
+Y = 165
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor = ColorDark
+Color = ColorLight
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+[PartyTournamentOptionsSelectRounds4Final]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_MODE_TOURNAMENT_ROUNDS_4FINAL
+X = 70
+Y = 220
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor = ColorDark
+Color = ColorLight
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+[PartyTournamentOptionsSelectRounds8Final]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = PARTY_MODE_TOURNAMENT_ROUNDS_8FINAL
+X = 70
+Y = 275
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor = ColorDark
+Color = ColorLight
+TColor = White
+TDColor = White
+
+SBGDColor = ColorDark
+SBGColor = ColorLight
+STColor = White
+STDColor = GrayDark
+
+
+[PartyTournamentRounds]
+Texts = 3
+
+[PartyTournamentRoundsBackground]
+Tex = PartyBG
+
+[PartyTournamentRoundsStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyTournamentRoundsStatic4]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyTournamentRoundsStatic5]
+X = 310
+Y = 180
+W = 270
+H = 270
+Tex = PartyTrophy
+Color = White
+Type = Transparent
+
+[PartyTournamentRoundsStatic6]
+X = 300
+Y = 450
+W = 200
+H = 80
+Tex = PartyWinner
+Color = White
+Type = Transparent
+Texts = 1
+
+[PartyTournamentRoundsText1]
+X = 70
+Y = 5
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE_TOURNAMENT
+
+[PartyTournamentRoundsText2]
+X = 70
+Y = 65
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_MODE_TOURNAMENT_ROUNDS_DESC
+
+[PartyTournamentRoundsText3]
+X = 294
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyTournamentRoundsTextNameBlock1Player1]
+Tex = Button
+X = 20
+Y = 130
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player1Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player2]
+Tex = Button
+X = 20
+Y = 180
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player2Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player3]
+Tex = Button
+X = 20
+Y = 230
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player3Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player4]
+Tex = Button
+X = 20
+Y = 280
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player4Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player5]
+Tex = Button
+X = 20
+Y = 330
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player5Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player6]
+Tex = Button
+X = 20
+Y = 380
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player6Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player7]
+Tex = Button
+X = 20
+Y = 430
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player7Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock1Player8]
+Tex = Button
+X = 20
+Y = 480
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock1Player8Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player1]
+Tex = Button
+X = 660
+Y = 130
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player1Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player2]
+Tex = Button
+X = 660
+Y = 180
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player2Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player3]
+Tex = Button
+X = 660
+Y = 230
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player3Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player4]
+Tex = Button
+X = 660
+Y = 280
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player4Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player5]
+Tex = Button
+X = 660
+Y = 330
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player5Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player6]
+Tex = Button
+X = 660
+Y = 380
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player6Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player7]
+Tex = Button
+X = 660
+Y = 430
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player7Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsTextNameBlock2Player8]
+Tex = Button
+X = 660
+Y = 480
+Z = 0.6
+W = 120
+H = 30
+Type = Transparent
+Texts = 1
+Color = ColorLight
+DColor = ColorLightest
+Reflection = 1
+ReflectionSpacing = 1
+
+[PartyTournamentRoundsTextNameBlock2Player8Text1]
+X = 60
+Y = 6
+Font = 0
+Size = 20
+Align = 1
+Color = White
+
+[PartyTournamentRoundsResult]
+X = 6
+Y = 6
+Font = 0
+Size = 18
+Color = White
+
+[PartyTournamentRoundsWinner]
+X = 400
+Y = 478
+Color = Bronze
+Font = 2
+Size = 28
+Align = 1
+
+[PartyTournamentRoundsNextPlayers]
+X = 6
+Y = -8
+Font = 1
+Size = 20
+Color = White
+
+
+[PartyTournamentWin]
+Texts = 3
+
+[PartyTournamentWinBackground]
+Tex = PartyBG
+
+[PartyTournamentWinStatic3]
+X = 40
+Y = 22
+W = 27
+H = 27
+Color = White
+Tex = PartyIcon
+Type = Colorized
+
+[PartyTournamentWinStatic4]
+X = 260
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[PartyTournamentWinText1]
+X = 70
+Y = 6
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = PARTY_MODE_TOURNAMENT
+
+[PartyTournamentWinText2]
+X = 70
+Y = 53
+Color = White
+Font = 0
+Size = 30
+Align = 0
+Text = PARTY_MODE_TOURNAMENT_WIN_DESC
+
+[PartyTournamentWinText3]
+X = 290
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[PartyTournamentWinTextScorePlayer1]
+X = 620
+Y = 180
+Color = White
+Font = 0
+Size = 57
+Text = 3000
+Align = 2
+
+[PartyTournamentWinTextScorePlayer2]
+X = 620
+Y = 330
+Color = White
+Font = 0
+Size = 57
+Text = 2000
+Align = 2
+
+[PartyTournamentWinTextNamePlayer1]
+X = 170
+Y = 180
+Font = 0
+Size = 57
+Align = 0
+Text = Team 1
+Color = White
+
+[PartyTournamentWinTextNamePlayer2]
+X = 170
+Y = 330
+Color = White
+Font = 0
+Size = 57
+
+[PartyTournamentWinStaticBGPlayer1]
+Tex = PartyTeamButton3
+X = 140
+Y = 170
+W = 520
+H = 78
+Type = Transparent
+Color = P1Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+[PartyTournamentWinStaticBGPlayer2]
+Tex = PartyTeamButton3
+X = 140
+Y = 320
+W = 520
+H = 78
+Type = Transparent
+Color = P2Dark
+Reflection = 1
+ReflectionSpacing = 2
+
+
+##########################################
+## ##
+## JUKEBOX MODE ##
+## ##
+##########################################
+
+[JukeboxPlaylist]
+Texts = 5
+
+[JukeboxPlaylistBackground]
+Tex = PartyBG
+
+[JukeboxPlaylistStatic1]
+X = 388
+Y = 552
+W = 24
+H = 23
+Tex = ButtonEnter
+Color = White
+Type = Transparent
+
+[JukeboxPlaylistText1]
+X = 70
+Y = 25
+ColR = 0.7
+ColG = 0.7
+ColB = 0.7
+Font = 0
+Size = 60
+Color = White
+Text = JUKEBOX_MODE
+
+[JukeboxPlaylistText2]
+X = 418
+Y = 552
+Color = White
+Font = 0
+Size = 21
+Align = 0
+Text = SING_LEGEND_CONTINUE
+
+[JukeboxPlaylistSelectPlayList]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = JUKEBOX_OPTIONS_PLAYLIST_MODE
+X = 70
+Y = 110
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+[JukeboxPlaylistSelectPlayList2]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = JUKEBOX_OPTIONS_PLAYLIST
+X = 70
+Y = 165
+W = 230
+H = 40
+SkipX = 10
+Fields = 1
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGDColor = GrayLight
+SBGColor = ColorDark
+STColor = White
+STDColor = GrayDark
+
+#----------------------------
+
+#[JukeboxTimeBackground]
+#Tex = JukeboxTimeBar1
+#X = 325
+#Y = 460
+#W = 315
+#H = 25
+#Color = White
+#Type = Transparent
+
+#[JukeboxTimeProgress]
+#X = 339
+#Y = 468
+#W = 248
+#H = 8
+#Color = White
+#Type = Colorized
+
+#[JukeboxTimeText]
+#X = 630
+#Y = 466
+#W = 35
+#Font = 1
+#Size = 14
+#Color = White
+#Align = 2
+
+################ NOT USED ################
+[JukeboxLyricsUpperBar]
+X = 80
+W = 640
+Y = 490
+H = 54
+;YOffSet (+/-) for the Sing-Indicator
+IndicatorYOffset = 3
+
+[JukeboxLyricsLowerBar]
+X = 80
+W = 640
+Y = 535
+H = 54
+#############################################
+
+[JukeboxSongListBackground]
+Tex = JukeboxSongListBackground
+X = 100
+Y = 55
+W = 600
+H = 440
+Color = White
+Type = Colorized
+
+[JukeboxListText]
+X = 120
+Y = 65
+W = 500
+Color = White
+Font = 1
+Size = 24
+Align = 0
+Z = 1
+Text=JUKEBOX_SONGLIST
+
+[JukeboxCountText]
+X = 680
+Y = 385
+W = 100
+Color = White
+Font = 1
+Size = 15
+Align = 2
+Z = 1
+
+[JukeboxSongDescription]
+X = 120
+Y = 110
+W = 560
+H = 25
+Tex = JukeboxSongSelection
+Color = ColorDark
+DColor = White
+Type = Colorized
+Texts=2
+
+[JukeboxSongDescriptionText1]
+X = 10
+Y = 3
+W = 100
+Color = White
+Font = 0
+Size = 18
+Align = 0
+Z = 1
+
+[JukeboxSongDescriptionText2]
+X = 550
+Y = 3
+W = 100
+Color = WhiteGray
+Font = 0
+Size = 18
+Align = 2
+Z = 1
+
+[JukeboxFind]
+X = 310
+Y = 385
+W = 300
+H = 25
+Tex = JukeboxField
+Color = ColorDark
+DColor = White
+Type = Colorized
+Texts=2
+
+[JukeboxFindText1]
+X = 10
+Y = 3
+W = 200
+Color = White
+Font = 1
+Size = 19
+Align = 0
+Z = 1
+
+[JukeboxFindText2]
+X = -80
+Y = 4
+W = 240
+Color = White
+Font = 1
+Size = 18
+Align = 0
+Z = 1
+Text = JUKEBOX_FIND
+
+[JukeboxSort]
+X = 310
+Y = 423
+W = 108
+H = 25
+Tex = JukeboxField
+Color = ColorDark
+DColor = White
+Type = Colorized
+Texts=2
+
+[JukeboxSortText1]
+X = 54
+Y = 4
+W = 100
+Color = White
+Font = 1
+Size = 18
+Align = 1
+Z = 1
+Text = OPTION_VALUE_ARTIST
+
+[JukeboxSortText2]
+X = -80
+Y = 4
+W = 200
+Color = White
+Font = 1
+Size = 18
+Align = 0
+Z = 1
+Text = JUKEBOX_SORT
+
+[JukeboxRandom]
+X = 450
+Y = 423
+W = 25
+H = 31
+Tex = JukeboxRandom
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxRepeat]
+X = 494
+Y = 423
+W = 25
+H = 31
+Tex = JukeboxRepeat
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxLyric]
+X = 533
+Y = 423
+W = 25
+H = 31
+Tex = JukeboxLyric
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxOptions]
+X = 572
+Y = 423
+W = 25
+H = 31
+Tex = JukeboxOptions
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongListClose]
+X = 640
+Y = 55
+W = 40
+H = 15
+Tex = JukeboxClose
+Color = Red
+DColor =
+Type = Colorized
+
+[JukeboxSongListFixPin]
+X = 613
+Y = 55
+W = 25
+H = 15
+Tex = JukeboxFix
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongCover]
+X = 120
+Y = 385
+W = 75
+H = 100
+
+[JukeboxStaticActualSong1]
+X = 20
+Y = 25
+W = 84
+H = 104
+Tex = JukeboxCurrentSongBackground
+Color = ColorDark
+Type = Transparent
+
+[JukeboxStaticActualSongCover]
+X = 22
+Y = 27
+W = 80
+H = 100
+
+[JukeboxTextActualSongArtist]
+X = 130
+Y = 43
+Color = White
+Font = 2
+Size = 26
+Align = 0
+Z = 1
+
+[JukeboxTextActualSongTitle]
+X = 130
+Y = 70
+Color = ColorDark
+Font = 2
+Size = 36
+Align = 0
+Z = 1
+
+[JukeboxSongListUp]
+X = 120
+Y = 95
+W = 560
+H = 15
+Tex = JukeboxSongListUp
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongListDown]
+X = 120
+Y = 360
+W = 560
+H = 15
+Tex = JukeboxSongListDown
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+#[JukeboxPlayPause]
+#X = 280
+#Y = 460
+#W = 40
+#H = 25
+#Tex = JukeboxSongMenuPlayPause
+#Color = ColorDark
+#DColor = White
+#Type = Colorized
+
+[JukeboxSongMenuBackground]
+Tex = JukeboxSongbartopBackground
+X = 155
+Y = 0
+W = 500
+H = 50
+Color = ColorDark
+Type = Colorized
+
+[JukeboxSongMenuTimeBackground]
+Tex = JukeboxSongMenuTimeBar
+X = 222
+Y = 10
+W = 215
+H = 16
+Color = ColorDark
+Type = Colorized
+
+[JukeboxSongMenuTimeProgress]
+X = 227
+Y = 13
+W = 205
+H = 9
+Color = ColorDark
+Type = Colorized
+
+[JukeboxSongMenuTextTime]
+X = 485
+Y = 11
+W = 35
+Font = 1
+Size = 15
+Color = White
+Align = 2
+
+[JukeboxSongMenuPlayPause]
+X = 180
+Y = 3
+W = 35
+H = 30
+Tex = JukeboxSongMenuPlayPause
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongMenuPrevious]
+X = 500
+Y = 4
+W = 26
+H = 26
+Tex = JukeboxSongMenuPrevious
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongMenuNext]
+X = 530
+Y = 4
+W = 26
+H = 26
+Tex = JukeboxSongMenuNext
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongMenuOptions]
+X = 566
+Y = 3
+W = 22
+H = 28
+Tex = JukeboxOptions
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongMenuPlaylist]
+X = 600
+Y = 3
+W = 24
+H = 29
+Tex = JukeboxSongMenuPlaylist
+Color = ColorDark
+DColor = White
+Type = Colorized
+
+[JukeboxSongOptionsBackground]
+Tex = JukeboxSongOptionsBackground
+X = 150
+Y = 55
+W = 500
+H = 440
+Color = ColorDark
+Type = Colorized
+
+[JukeboxSongOptionsClose]
+X = 595
+Y = 55
+W = 40
+H = 15
+Tex = JukeboxClose
+Color = Red
+DColor =
+Type = Colorized
+
+[JukeboxSongOptionsDefault]
+X = 160
+Y = 455
+W = 120
+H = 25
+Tex = JukeboxButton
+Color = ColorDark
+DColor =
+Type = Colorized
+Texts = 1
+
+[JukeboxSongOptionsDefaultText1]
+X = 60
+Y = 4
+W = 120
+Font = 1
+Size = 18
+Color = White
+Align = 1
+Text = JUKEBOX_SONGOPTIONS_DEFAULT
+
+[JukeboxSongOptionsSave]
+X = 515
+Y = 455
+W = 120
+H = 25
+Tex = JukeboxButton
+Color = ColorDark
+DColor =
+Type = Colorized
+Texts = 1
+
+[JukeboxSongOptionsSaveText1]
+X = 60
+Y = 4
+W = 120
+Font = 1
+Size = 18
+Color = White
+Align = 1
+Text = JUKEBOX_SONGOPTIONS_SAVE
+
+[JukeboxSongOptionsTextSaved]
+X = 500
+Y = 459
+W = 120
+Font = 1
+Size = 18
+Color = White
+Align = 2
+Text = JUKEBOX_SONGOPTIONS_OPTIONSSAVED
+
+[JukeboxSongOptionsVideoText]
+X = 160
+Y = 65
+W = 500
+Color = White
+Font = 1
+Size = 20
+Align = 0
+Z = 1
+Text=JUKEBOX_SONGOPTIONS_VIDEO
+
+[JukeboxSongOptionsLyricText]
+X = 160
+Y = 198
+W = 500
+Color = White
+Font = 1
+Size = 20
+Align = 0
+Z = 1
+Text=JUKEBOX_SONGOPTIONS_LYRIC
+
+[JukeboxSongOptionsVideoAspectSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_VIDEO_ASPECT
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=100
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+
+[JukeboxSongOptionsVideoWidthSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_VIDEO_WIDTH
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=130
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsVideoHeightSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_VIDEO_HEIGHT
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=150
+Y=160
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricPositionSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_LYRIC_POSITION
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=233
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricAlphaSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_LYRIC_ALPHA
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=263
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricLineSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_LYRIC_LINE
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=293
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricPropertySlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=323
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricColorSlide]
+TexSBG=JukeboxSelect
+Text=JUKEBOX_SONGOPTIONS_LYRIC_COLOR
+TypeSBG=Colorized
+ShowArrows=1
+OneItemOnly=1
+X=180
+Y=353
+W=200
+H=20
+Z=0.97
+SkipX=0
+SBGW=220
+TextSize=18
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricSelectR]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED
+#Tex= JukeboxButton
+Type = Colorized
+X = 310
+Y = 380
+W = 100
+H = 15
+SkipX = -30
+TextSize = 14
+SBGW=220
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricRed]
+X = 380
+Y = 380
+W = 220
+H = 15
+Z = 1
+Alpha = 0.5
+Tex = Picker
+Type = Transparent
+
+[JukeboxSongOptionsLyricPointerR]
+X = 380
+Y = 378
+W = 1
+H = 18
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+[JukeboxSongOptionsLyricSelectG]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN
+#Tex= JukeboxButton
+Type = Colorized
+X = 310
+Y = 400
+W = 100
+H = 15
+SkipX = -30
+TextSize = 14
+SBGW=220
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricGreen]
+X = 380
+Y = 400
+W = 220
+H = 15
+Z = 1
+Alpha = 0.5
+Tex = Picker
+Type = Transparent
+
+[JukeboxSongOptionsLyricPointerG]
+X = 380
+Y = 398
+W = 1
+H = 18
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+[JukeboxSongOptionsLyricSelectB]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE
+#Tex= JukeboxButton
+Type = Colorized
+X = 310
+Y = 420
+W = 100
+H = 15
+SkipX = -30
+TextSize = 14
+SBGW=220
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[JukeboxSongOptionsLyricBlue]
+X = 380
+Y = 420
+W = 220
+H = 15
+Z = 1
+Alpha = 0.5
+Tex = Picker
+Type = Transparent
+
+[JukeboxSongOptionsLyricPointerB]
+X = 380
+Y = 418
+W = 1
+H = 18
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+
+################################
+### S T A T S S C R E E N ###
+################################
+
+[StatMain]
+Texts = 0
+Statics = 0
+
+[StatMainBackground]
+Tex = MainBG
+
+[StatMainButtonScores]
+X = 589
+Y = 100
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatMainButtonScoresText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = STAT_DESC_SCORES
+Color = White
+
+[StatMainButtonSingers]
+X = 589
+Y = 160
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatMainButtonSingersText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = STAT_DESC_SINGERS
+Color = White
+
+[StatMainButtonSongs]
+X = 589
+Y = 220
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatMainButtonSongsText1]
+X = 95
+Y = 13
+Font = 0
+Size = 24
+Align = 1
+Text = STAT_DESC_SONGS
+Color = White
+
+[StatMainButtonBands]
+X = 589
+Y = 280
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatMainButtonBandsText1]
+X = 95
+Y = 13
+Font = 0
+Size = 24
+Align = 1
+Text = STAT_DESC_BANDS
+Color = White
+
+[StatMainButtonExit]
+X = 589
+Y = 340
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatMainButtonExitText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = SING_OPTIONS_EXIT
+Color = White
+
+[StatMainTextOverview]
+X = 45
+Y = 125
+W = 510
+Color = White
+Font = 0
+Size = 27
+Align = 0
+Text =
+
+[StatMainStatic1]
+X = 30
+Y = 100
+W = 530
+H = 340
+Tex = StatInfoBG1
+Color = ColorDark
+Type = Colorized
+
+[StatMainText1]
+X = 50
+Y = 25
+Color = White
+Font = 0
+Size = 50
+Text = STAT_MAIN
+Align = 0
+
+[StatDetail]
+Texts = 0
+Statics = 0
+
+[StatDetailBackground]
+Tex = MainBG
+
+[StatDetailButtonNext]
+X = 589
+Y = 100
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatDetailButtonNextText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = STAT_NEXT
+Color = White
+
+[StatDetailButtonPrev]
+X = 589
+Y = 160
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatDetailButtonPrevText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = STAT_PREV
+Color = White
+
+[StatDetailButtonReverse]
+X = 589
+Y = 220
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatDetailButtonReverseText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = STAT_REVERSE
+Color = White
+
+[StatDetailButtonExit]
+X = 589
+Y = 280
+W = 190
+H = 50
+Tex = Button
+Color = ColorDark
+DColor = GrayDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[StatDetailButtonExitText1]
+X = 95
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = SING_OPTIONS_EXIT
+Color = White
+
+[StatDetailTextDescription]
+X = 50
+Y = 80
+Color = White
+Font = 0
+Size = 25
+Align = 0
+Text =
+
+[StatDetailTextPage]
+X = 440
+Y = 105
+Color = White
+Font = 0
+Size = 15
+Align = 0
+Text =
+
+[StatDetailTextList1]
+X = 50
+Y = 140
+Color = White
+Font = 0
+Size = 21
+Text = Stat1
+
+[StatDetailTextList2]
+X = 50
+Y = 178
+Color = White
+Font = 0
+Size = 21
+Text = Stat2
+
+[StatDetailTextList3]
+X = 50
+Y = 216
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList4]
+X = 50
+Y = 254
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList5]
+X = 50
+Y = 292
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList6]
+X = 50
+Y = 330
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList7]
+X = 50
+Y = 368
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList8]
+X = 50
+Y = 406
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList9]
+X = 50
+Y = 444
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailTextList10]
+X = 50
+Y = 482
+Color = White
+Font = 0
+Size = 21
+Text =
+
+[StatDetailStatic1]
+X = 40
+Y = 100
+W = 520
+H = 440
+Tex = StatInfoBG2
+Color = ColorLight
+Type = Colorized
+
+
+[StatDetailText1]
+X = 50
+Y = 25
+Color = White
+Font = 0
+Size = 50
+Text = STAT_DETAIL
+Align = 0
+
+
+[Options]
+Texts = 6
+Fade = 2
+
+[OptionsBackground]
+Tex = OptionsBG
+
+[OptionsText1]
+X = 25
+Y = 25
+Color = White
+Font = 0
+Size = 54
+Text = SING_OPTIONS
+Align = 0
+
+[OptionsButtonGame]
+X = 100
+Y = 120
+W = 75
+H = 80
+Tex = Optionsbuttongame
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 70
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonGameText1]
+X = 35
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_GAME
+Color = White
+
+[OptionsButtonGraphics]
+X = 260
+Y = 120
+W = 75
+H = 85
+Tex = Optionsbuttongraphics
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 75
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonGraphicsText1]
+X = 40
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_GRAPHICS
+Color = White
+
+[OptionsButtonSound]
+X = 432
+Y = 120
+W = 59
+H = 70
+Tex = Optionsbuttonsound
+Color = White
+DColor = White
+Type = Transparent
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 60
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonSoundText1]
+X = 30
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_SOUND
+Color = White
+
+[OptionsButtonLyrics]
+X = 580
+Y = 120
+W = 70
+H = 75
+Tex = Optionsbuttonlyrics
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 65
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonLyricsText1]
+X = 35
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_LYRICS
+Color = White
+
+[OptionsButtonThemes]
+X = 100
+Y = 270
+W = 95
+H = 85
+Tex = Optionsbuttondesign
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 75
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonThemesText1]
+X = 35
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_THEMES
+Color = White
+
+[OptionsButtonMicrophones]
+X = 265
+Y = 270
+W = 73
+H = 75
+Tex = Optionsbuttonmicrophones
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 65
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonMicrophonesText1]
+X = 40
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_MICROPHONES
+Color = White
+Texts = 1
+
+[OptionsButtonAdvanced]
+X = 432
+Y = 270
+W = 61
+H = 77
+Tex = Optionsbuttonadvanced
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 67
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonAdvancedText1]
+X = 32
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_ADVANCED
+Color = White
+Texts = 1
+
+[OptionsButtonNetwork]
+X = 585
+Y = 270
+W = 59
+H = 77
+Tex = Optionsbuttonnetwork
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 67
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonNetworkText1]
+X = 31
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_NETWORK
+Color = White
+Texts = 1
+
+[OptionsButtonWebcam]
+X = 100
+Y = 425
+W = 75
+H = 80
+Tex = Optionsbuttonwebcam
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 70
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonWebcamText1]
+X = 35
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_WEBCAM
+Color = White
+Texts = 1
+
+[OptionsButtonJukebox]
+X = 275
+Y = 425
+W = 59
+H = 75
+Tex = Optionsbuttonjukebox
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 65
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonJukeboxText1]
+X = 32
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_JUKEBOX
+Color = White
+
+[OptionsButtonExit]
+X = 415
+Y = 425
+W = 70
+H = 80
+Tex = Optionsbuttonback
+Color = White
+DColor = White
+Type = Transparent
+Align = 0
+Texts = 1
+Fade = 1
+FadeText = 1
+SelectH = 70
+FadeTex = ButtonFade
+FadeTexPos = 0
+
+[OptionsButtonExitText1]
+X = 50
+Y = 80
+Font = 0
+Size = 26
+Align = 1
+Text = SING_OPTIONS_EXIT
+Color = White
+
+[OptionsGame]
+Texts = 5
+
+[OptionsGameBackground]
+Tex = OptionsBG
+
+[OptionsGameStatic1]
+X = 30
+Y = 25
+W = 75
+H = 70
+Color = White
+Tex = Optionsbuttongame
+Type = Transparent
+
+[OptionsGameText1]
+X = 125
+Y = 35
+Color = White
+Size = 45
+Text = SING_OPTIONS_GAME
+
+#[OptionsGameText2]
+#X = 50
+#Y = 28
+#Color = ColorLightest
+#Size = 30
+#Text = SING_OPTIONS_GAME_DESC
+
+#[OptionsGameText3]
+#X = 70
+#Y = 85
+#Color = White
+#Size = 30
+#Text = SING_OPTIONS_GAME_WHEREAMI
+
+[OptionsGameSelectSlideLanguage]
+Text = SING_OPTIONS_GAME_LANGUAGE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameSelectSongMenu]
+Text = SING_OPTIONS_GAME_SONGMENU
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameSelectTabs]
+Text = SING_OPTIONS_GAME_TABS
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameSelectSlideSorting]
+Text = SING_OPTIONS_GAME_SORTING
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 280
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameSelectShowScores]
+Text = SING_OPTIONS_GAME_SHOWSCORES
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 330
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameSelectJoypad]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_GAME_JOYPAD_SUPPORT
+X = 70
+Y = 380
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGameButtonExit]
+X = 70
+Y = 440
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsGraphics]
+Texts = 4
+
+[OptionsGraphicsBackground]
+Tex = OptionsBG
+
+[OptionsGraphicsStatic1]
+X = 20
+Y = 20
+W = 90
+H = 75
+Color = White
+Tex = Optionsbuttongraphics
+Type = Transparent
+
+[OptionsGraphicsText1]
+X = 120
+Y = 35
+Color = White
+Size = 45
+Text = SING_OPTIONS_GRAPHICS
+
+#[OptionsGraphicsText2]
+#X = 65
+#Y = 55
+#Color = ColorLightest
+#Size = 30
+#Text = SING_OPTIONS_GRAPHICS_DESC
+
+#[OptionsGraphicsText3]
+#X = 70
+#Y = 85
+#Color = White
+#Size = 30
+#Text = SING_OPTIONS_GRAPHICS_WHEREAMI
+
+[OptionsGraphicsSelectFullscreen]
+Text = SING_OPTIONS_GRAPHICS_FULLSCREEN
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGraphicsSelectSlideResolution]
+Text = SING_OPTIONS_GRAPHICS_RESOLUTION
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+#########unused at the moment#########
+#[OptionsGraphicsSelectLoadAnimation]
+#Text = SING_OPTIONS_GRAPHICS_LOADANIMATION
+#Tex = MainBar
+#TexSBG = SelectBG
+#X = 40
+#Y = 85
+#W = 230
+#H = 70
+#SkipX = 10
+
+#Color = ColorDark
+#DColor = ColorLight
+#TColor = White
+#TDColor = White
+
+#SBGColor = ColorDark
+#SBGDColor = ColorLight
+#STColor = White
+#STDColor = GrayDark
+
+[OptionsGraphicsSelectScreenFade]
+Text = SING_OPTIONS_GRAPHICS_SCREENFADE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGraphicsSelectEffectSing]
+Text = SING_OPTIONS_GRAPHICS_EFFECTSING
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 280
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+
+[OptionsGraphicsSelectVisualizer]
+Text = SING_OPTIONS_GRAPHICS_VISUALIZER
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 330
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGraphicsSelectMovieSize]
+Text = SING_OPTIONS_GRAPHICS_MOVIE_SIZE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 380
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsGraphicsButtonExit]
+X = 70
+Y = 440
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsSound]
+Texts = 5
+
+[OptionsSoundBackground]
+Tex = OptionsBG
+
+[OptionsSoundStatic1]
+X = 30
+Y = 30
+W = 50
+H = 60
+Color = White
+Tex = Optionsbuttonsound
+Type = Transparent
+
+[OptionsSoundText1]
+X = 110
+Y = 35
+Color = White
+Size = 45
+Text = SING_OPTIONS_SOUND
+
+
+[OptionsSoundSelectVoicePassthrough]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_VOICEPASSTHROUGH
+X = 70
+Y = 130
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectBackgroundMusic]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_BACKGROUNDMUSIC
+X = 70
+Y = 170
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectClickAssist]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_CLICK_ASSIST
+X = 70
+Y = 210
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectBeatClick]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_BEAT_CLICK
+X = 70
+Y = 250
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectSlideMusicAutoGain]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_MUSICAUTOGAIN
+X = 70
+Y = 290
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectSlidePreviewVolume]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_PREVIEWVOLUME
+X = 70
+Y = 330
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundSelectSlidePreviewFADING]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_SOUND_PREVIEWFADING
+X = 70
+Y = 370
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsSoundButtonExit]
+X = 70
+Y = 410
+W = 250
+H = 35
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsLyrics]
+Texts = 1
+
+[OptionsLyricsBackground]
+Tex = OptionsBG
+
+[OptionsLyricsStatic1]
+X = 30
+Y = 30
+W = 60
+H = 65
+Color = White
+Tex = Optionsbuttonlyrics
+Type = Transparent
+
+[OptionsLyricsText1]
+X = 100
+Y = 35
+Color = White
+Size = 45
+Text = SING_OPTIONS_LYRICS
+
+[OptionsLyricsText5]
+X = 440
+Y = 548
+Z = 0.5
+Color = White
+Size = 24
+Text = SING_LEGEND_ESC
+Reflection = 1
+ReflectionSpacing = 20
+
+[OptionsLyricsSelectLyricsFont]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_LYRICS_FONT
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsLyricsSelectLyricsEffect]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_LYRICS_EFFECT
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsLyricsSelectNoteLines]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_LYRICS_NOTELINES
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsLyricsButtonExit]
+X = 70
+Y = 290
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsThemes]
+Texts = 5
+
+[OptionsThemesBackground]
+Tex = OptionsBG
+
+[OptionsThemesStatic1]
+X = 30
+Y = 30
+W = 85
+H = 75
+Color = White
+Tex = Optionsbuttondesign
+Type = Transparent
+
+[OptionsThemesText1]
+X = 120
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_THEMES
+
+[OptionsThemesText5]
+X = 440
+Y = 548
+Z = 0.5
+Color = White
+Size = 24
+Reflection = 1
+ReflectionSpacing = 20
+Text = SING_LEGEND_ESC
+
+[OptionsThemesSelectTheme]
+Text = SING_OPTIONS_THEMES_THEME
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsThemesSelectSkin]
+Text = SING_OPTIONS_THEMES_SKIN
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsThemesSelectColor]
+Text = SING_OPTIONS_THEMES_COLOR
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsThemesButtonExit]
+X = 70
+Y = 290
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsMicrophones]
+Texts = 5
+
+[OptionsMicrophonesBackground]
+Tex = OptionsBG
+
+[OptionsMicrophonesStatic1]
+X = 30
+Y = 30
+W = 70
+H = 65
+Color = White
+Tex = Optionsbuttonmicrophones
+Type = Transparent
+
+[OptionsMicrophonesText1]
+X = 110
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_MICROPHONES
+
+[OptionsMicrophonesSelectSlideCard]
+Text = SING_OPTIONS_MICROPHONES_CARD
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsMicrophonesSelectSlideInput]
+Text = SING_OPTIONS_MICROPHONES_INPUT
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsMicrophonesSelectSlideChannel]
+Text = SING_OPTIONS_MICROPHONES_CHANNEL
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsMicrophonesSelectThreshold]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_MICROPHONES_THRESHOLD
+X = 70
+Y = 367
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsMicrophonesSelectMicBoost]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_MICROPHONES_MIC_BOOST
+X = 70
+Y = 417
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsMicrophonesButtonExit]
+X = 70
+Y = 470
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsAdvanced]
+Texts = 5
+
+[OptionsAdvancedBackground]
+Tex = OptionsBG
+
+[OptionsAdvancedStatic1]
+X = 30
+Y = 30
+W = 57
+H = 67
+Color = White
+Tex = Optionsbuttonadvanced
+Type = Transparent
+
+[OptionsAdvancedText1]
+X = 100
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_ADVANCED
+
+[OptionsAdvancedSelectDebug]
+Text = SING_OPTIONS_ADVANCED_DEBUG
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectOscilloscope]
+Text = SING_OPTIONS_ADVANCED_OSCILLOSCOPE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 175
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectSlideOnSongClick]
+Text = SING_OPTIONS_ADVANCED_ONSONGCLICK
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 220
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectAskbeforeDel]
+Text = SING_OPTIONS_ADVANCED_ASKBEFOREDEL
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 265
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectPartyPopup]
+Text = SING_OPTIONS_ADVANCED_PARTYPOPUP
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 310
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectSingScores]
+Text = SING_OPTIONS_ADVANCED_SINGSCORES
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 400
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedSelectTopScores]
+Text = SING_OPTIONS_ADVANCED_TOPSCORES
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 355
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsAdvancedButtonExit]
+X = 70
+Y = 445
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsNetwork]
+Texts = 5
+
+[OptionsNetworkBackground]
+Tex = OptionsBG
+
+[OptionsNetworkStatic1]
+X = 30
+Y = 30
+W = 55
+H = 67
+Color = White
+Tex = Optionsbuttonnetwork
+Type = Transparent
+
+[OptionsNetworkText1]
+X = 100
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_NETWORK
+
+[OptionsNetworkStatic5]
+X = 400
+Y = 545
+W = 32
+H = 30
+Tex = ButtonIns
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsNetworkText5]
+X = 440
+Y = 548
+Z = 0.5
+Color = White
+Size = 24
+Reflection = 1
+ReflectionSpacing = 20
+Text = SING_OPTIONS_NETWORK_LEGEND_INSERT
+
+[OptionsNetworkStatic6]
+X = 530
+Y = 545
+W = 32
+H = 30
+Tex = ButtonDel
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsNetworkText6]
+X = 570
+Y = 548
+Z = 0.5
+Color = White
+Size = 24
+Reflection = 1
+ReflectionSpacing = 20
+Text = SING_OPTIONS_NETWORK_LEGEND_DELETE
+
+[OptionsNetworkTextInsertUser]
+X = 400
+Y = 270
+W = 600
+Z = 1
+Align = 1
+Color = White
+Size = 32
+
+[OptionsNetworkSelectWebsite]
+Text = SING_OPTIONS_NETWORK_WEBSITE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectUsername]
+Text = SING_OPTIONS_NETWORK_USERNAME
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 175
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectSendSaveName]
+Text = SING_OPTIONS_NETWORK_SEND_SAVE_PLAYER_NAME
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 220
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectAutoMode]
+Text = SING_OPTIONS_NETWORK_AUTO_MODE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 265
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectAutoPlayer]
+Text = SING_OPTIONS_NETWORK_AUTO_PLAYER
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 310
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectAutoScoreEasy]
+Text = SING_OPTIONS_NETWORK_AUTO_SCORE_EASY
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 355
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectAutoScoreMedium]
+Text = SING_OPTIONS_NETWORK_AUTO_SCORE_MEDIUM
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 400
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkSelectAutoScoreHard]
+Text = SING_OPTIONS_NETWORK_AUTO_SCORE_HARD
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 445
+W = 250
+H = 35
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsNetworkButtonInsert]
+X = 550
+Y = 490
+W = 180
+H = 40
+Tex = MainBar
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Texts = 1
+
+[OptionsNetworkButtonInsertText1]
+X = 90
+Y = 5
+Align = 1
+Color = White
+Size = 30
+Text = SING_OPTIONS_NETWORK_LEGEND_INSERT
+
+[OptionsNetworkButtonExit]
+X = 70
+Y = 490
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[OptionsWebcam]
+Texts = 5
+
+[OptionsWebcamBackground]
+Tex = OptionsBG
+
+[OptionsWebcamStatic1]
+X = 30
+Y = 30
+W = 75
+H = 70
+Color = White
+Tex = Optionsbuttonwebcam
+Type = Transparent
+
+[OptionsWebcamStatic2]
+X = 70
+Y = 450
+W = 250
+H = 35
+Tex = MainBar
+Color =
+DColor =
+Type = Transparent
+[OptionsWebcamText1]
+X = 115
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_WEBCAM
+
+[OptionsWebcamText2]
+X = 90
+Y = 450
+Color = White
+Size = 28
+Text = SING_OPTIONS_WEBCAM_PREVIEW
+[OptionsWebcamSelectWebcam]
+Text = SING_OPTIONS_WEBCAM_ID
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 130
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectResolution]
+Text = SING_OPTIONS_WEBCAM_RESOLUTION
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 170
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectFPS]
+Text = SING_OPTIONS_WEBCAM_FPS
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 210
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectFlip]
+Text = SING_OPTIONS_WEBCAM_FLIP
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 250
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectBrightness]
+Text = SING_OPTIONS_WEBCAM_BRIGHTNESS
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 290
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectSaturation]
+Text = SING_OPTIONS_WEBCAM_SATURATION
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 330
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectHue]
+Text = SING_OPTIONS_WEBCAM_HUE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 370
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamSelectEffect]
+Text = SING_OPTIONS_WEBCAM_EFFECT
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 410
+W = 250
+H = 35
+SkipX = 10
+
+DColor =
+Color =
+TColor = White
+TDColor = White
+
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsWebcamButtonPreVisualization]
+X = 330
+Y = 450
+W = 400
+H = 35
+Tex = MainBar
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Texts = 1
+
+[OptionsWebcamButtonPreVisualizationText1]
+X = 200
+Y = 5
+Align = 1
+Color = White
+Size = 30
+Text = SING_OPTIONS_WEBCAM_ENABLE_PREVIEW
+
+[OptionsWebcamButtonExit]
+X = 70
+Y = 500
+W = 250
+H = 35
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+# This is part of option network
+[InsertUserPopup]
+
+[InsertUserPopupBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.4
+
+[InsertUserPopupStatic1]
+Tex = interface_dialog_background
+X = 200
+Y = 150
+W = 400
+H = 220
+Z = 1
+Color = White
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 15
+
+[InsertUserPopupText1]
+X = 400
+Y = 165
+W = 400
+Color = ColorLight
+Font = 0
+Size = 30
+Align = 1
+Z = 1
+
+[InsertUserPopupText]
+X = 400
+Y = 215
+W = 380
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Z = 1
+
+[InsertUserPopupButtonUsername]
+X = 380
+Y = 250
+W = 160
+H = 25
+Tex = Button
+Color = GrayLight
+DColor = GrayDark
+Type = Transparent
+Texts = 2
+Z = 1
+
+[InsertUserPopupButtonUsernameText1]
+X = 5
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[InsertUserPopupButtonUsernameText2]
+X = -120
+Y = 0
+Text = SING_OPTIONS_NETWORK_USERNAME
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[InsertUserPopupButtonPassword]
+X = 380
+Y = 280
+W = 160
+H = 25
+Tex = Button
+Color = GrayLight
+DColor = GrayDark
+Type = Transparent
+Texts = 2
+Z = 1
+
+[InsertUserPopupButtonPasswordText1]
+X = 5
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[InsertUserPopupButtonPasswordText2]
+X = -120
+Y = 0
+Text=SING_OPTIONS_NETWORK_PASSWORD
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Z = 1
+
+[InsertUserPopupButton1]
+X = 285
+Y = 330
+W = 100
+H = 25
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+Z = 1
+
+[InsertUserPopupButton1Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Z = 1
+
+[InsertUserPopupButton2]
+X = 415
+Y = 330
+W = 100
+H = 25
+Tex = Button
+Color = ColorLight
+DColor = ColorDark
+Type = Transparent
+Texts = 1
+Z = 1
+
+[InsertUserPopupButton2Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Align = 1
+Z = 1
+
+[OptionsJukebox]
+Texts = 5
+
+[OptionsJukeboxBackground]
+Tex=OptionsBG
+
+[OptionsJukeboxStatic1]
+X = 30
+Y = 30
+W = 55
+H = 65
+Color = White
+Tex = Optionsbuttonjukebox
+Type = Transparent
+
+[OptionsJukeboxText1]
+X = 100
+Y = 40
+Color = White
+Size = 45
+Text = SING_OPTIONS_JUKEBOX
+
+[OptionsJukeboxSelectLyricsFont]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_LYRICS_FONT
+X = 70
+Y = 130
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectLyricsEffect]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = SING_OPTIONS_LYRICS_EFFECT
+X = 70
+Y = 180
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectLyricsAlpha]
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+Text = JUKEBOX_SONGOPTIONS_LYRIC_ALPHA
+X = 70
+Y = 230
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectLine]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_LINE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 280
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectProperty]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_PROPERTY
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 330
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectColor]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_COLOR
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 70
+Y = 380
+W = 250
+H = 40
+SkipX = 10
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectR]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_RED
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 220
+Y = 425
+W = 100
+H = 15
+SkipX = 10
+TextSize = 16
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectG]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_GREEN
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Plain
+X = 220
+Y = 445
+W = 100
+H = 15
+Z = 0.8
+SkipX = 10
+TextSize = 16
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxSelectB]
+Text = JUKEBOX_SONGOPTIONS_LYRIC_RGB_BLUE
+Tex = MainBar
+Type = Transparent
+TexSBG = SelectBG
+TypeSBG = Transparent
+X = 220
+Y = 465
+W = 100
+H = 15
+SkipX = 10
+TextSize = 16
+
+Color =
+DColor =
+TColor = White
+TDColor = White
+SBGColor = ColorDark
+SBGDColor = Gray
+STColor = White
+STDColor = GrayDark
+
+[OptionsJukeboxRed]
+X = 360
+Y = 428
+W = 340
+H = 10
+Z = 1
+Tex = Picker
+Type = Transparent
+
+[OptionsJukeboxGreen]
+X = 360
+Y = 448
+W = 340
+H = 10
+Z = 1
+Tex = Picker
+Type = Transparent
+
+[OptionsJukeboxBlue]
+X = 360
+Y = 468
+W = 340
+H = 10
+Z = 1
+Tex = Picker
+Type = Transparent
+
+[OptionsJukeboxPointerR]
+X = 360
+Y = 427
+W = 1
+H = 12
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+[OptionsJukeboxPointerG]
+X = 360
+Y = 447
+W = 1
+H = 12
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+[OptionsJukeboxPointerB]
+X = 360
+Y = 468
+W = 1
+H = 12
+Z = 1
+Tex = Picker
+Color = Black
+Type = Transparent
+
+[OptionsJukeboxColor]
+X = 70
+Y = 425
+W = 145
+H = 55
+Z = 1
+Tex = Picker
+Type = Transparent
+
+[OptionsJukeboxUpperBar]
+X = 340
+Y = 500
+W = 400
+H = 40
+
+[OptionsJukeboxLowerBar]
+X = 340
+Y = 535
+W = 400
+H = 40
+
+[OptionsJukeboxButtonExit]
+X = 70
+Y = 485
+W = 250
+H = 40
+Tex = Button
+Color = ColorDark
+DColor = Gray
+Type = Transparent
+Reflection = 1
+ReflectionSpacing = 2
+
+[AboutMain]
+Texts = 2
+
+[AboutMainBackground]
+Tex = MainBG
+
+[AboutMainStatico]
+Tex = AboutBG
+X = 25
+Y = 70
+W = 630
+H = 450
+Color = White
+Alpha = 0.65
+Type = Transparent
+
+[AboutMainButtonExit]
+X = 660
+Y = 530
+W = 130
+H = 50
+Tex = Button
+DColor = Gray
+Color = ColorDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[AboutMainButtonExitText1]
+X = 65
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = SING_OPTIONS_EXIT
+Color = White
+
+[AboutMainButtonDevelopers]
+X = 270
+Y = 430
+W = 140
+H = 70
+Tex = LogoWeb
+DColor =
+Color = White
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[AboutMainButtonDevelopersText1]
+X = 70
+Y = -35
+Font = 0
+Size = 25
+Align = 1
+Text = ABOUT_USDX_DEVELOPEDBY
+Color = White
+
+[AboutMainTextOverview]
+X = 45
+Y = 125
+W = 600
+Color = White
+Font = 0
+Size = 24
+Align = 0
+Text =
+
+[AboutMainText1]
+X = 70
+Y = 20
+Color = White
+Font = 0
+Size = 60
+Text = ABOUT_MAIN
+Align = 0
+
+[AboutMainText2]
+X = 524
+Y = 90
+Color = White
+Font = 0
+Size = 20
+Align = 1
+Text = US_VERSION
+Reflection = 0
+ReflectionSpacing = 13
+
+[Developers]
+Texts = 1
+Statics = 2
+
+[DevelopersBackground]
+Tex = MainBG
+
+[DevelopersButtonExit]
+X = 660
+Y = 530
+W = 130
+H = 50
+Tex = Button
+DColor = Gray
+Color = ColorDark
+Type = Transparent
+Texts = 1
+Reflection = 0
+
+[DevelopersButtonExitText1]
+X = 65
+Y = 10
+Font = 0
+Size = 30
+Align = 1
+Text = SING_OPTIONS_EXIT
+Color = White
+
+[DevelopersTextOverview]
+X = 70
+Y = 125
+W = 400
+Color = White
+DColor=
+Font = 0
+Size = 24
+Align = 0
+Text =
+
+[DevelopersStatic1]
+X = 45
+Y = 115
+W = 630
+H = 460
+Tex=Dhelperbg
+Color = White
+alpha=0.65
+Type = Transparent
+
+[DevelopersStatic2]
+X = 280
+Y = 475
+W = 160
+H = 80
+Tex = LogoWeb
+Color = White
+Type = Transparent
+
+[DevelopersText1]
+X = 70
+Y = 30
+Color = White
+Font = 0
+Size = 60
+Text = DEVELOPERS_TITLE
+Align = 0
+
+[CheckPopup]
+
+[CheckPopupBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.3
+
+[CheckPopupStatic1]
+Tex = interface_dialog_background
+X = 200
+Y = 150
+W = 400
+H = 200
+Z = 1
+alpha=0.95
+Color = ColorDark
+Type = Colorized
+Reflection = 0
+ReflectionSpacing = 15
+
+#[CheckPopupText1]
+#X = 400
+#Y = 160
+#W = 400
+#Color = White
+#Font = 0
+#Size = 30
+#Text = MSG_QUESTION_TITLE
+#Align = 1
+#Z = 1
+
+[CheckPopupText]
+X = 400
+Y = 210
+W = 280
+Color = White
+Font = 0
+Size = 30
+Text = error text
+Align = 1
+Z = 1
+
+[CheckPopupButton1]
+X = 285
+Y = 310
+W = 100
+H = 25
+Tex = Button2
+Color = ColorDark
+DColor = ColorLight
+Type = Colorized
+Texts = 1
+Z = 1
+
+[CheckPopupButton1Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = YES
+Align = 1
+Z = 1
+
+[CheckPopupButton2]
+X = 415
+Y = 310
+W = 100
+H = 25
+Tex = Button2
+Color = ColorDark
+Type = Colorized
+Texts = 1
+Z = 1
+
+[CheckPopupButton2Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = NO
+Align = 1
+Z = 1
+
+
+[ErrorPopup]
+
+[ErrorPopupBackground]
+Type=Fade
+ColR=0
+ColG=0
+ColB=0
+Alpha=0.4
+
+[ErrorPopupStatic1]
+Tex = interface_dialog_background
+X = 200
+Y = 150
+W = 400
+H = 200
+Z = 0.98
+Color = White
+Type = Transparent
+Reflection = 0
+ReflectionSpacing = 15
+
+[ErrorPopupText1]
+X = 400
+Y = 160
+W = 400
+Color = ColorLight
+Font = 0
+Size = 30
+Text = MSG_ERROR_TITLE
+Align = 1
+Z = 1
+
+[ErrorPopupText]
+X = 400
+Y = 210
+W = 380
+Color = White
+Font = 0
+Size = 30
+Text = error text
+Align = 1
+Z = 1
+
+[ErrorPopupButton1]
+X = 350
+Y = 310
+W = 100
+H = 25
+Tex = Button
+Color = ColorDark
+Type = Colorized
+Texts = 1
+Z = 1
+
+[ErrorPopupButton1Text1]
+X = 50
+Y = 0
+Color = White
+Font = 0
+Size = 24
+Text = OK
+Align = 1
+Z = 1
+
+[PausePopUpStatic]
+Tex = Pause
+X = 0
+Y = 0
+W = 800
+H = 600
+Z = 0.95
+Color = ColorLight
+Type = Colorized
diff --git a/game/themes/common/Basic Blue.ini b/game/themes/common/Basic Blue.ini
new file mode 100644
index 00000000..7cfe8abf
--- /dev/null
+++ b/game/themes/common/Basic Blue.ini
@@ -0,0 +1,331 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+###############
+[Skin]
+Theme=Party
+Name= Basic Blue
+Color=Blue
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]blue.jpg
+MainBG = [bg-main]blue.jpg
+SongBG = [bg-main]blue.jpg
+ScoreScreenBG = [bg-main]blue.jpg
+Top5BG = [bg-main]blue.jpg
+OptionsBG = [bg-main]blue.jpg
+PartyBG = [bg-main]blue.jpg
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/Basic Red.ini b/game/themes/common/Basic Red.ini
new file mode 100644
index 00000000..05b95f6b
--- /dev/null
+++ b/game/themes/common/Basic Red.ini
@@ -0,0 +1,331 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+###############
+[Skin]
+Theme=Party
+Name= Basic Red
+Color=Red
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]red.jpg
+MainBG = [bg-main]red.jpg
+SongBG = [bg-main]red.jpg
+ScoreScreenBG = [bg-main]red.jpg
+Top5BG = [bg-main]red.jpg
+OptionsBG = [bg-main]red.jpg
+PartyBG = [bg-main]red.jpg
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/Basic Violet.ini b/game/themes/common/Basic Violet.ini
new file mode 100644
index 00000000..bbfa2051
--- /dev/null
+++ b/game/themes/common/Basic Violet.ini
@@ -0,0 +1,331 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+###############
+[Skin]
+Theme=Party
+Name= Basic Violet
+Color=Violet
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]violet.jpg
+MainBG = [bg-main]violet.jpg
+SongBG = [bg-main]violet.jpg
+ScoreScreenBG = [bg-main]violet.jpg
+Top5BG = [bg-main]violet.jpg
+OptionsBG = [bg-main]violet.jpg
+PartyBG = [bg-main]violet.jpg
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/Hearts.ini b/game/themes/common/Hearts.ini
new file mode 100644
index 00000000..85ac2da2
--- /dev/null
+++ b/game/themes/common/Hearts.ini
@@ -0,0 +1,333 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+#Video credits to: AA VFX https://www.youtube.com/watch?v=biPycuqGBRc
+
+###############
+[Skin]
+Theme=Party
+Name= Hearts
+Color=Pink
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]love.webm
+MainBG = [bg-main]love.webm
+SongBG = [bg-main]love.webm
+ScoreScreenBG = [bg-main]love.webm
+Top5BG = [bg-main]love.webm
+OptionsBG = [bg-main]love.webm
+PartyBG = [bg-main]love.webm
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/Heat.ini b/game/themes/common/Heat.ini
new file mode 100644
index 00000000..c6ce6f79
--- /dev/null
+++ b/game/themes/common/Heat.ini
@@ -0,0 +1,333 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+#Video credits to: AA VFX https://www.youtube.com/watch?v=X36DOTEzjHw
+
+###############
+[Skin]
+Theme=Party
+Name= Heat
+Color=Red
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]magma.webm
+MainBG = [bg-main]magma.webm
+SongBG = [bg-main]magma.webm
+ScoreScreenBG = [bg-main]magma.webm
+Top5BG = [bg-main]magma.webm
+OptionsBG = [bg-main]magma.webm
+PartyBG = [bg-main]magma.webm
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Lines.ini b/game/themes/common/Lines.ini
similarity index 76%
rename from game/themes/Fantasy/Lines.ini
rename to game/themes/common/Lines.ini
index 1fffef20..0d843e61 100644
--- a/game/themes/Fantasy/Lines.ini
+++ b/game/themes/common/Lines.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -26,7 +25,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -39,7 +37,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -69,26 +68,8 @@ SongBG = [bg-main]lines.webm
ScoreScreenBG = [bg-main]lines.webm
Top5BG = [bg-main]lines.webm
OptionsBG = [bg-main]lines.webm
-EditBG = [bg-main]lines.webm
-EditSubBG = [bg-main]lines.webm
PartyBG = [bg-main]lines.webm
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -97,7 +78,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -106,7 +87,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -116,7 +97,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -164,16 +145,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -182,18 +153,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -201,8 +173,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -228,11 +198,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -248,7 +215,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -269,6 +235,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -321,20 +296,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -351,23 +317,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Love.ini b/game/themes/common/Love.ini
similarity index 76%
rename from game/themes/Fantasy/Love.ini
rename to game/themes/common/Love.ini
index 9e815303..9a21d5b4 100644
--- a/game/themes/Fantasy/Love.ini
+++ b/game/themes/common/Love.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -26,7 +25,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -39,7 +37,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -69,26 +68,8 @@ SongBG = [bg-main]love.webm
ScoreScreenBG = [bg-main]love.webm
Top5BG = [bg-main]love.webm
OptionsBG = [bg-main]love.webm
-EditBG = [bg-main]love.webm
-EditSubBG = [bg-main]love.webm
PartyBG = [bg-main]love.webm
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -97,7 +78,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -106,7 +87,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -116,7 +97,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -164,16 +145,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -182,18 +153,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -201,8 +173,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -228,11 +198,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -248,7 +215,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -269,6 +235,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -321,20 +296,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -351,23 +317,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Magma.ini b/game/themes/common/Magma.ini
similarity index 76%
rename from game/themes/Fantasy/Magma.ini
rename to game/themes/common/Magma.ini
index 67d53894..fc447695 100644
--- a/game/themes/Fantasy/Magma.ini
+++ b/game/themes/common/Magma.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -26,7 +25,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -39,7 +37,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -69,26 +68,8 @@ SongBG = [bg-main]magma.webm
ScoreScreenBG = [bg-main]magma.webm
Top5BG = [bg-main]magma.webm
OptionsBG = [bg-main]magma.webm
-EditBG = [bg-main]magma.webm
-EditSubBG = [bg-main]magma.webm
PartyBG = [bg-main]magma.webm
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -97,7 +78,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -106,7 +87,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -116,7 +97,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -164,16 +145,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -182,18 +153,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -201,8 +173,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -228,11 +198,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -248,7 +215,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -269,6 +235,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -321,20 +296,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -351,23 +317,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Space.ini b/game/themes/common/Space.ini
similarity index 76%
rename from game/themes/Fantasy/Space.ini
rename to game/themes/common/Space.ini
index 47613867..26824a82 100644
--- a/game/themes/Fantasy/Space.ini
+++ b/game/themes/common/Space.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -26,7 +25,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -39,7 +37,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -69,26 +68,8 @@ SongBG = [bg-main]space.webm
ScoreScreenBG = [bg-main]space.webm
Top5BG = [bg-main]space.webm
OptionsBG = [bg-main]space.webm
-EditBG = [bg-main]space.webm
-EditSubBG = [bg-main]space.webm
PartyBG = [bg-main]space.webm
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -97,7 +78,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -106,7 +87,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -116,7 +97,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -164,16 +145,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -182,18 +153,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonrecord = [Options]buttonduet.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -201,8 +173,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -228,11 +198,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -248,7 +215,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -269,6 +235,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -321,20 +296,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -351,23 +317,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Static Blue.ini b/game/themes/common/Static Blue.ini
similarity index 76%
rename from game/themes/Fantasy/Static Blue.ini
rename to game/themes/common/Static Blue.ini
index ccf64665..e08a59b8 100644
--- a/game/themes/Fantasy/Static Blue.ini
+++ b/game/themes/common/Static Blue.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -24,7 +23,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -37,7 +35,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -67,26 +66,8 @@ SongBG = [bg-main]blue.jpg
ScoreScreenBG = [bg-main]blue.jpg
Top5BG = [bg-main]blue.jpg
OptionsBG = [bg-main]blue.jpg
-EditBG = [bg-main]blue.jpg
-EditSubBG = [bg-main]blue.jpg
PartyBG = [bg-main]blue.jpg
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -95,7 +76,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -104,7 +85,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -114,7 +95,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -162,16 +143,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -180,18 +151,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -199,8 +171,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -226,11 +196,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -246,7 +213,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -267,6 +233,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -319,20 +294,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -349,23 +315,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Static Red.ini b/game/themes/common/Static Red.ini
similarity index 76%
rename from game/themes/Fantasy/Static Red.ini
rename to game/themes/common/Static Red.ini
index fe87dda0..33fba613 100644
--- a/game/themes/Fantasy/Static Red.ini
+++ b/game/themes/common/Static Red.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -24,7 +23,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -37,7 +35,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -67,26 +66,8 @@ SongBG = [bg-main]red.jpg
ScoreScreenBG = [bg-main]red.jpg
Top5BG = [bg-main]red.jpg
OptionsBG = [bg-main]red.jpg
-EditBG = [bg-main]red.jpg
-EditSubBG = [bg-main]red.jpg
PartyBG = [bg-main]red.jpg
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -95,7 +76,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -104,7 +85,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -114,7 +95,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -162,16 +143,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -180,18 +151,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -226,11 +198,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -246,7 +215,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -267,6 +235,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -319,20 +296,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -349,23 +317,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/Fantasy/Static Violet.ini b/game/themes/common/Static Violet.ini
similarity index 76%
rename from game/themes/Fantasy/Static Violet.ini
rename to game/themes/common/Static Violet.ini
index 985b03f4..aed3e030 100644
--- a/game/themes/Fantasy/Static Violet.ini
+++ b/game/themes/common/Static Violet.ini
@@ -1,12 +1,11 @@
-
###################################
# theme developed by Daniel20 #
-# for http:\\ultrastar-es.org #
+# for https:\\ultrastar-es.org #
# visit us to get songs, plugins, #
-# themes and more... #
-# #
-# *some icons belongs to #
-# http://www.iconfinder.com/ #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
# under Creative Common license #
###################################
@@ -24,7 +23,6 @@ interface_selectbg_search = [interface]selectbg_search.png
interface_dialog_background = [interface]dialog_background.png
interface_dialog_background2 = [interface]dialog_background2.png
interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
-interface_dialog_backgroundtop2 = [interface]dialog_backgroundtop2.png
Cursor = [interface]cursor.png
Cursor_Pressed = [interface]cursor_pressed.png
@@ -37,7 +35,8 @@ icon_song_search = [icon]song_search.png
icon_song_video = [icon]song_video.png
icon_song_medley = [icon]song_medley.png
icon_song_calcmedley = [icon]song_calcmedley.png
-icon_song_duet = [icon]song_duet.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
loadicon = [load]logo.png
loadbaricon = [load]bar.png
@@ -67,26 +66,8 @@ SongBG = [bg-main]violet.jpg
ScoreScreenBG = [bg-main]violet.jpg
Top5BG = [bg-main]violet.jpg
OptionsBG = [bg-main]violet.jpg
-EditBG = [bg-main]violet.jpg
-EditSubBG = [bg-main]violet.jpg
PartyBG = [bg-main]violet.jpg
-#Icons on screen
-SongCD = [icon]cd.png
-MainIcon = [main]buttonsolo.png
-MainSearch = [icon]search.png
-IconOption = [main]buttonoption.png
-IconEdit = [main]buttonedit.png
-IconSongMenu = [icon]songmenu.png
-ScoreIcon = [icon]score.png
-PartyIcon = [main]buttonparty.png
-StatIcon = [main]buttonstats.png
-VideoIcon = [icon]video.png
-
-IconError = [icon]error.png
-IconQuestion = [icon]question.png
-
-
# # # S O N G S E L E C E T # # #
SongSelection1up = [main]songSelection1up.png
SongSelection1dn = [main]songSelection1dn.png
@@ -95,7 +76,7 @@ SongSelection2 = [main]songSelection2.png
SongSelection3 = [main]songSelection3.png
SongSelection4 = [main]songSelection4.png
SongSelection5 = [main]songSelection5.png
-SongCover = [main]songCover.jpg
+SongCover = ../../covers/Common/NoCover.jpg
SongMessage = [song]message.png
SongDuetSinger = [song]duetsinger.png
SongDuetSinger2 = [song]duetsinger2.png
@@ -104,7 +85,7 @@ SongDuetSinger3 = [song]duetsinger3.png
# # # S I N G # # #
#the bar where the lyrics reside
LyricBar = [sing]textBar.png
-LyricBarDuet = [sing]textBarDuet.png
+LyricBarDuet = [sing]textBar.png
#this one slides in, to tell you that singing starts immediately
LyricHelpBar = [sing]lyricsHelpBar.png
@@ -114,7 +95,7 @@ TimeBar1 = [sing]timeBarBG.png
#the time progress bar (not skinned in this theme :P )
TimeBar = [sing]timeBar.jpg
-
+
#linebonus, the thing that pop ups at the score
LineBonusBack = [sing]lineBonusPopUp.png
@@ -162,16 +143,6 @@ ScoreEndCap = [score]endcap.png
ScoreLine = [score]line.png
PlayerNumberBox = [main]playerNumberBox.png
-PlayerIDBox01 = [sing.player1]lyric_active.png
-PlayerIDBox02 = [sing.player2]lyric_active.png
-PlayerIDBox03 = [sing.player3]lyric_active.png
-PlayerIDBox04 = [sing.player4]lyric_active.png
-PlayerIDBox05 = [sing.player5]lyric_active.png
-PlayerIDBox06 = [sing.player6]lyric_active.png
-
-# these icons are part of the tango icon set
-# licensed under Creative Commons Attribution Share-Alike license
-# http://tango.freedesktop.org
Rating_0 = [score]rating_0.png
Rating_1 = [score]rating_1.png
Rating_2 = [score]rating_2.png
@@ -180,18 +151,19 @@ Rating_4 = [score]rating_4.png
Rating_5 = [score]rating_5.png
Rating_6 = [score]rating_6.png
Rating_7 = [score]rating_7.png
+
# # # O P T I O N S # # #
-Optionsbuttongame = [Options]buttongame.png
-Optionsbuttongraphics = [Options]buttongraphics.png
-Optionsbuttonsound = [Options]buttonsound.png
-Optionsbuttonlyrics = [Options]buttonlyrics.png
-Optionsbuttondesign = [Options]buttondesign.png
-Optionsbuttonrecord = [Options]buttonduet.png
-Optionsbuttonadvanced = [Options]buttonadvanced.png
-Optionsbuttonnetwork = [Options]buttonnetwork.png
-Optionsbuttonwebcam = [Options]buttonwebcam.png
-Optionsbuttonjukebox = [Options]buttonjukebox.png
-Optionsbuttonback = [Options]buttonback.png
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
# # # M A I N P A R T Y # # #
ClassicButton =[MainParty]ClassicButton.png
@@ -199,8 +171,6 @@ ClassicFreeButton =[MainParty]ClassicFreeButton.png
ChallengeButton =[MainParty]ChallengeButton.png
TournamentButton =[tournament]trophy.png
-
-
# # # P A R T Y # # #
Joker =[party]Joker.png
PartyPlayerButton =[party]playerButton.png
@@ -226,11 +196,8 @@ PartyTrophy =[tournament]trophy.png
PartyWinner =[tournament]winner.png
# # # S T A T S # # #
-StatMainBG1 = [stat]mainBG1.png
-StatMainBG2 = [stat]mainBG2.png
-StatMainBG3 = [stat]mainBG3.png
-StatDetailBG1 = [stat]detailBG1.png
-
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
# # # N A V I # # #
ButtonP = [button]p.png
@@ -246,7 +213,6 @@ Button13 = [button]13.png
ButtonIns = [button]ins.png
ButtonDel = [button]del.png
-JumpToBG = [menu]jumpToBg.png
SongMenuBG = [menu]songMenuBg.png
SongMenuSelectBG = [menu]songMenuSelectBg.png
PopUpBG = [menu]popUpBG.png
@@ -267,6 +233,15 @@ NoteBGMid = [sing]notesBgMid.png
NoteBGRight = [sing]notesBgRight.png
Pause = [sing]pause.png
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
# # # E F F E C T S # # #
NoteStar = [effect]goldenNoteStar.png
@@ -319,20 +294,11 @@ JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
JukeboxSongMenuNext = [jukebox]songmenunext.png
JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
JukeboxField = [jukebox]fieldbg.png
JukeboxButton = [jukebox]mainBar.png
JukeboxSelect = [jukebox]selectbg.png
-# # # E D I T # # #
-PlayOnly = [editsub]play.png
-playwithnote = [editsub]play-with-note.png
-playnote = [editsub]play-note.png
-nextseq = [editsub]next-seq.png
-previousseq = [editsub]previous-seq.png
-undo = [editsub]undo.png
-gold = [editsub]gold.png
-freestyle = [editsub]freestyle.png
-
# # # COLOR PICKER # # #
PickerBG = [color]pickerbg.png
Picker = [color]picker.jpg
@@ -349,23 +315,17 @@ SelectFrame = [name]select.png
AvatarFrame2 = [score]frame.png
# # # NO AVATARS # # #
-NoAvatar_P1 = [name]noavatarP1.png
-NoAvatar_P2 = [name]noavatarP2.png
-NoAvatar_P3 = [name]noavatarP3.png
-NoAvatar_P4 = [name]noavatarP4.png
-NoAvatar_P5 = [name]noavatarP5.png
-NoAvatar_P6 = [name]noavatarP6.png
-NoAvatar_P7 = [name]noavatarP1.png
-NoAvatar_P8 = [name]noavatarP2.png
-NoAvatar_P9 = [name]noavatarP3.png
-NoAvatar_P10 = [name]noavatarP4.png
-NoAvatar_P11 = [name]noavatarP5.png
-NoAvatar_P12 = [name]noavatarP6.png
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
# # # A B O U T # # #
LogoWeb = [About]logo_web.png
LogoDeluxe = [About]logo_deluxe.png
-helperbg = [About]helperbg.png
+AboutBG = [About]helperbg2.png
# # # D E V E L O P E R S # # #
-Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
+Dhelperbg = [Developers]helperbg.png
diff --git a/game/themes/common/Universe.ini b/game/themes/common/Universe.ini
new file mode 100644
index 00000000..8b2d61d5
--- /dev/null
+++ b/game/themes/common/Universe.ini
@@ -0,0 +1,333 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+#Video credits to: AA VFX https://www.youtube.com/watch?v=S3La-3bUjXk
+
+###############
+[Skin]
+Theme=Party
+Name= Universe
+Color=Blue
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]space.webm
+MainBG = [bg-main]space.webm
+SongBG = [bg-main]space.webm
+ScoreScreenBG = [bg-main]space.webm
+Top5BG = [bg-main]space.webm
+OptionsBG = [bg-main]space.webm
+PartyBG = [bg-main]space.webm
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/Waves.ini b/game/themes/common/Waves.ini
new file mode 100644
index 00000000..d64ec303
--- /dev/null
+++ b/game/themes/common/Waves.ini
@@ -0,0 +1,333 @@
+###################################
+# theme developed by Daniel20 #
+# for https:\\ultrastar-es.org #
+# visit us to get songs, plugins, #
+# themes and more... #
+# #
+# *some icons belongs to #
+# https://www.iconfinder.com/ #
+# under Creative Common license #
+###################################
+
+#Video credits to: AA VFX https://www.youtube.com/watch?v=53pUo71jr8w
+
+###############
+[Skin]
+Theme=Party
+Name= Waves
+Color=Pink
+
+[Textures]
+/**
+ * Interface
+ */
+interface_selectbg_search = [interface]selectbg_search.png
+interface_dialog_background = [interface]dialog_background.png
+interface_dialog_background2 = [interface]dialog_background2.png
+interface_dialog_backgroundtop = [interface]dialog_backgroundtop.png
+
+Cursor = [interface]cursor.png
+Cursor_Pressed = [interface]cursor_pressed.png
+
+/**
+ * Icons
+ */
+icon_song_menu = [icon]song_menu.png
+icon_song_search = [icon]song_search.png
+icon_song_video = [icon]song_video.png
+icon_song_medley = [icon]song_medley.png
+icon_song_calcmedley = [icon]song_calcmedley.png
+icon_song_duet = [icon]song_duet.png
+icon_song_rap = [icon]song_rap.png
+
+loadicon = [load]logo.png
+loadbaricon = [load]bar.png
+
+# # # M A I N # # #
+ButtonSolo = [main]buttonsolo.png
+ButtonAbout = [main]buttonabout.png
+ButtonParty = [main]buttonparty.png
+ButtonStats = [main]buttonstats.png
+ButtonJukebox = [main]buttonjukebox.png
+ButtonOption = [main]buttonoption.png
+ButtonExit = [main]buttonexit.png
+Button2 = [main]button2.png
+Button = [main]button.png
+ButtonF = [main]buttonf.jpg
+MainBar = [main]mainBar.png
+SelectBG = [main]selectbg.png
+
+Select_ArrowLeft = [interface]select_arrow_left.png
+Select_ArrowRight = [interface]select_arrow_right.png
+
+#Backgrounds
+LoadingBG = [bg-load]basic.jpg
+TitleBG = [bg-main]lines.webm
+MainBG = [bg-main]lines.webm
+SongBG = [bg-main]lines.webm
+ScoreScreenBG = [bg-main]lines.webm
+Top5BG = [bg-main]lines.webm
+OptionsBG = [bg-main]lines.webm
+PartyBG = [bg-main]lines.webm
+
+# # # S O N G S E L E C E T # # #
+SongSelection1up = [main]songSelection1up.png
+SongSelection1dn = [main]songSelection1dn.png
+SongSelection1 = [main]songSelection1.png
+SongSelection2 = [main]songSelection2.png
+SongSelection3 = [main]songSelection3.png
+SongSelection4 = [main]songSelection4.png
+SongSelection5 = [main]songSelection5.png
+SongCover = ../../covers/Common/NoCover.jpg
+SongMessage = [song]message.png
+SongDuetSinger = [song]duetsinger.png
+SongDuetSinger2 = [song]duetsinger2.png
+SongDuetSinger3 = [song]duetsinger3.png
+
+# # # S I N G # # #
+#the bar where the lyrics reside
+LyricBar = [sing]textBar.png
+LyricBarDuet = [sing]textBar.png
+
+#this one slides in, to tell you that singing starts immediately
+LyricHelpBar = [sing]lyricsHelpBar.png
+
+#the bar behind the timestuff
+TimeBar1 = [sing]timeBarBG.png
+
+#the time progress bar (not skinned in this theme :P )
+TimeBar = [sing]timeBar.jpg
+
+#linebonus, the thing that pop ups at the score
+LineBonusBack = [sing]lineBonusPopUp.png
+
+#Singbar (the thing beneath the scores)
+SingBarBack = [sing]singBarBack.png
+SingBarBar = [sing]singBarBar.png
+SingBarFront = [sing]singBarFront.png
+
+#Background for scores
+ScoreBG = [sing]scoreBg.png
+
+#Background for the P1, P2 and so on
+P = [sing]p.png
+
+#Pointer for lyrics
+Ball = [sing]LyricsBall.png
+
+#song name for medley mode
+SongName = [sing]SongName.png
+
+
+# # # S C O R E / T O P 5 # # #
+ScoreBox = [score]box.png
+ScoreGlassBox = [score]glass_box.png
+ScoreLevel = [score]level.png
+ScoreLevelRound = [score]levelRound.png
+
+ScoreLevel_Dark = [score]level_dark.png
+ScoreLevel_Dark_Round = [score]level_dark_round.png
+
+ScoreLevel_Light = [score]level_light.png
+ScoreLevel_Light_Round = [score]level_light_round.png
+
+ScoreLevel_Lightest = [score]level_lightest.png
+ScoreLevel_Lightest_Round = [score]level_lightest_round.png
+
+ButtonSendScore = [score]buttonsendscore.png
+
+# Boxes near the text, that show what color is for which bar
+ScoreBar_box_lightest = [score]bar_box_lightest.png
+ScoreBar_box_light = [score]bar_box_light.png
+ScoreBar_box_dark = [score]bar_box_dark.png
+
+ScoreEndCap = [score]endcap.png
+ScoreLine = [score]line.png
+PlayerNumberBox = [main]playerNumberBox.png
+
+Rating_0 = [score]rating_0.png
+Rating_1 = [score]rating_1.png
+Rating_2 = [score]rating_2.png
+Rating_3 = [score]rating_3.png
+Rating_4 = [score]rating_4.png
+Rating_5 = [score]rating_5.png
+Rating_6 = [score]rating_6.png
+Rating_7 = [score]rating_7.png
+
+# # # O P T I O N S # # #
+Optionsbuttongame = [Options]buttongame.png
+Optionsbuttongraphics = [Options]buttongraphics.png
+Optionsbuttonsound = [Options]buttonsound.png
+Optionsbuttonlyrics = [Options]buttonlyrics.png
+Optionsbuttondesign = [Options]buttondesign.png
+Optionsbuttonmicrophones = [Options]buttonmicrophones.png
+Optionsbuttonadvanced = [Options]buttonadvanced.png
+Optionsbuttonnetwork = [Options]buttonnetwork.png
+Optionsbuttonwebcam = [Options]buttonwebcam.png
+Optionsbuttonjukebox = [Options]buttonjukebox.png
+Optionsbuttonback = [Options]buttonback.png
+
+# # # M A I N P A R T Y # # #
+ClassicButton =[MainParty]ClassicButton.png
+ClassicFreeButton =[MainParty]ClassicFreeButton.png
+ChallengeButton =[MainParty]ChallengeButton.png
+TournamentButton =[tournament]trophy.png
+
+# # # P A R T Y # # #
+Joker =[party]Joker.png
+PartyPlayerButton =[party]playerButton.png
+PartyTeamButton1 =[party]roundTeamButton.png
+PartyTeamButton2 =[party]playerTeamButton.png
+PartyTeamButton3 =[party]winTeamButton1.png
+PartyTeamButton4 =[party]winTeamButton2.png
+PartyTeamButton5 =[party]winTeamButton3.png
+PartyRoundBG1 =[party]roundBG1.png
+PartyRoundBG2 =[party]roundBG2.png
+PartyRoundBG3 =[party]roundBG3.png
+PartyRoundBG4 =[party]roundBG4.png
+HDL_Pointer =[party]pointer.png
+PartyTeamPoints =[party]teamPoints.png
+PartyScoreDeco =[party]scoreDecoration.png
+PartyScoreBG1 =[party]scoreBG1.png
+PartyScoreBG2 =[party]scoreBG2.png
+PartyWinDeco1 =[party]winDecoration.png
+PartyWinDeco2 =[party]winDecoration.png
+PartyWinDeco3 =[party]winDecoration.png
+PartyPlayerSelectBG = [party]playerselectbg.png
+PartyTrophy =[tournament]trophy.png
+PartyWinner =[tournament]winner.png
+
+# # # S T A T S # # #
+StatInfoBG1 = [stat]InfoBG1.png
+StatInfoBG2 = [stat]InfoBG2.png
+
+# # # N A V I # # #
+ButtonP = [button]p.png
+ButtonM = [button]m.png
+ButtonJ = [button]j.png
+ButtonC = [button]c.png
+ButtonAlt = [button]alt.png
+ButtonAZ = [button]az.png
+ButtonEnter = [button]enter.png
+ButtonNavi = [button]navi.png
+ButtonEsc = [button]esc.png
+Button13 = [button]13.png
+ButtonIns = [button]ins.png
+ButtonDel = [button]del.png
+
+SongMenuBG = [menu]songMenuBg.png
+SongMenuSelectBG = [menu]songMenuSelectBg.png
+PopUpBG = [menu]popUpBG.png
+
+
+# # # N O T E S # # #
+# sung notes - colorized with playercolors
+GrayLeft = [sing]notesLeft.png
+GrayMid = [sing]notesMid.png
+GrayRight = [sing]notesRight.png
+# unsung notes - colorized with playercolors
+NotePlainLeft = [sing]notesPlainLeft.png
+NotePlainMid = [sing]notesPlainMid.png
+NotePlainRight = [sing]notesPlainRight.png
+# the glow around unsung/sung notes - colorized with playercolors
+NoteBGLeft = [sing]notesBgLeft.png
+NoteBGMid = [sing]notesBgMid.png
+NoteBGRight = [sing]notesBgRight.png
+Pause = [sing]pause.png
+
+GrayLeftRap = [rap]notesLeft.png
+GrayMidRap = [rap]notesMid.png
+GrayRightRap = [rap]notesRight.png
+NotePlainLeftRap = [rap]notesPlainLeft.png
+NotePlainMidRap = [rap]notesPlainMid.png
+NotePlainRightRap = [rap]notesPlainRight.png
+NoteBGLeftRap = [rap]notesBgLeft.png
+NoteBGMidRap = [rap]notesBgMid.png
+NoteBGRightRap = [rap]notesBgRight.png
+
+# # # E F F E C T S # # #
+NoteStar = [effect]goldenNoteStar.png
+NotePerfectStar = [effect]perfectNoteStar.png
+
+
+# # # dirty helpers # # #
+Rectangle = [helper]rectangle.png
+ButtonFade = [helper]buttonFade.png
+BGFade = [special]bg_fade.png
+
+
+# # # D U E T # # #
+LyricIcon_P1 = [sing.player1]lyric_active.png
+LyricIconD_P1 = [sing.player1]lyric_inactive.png
+LyricIcon_P2 = [sing.player2]lyric_active.png
+LyricIconD_P2 = [sing.player2]lyric_inactive.png
+LyricIcon_P3 = [sing.player3]lyric_active.png
+LyricIconD_P3 = [sing.player3]lyric_inactive.png
+LyricIcon_P4 = [sing.player4]lyric_active.png
+LyricIconD_P4 = [sing.player4]lyric_inactive.png
+LyricIcon_P5 = [sing.player5]lyric_active.png
+LyricIconD_P5 = [sing.player5]lyric_inactive.png
+LyricIcon_P6 = [sing.player6]lyric_active.png
+LyricIconD_P6 = [sing.player6]lyric_inactive.png
+
+
+# # # DOWNLOAD SCORE # # #
+ProgressBar = [sing]timeBar.jpg
+
+# # # J U K E B O X # # #
+JukeboxTimeBar1 = [jukebox]timeBarBG.png
+JukeboxTimeBar = [jukebox]timeBar.jpg
+JukeboxSong = [jukebox]song.png
+JukeboxSongBackground = [jukebox]title.png
+JukeboxSongListBackground = [jukebox]songlist.png
+JukeboxSongbartopBackground= [jukebox]bartop.png
+JukeboxSongOptionsBackground = [jukebox]songoptions.png
+JukeboxLyric = [jukebox]lyric.png
+JukeboxRandom = [jukebox]random.png
+JukeboxRepeat = [jukebox]repeat.png
+JukeboxCurrentSongBackground = [jukebox]currentsong.png
+JukeboxSongListUp = [jukebox]songlistup.png
+JukeboxSongListDown = [jukebox]songlistdown.png
+JukeboxOptions = [jukebox]options.png
+JukeboxClose = [jukebox]close.png
+JukeboxFix = [jukebox]pin.png
+JukeboxSongMenuTimeBar = [jukebox]timeBarSongMenuBG.png
+JukeboxSongMenuPlayPause = [jukebox]songmenuplaypause.png
+JukeboxSongMenuNext = [jukebox]songmenunext.png
+JukeboxSongMenuPrevious = [jukebox]songmenuprevious.png
+JukeboxSongMenuPlaylist = [jukebox]songmenuplaylist.png
+JukeboxSongSelection = [jukebox]songSelection.png
+JukeboxField = [jukebox]fieldbg.png
+JukeboxButton = [jukebox]mainBar.png
+JukeboxSelect = [jukebox]selectbg.png
+
+# # # COLOR PICKER # # #
+PickerBG = [color]pickerbg.png
+Picker = [color]picker.jpg
+Hue = [color]hue.png
+HueBar = [color]hue-bar.png
+WhiteFade = [color]white-fade.png
+BlackFade = [color]black-fade.png
+Pointer = [color]pointer.png
+
+# # # N A M E # # #
+AvatarFrame = [name]frame.png
+CurrentPlayer = [name]player.png
+SelectFrame = [name]select.png
+AvatarFrame2 = [score]frame.png
+
+# # # NO AVATARS # # #
+NoAvatar_P1 = [name]noavatar.png
+NoAvatar_P2 = [name]noavatar.png
+NoAvatar_P3 = [name]noavatar.png
+NoAvatar_P4 = [name]noavatar.png
+NoAvatar_P5 = [name]noavatar.png
+NoAvatar_P6 = [name]noavatar.png
+
+# # # A B O U T # # #
+LogoWeb = [About]logo_web.png
+LogoDeluxe = [About]logo_deluxe.png
+AboutBG = [About]helperbg2.png
+
+# # # D E V E L O P E R S # # #
+Dhelperbg = [Developers]helperbg.png
\ No newline at end of file
diff --git a/game/themes/common/[About]helperbg2.png b/game/themes/common/[About]helperbg2.png
new file mode 100644
index 00000000..ba6f4918
Binary files /dev/null and b/game/themes/common/[About]helperbg2.png differ
diff --git a/game/themes/common/[About]logo_web.png b/game/themes/common/[About]logo_web.png
new file mode 100644
index 00000000..34cf75d6
Binary files /dev/null and b/game/themes/common/[About]logo_web.png differ
diff --git a/game/themes/common/[Developers]helperbg.png b/game/themes/common/[Developers]helperbg.png
new file mode 100644
index 00000000..88785b99
Binary files /dev/null and b/game/themes/common/[Developers]helperbg.png differ
diff --git a/game/themes/Fantasy/[Options]buttonNetwork.png b/game/themes/common/[Options]buttonNetwork.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonNetwork.png
rename to game/themes/common/[Options]buttonNetwork.png
diff --git a/game/themes/Fantasy/[Options]buttonWebcam.png b/game/themes/common/[Options]buttonWebcam.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonWebcam.png
rename to game/themes/common/[Options]buttonWebcam.png
diff --git a/game/themes/Fantasy/[Options]buttonadvanced.png b/game/themes/common/[Options]buttonadvanced.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonadvanced.png
rename to game/themes/common/[Options]buttonadvanced.png
diff --git a/game/themes/Fantasy/[Options]buttonback.png b/game/themes/common/[Options]buttonback.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonback.png
rename to game/themes/common/[Options]buttonback.png
diff --git a/game/themes/Fantasy/[Options]buttondesign.png b/game/themes/common/[Options]buttondesign.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttondesign.png
rename to game/themes/common/[Options]buttondesign.png
diff --git a/game/themes/Fantasy/[Options]buttongame.png b/game/themes/common/[Options]buttongame.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttongame.png
rename to game/themes/common/[Options]buttongame.png
diff --git a/game/themes/Fantasy/[Options]buttongraphics.png b/game/themes/common/[Options]buttongraphics.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttongraphics.png
rename to game/themes/common/[Options]buttongraphics.png
diff --git a/game/themes/Fantasy/[Options]buttonjukebox.png b/game/themes/common/[Options]buttonjukebox.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonjukebox.png
rename to game/themes/common/[Options]buttonjukebox.png
diff --git a/game/themes/Fantasy/[Options]buttonlyrics.png b/game/themes/common/[Options]buttonlyrics.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonlyrics.png
rename to game/themes/common/[Options]buttonlyrics.png
diff --git a/game/themes/Fantasy/[Options]buttonduet.png b/game/themes/common/[Options]buttonmicrophones.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonduet.png
rename to game/themes/common/[Options]buttonmicrophones.png
diff --git a/game/themes/Fantasy/[Options]buttonsound.png b/game/themes/common/[Options]buttonsound.png
similarity index 100%
rename from game/themes/Fantasy/[Options]buttonsound.png
rename to game/themes/common/[Options]buttonsound.png
diff --git a/game/themes/common/[bg-load]basic.jpg b/game/themes/common/[bg-load]basic.jpg
new file mode 100644
index 00000000..4a394b3a
Binary files /dev/null and b/game/themes/common/[bg-load]basic.jpg differ
diff --git a/game/themes/Fantasy/[bg-main]Magma.webm b/game/themes/common/[bg-main]Magma.webm
similarity index 100%
rename from game/themes/Fantasy/[bg-main]Magma.webm
rename to game/themes/common/[bg-main]Magma.webm
diff --git a/game/themes/common/[bg-main]blue.jpg b/game/themes/common/[bg-main]blue.jpg
new file mode 100644
index 00000000..658b4728
Binary files /dev/null and b/game/themes/common/[bg-main]blue.jpg differ
diff --git a/game/themes/Fantasy/[bg-main]lines.webm b/game/themes/common/[bg-main]lines.webm
similarity index 100%
rename from game/themes/Fantasy/[bg-main]lines.webm
rename to game/themes/common/[bg-main]lines.webm
diff --git a/game/themes/Fantasy/[bg-main]love.webm b/game/themes/common/[bg-main]love.webm
similarity index 100%
rename from game/themes/Fantasy/[bg-main]love.webm
rename to game/themes/common/[bg-main]love.webm
diff --git a/game/themes/common/[bg-main]red.jpg b/game/themes/common/[bg-main]red.jpg
new file mode 100644
index 00000000..68db580f
Binary files /dev/null and b/game/themes/common/[bg-main]red.jpg differ
diff --git a/game/themes/Fantasy/[bg-main]space.webm b/game/themes/common/[bg-main]space.webm
similarity index 100%
rename from game/themes/Fantasy/[bg-main]space.webm
rename to game/themes/common/[bg-main]space.webm
diff --git a/game/themes/common/[bg-main]violet.jpg b/game/themes/common/[bg-main]violet.jpg
new file mode 100644
index 00000000..681e613a
Binary files /dev/null and b/game/themes/common/[bg-main]violet.jpg differ
diff --git a/game/themes/Fantasy/[button]13.png b/game/themes/common/[button]13.png
similarity index 100%
rename from game/themes/Fantasy/[button]13.png
rename to game/themes/common/[button]13.png
diff --git a/game/themes/Fantasy/[button]alt.png b/game/themes/common/[button]alt.png
similarity index 100%
rename from game/themes/Fantasy/[button]alt.png
rename to game/themes/common/[button]alt.png
diff --git a/game/themes/Fantasy/[button]az.png b/game/themes/common/[button]az.png
similarity index 100%
rename from game/themes/Fantasy/[button]az.png
rename to game/themes/common/[button]az.png
diff --git a/game/themes/Fantasy/[button]del.png b/game/themes/common/[button]del.png
similarity index 100%
rename from game/themes/Fantasy/[button]del.png
rename to game/themes/common/[button]del.png
diff --git a/game/themes/Fantasy/[button]enter.png b/game/themes/common/[button]enter.png
similarity index 100%
rename from game/themes/Fantasy/[button]enter.png
rename to game/themes/common/[button]enter.png
diff --git a/game/themes/Fantasy/[button]esc.png b/game/themes/common/[button]esc.png
similarity index 100%
rename from game/themes/Fantasy/[button]esc.png
rename to game/themes/common/[button]esc.png
diff --git a/game/themes/Fantasy/[button]ins.png b/game/themes/common/[button]ins.png
similarity index 100%
rename from game/themes/Fantasy/[button]ins.png
rename to game/themes/common/[button]ins.png
diff --git a/game/themes/Fantasy/[button]j.png b/game/themes/common/[button]j.png
similarity index 100%
rename from game/themes/Fantasy/[button]j.png
rename to game/themes/common/[button]j.png
diff --git a/game/themes/Fantasy/[button]m.png b/game/themes/common/[button]m.png
similarity index 100%
rename from game/themes/Fantasy/[button]m.png
rename to game/themes/common/[button]m.png
diff --git a/game/themes/Fantasy/[button]navi.png b/game/themes/common/[button]navi.png
similarity index 100%
rename from game/themes/Fantasy/[button]navi.png
rename to game/themes/common/[button]navi.png
diff --git a/game/themes/Fantasy/[button]p.png b/game/themes/common/[button]p.png
similarity index 100%
rename from game/themes/Fantasy/[button]p.png
rename to game/themes/common/[button]p.png
diff --git a/game/themes/Fantasy/[color]black-fade.png b/game/themes/common/[color]black-fade.png
similarity index 100%
rename from game/themes/Fantasy/[color]black-fade.png
rename to game/themes/common/[color]black-fade.png
diff --git a/game/themes/Fantasy/[color]hue-bar.png b/game/themes/common/[color]hue-bar.png
similarity index 100%
rename from game/themes/Fantasy/[color]hue-bar.png
rename to game/themes/common/[color]hue-bar.png
diff --git a/game/themes/Fantasy/[color]picker.jpg b/game/themes/common/[color]picker.jpg
similarity index 100%
rename from game/themes/Fantasy/[color]picker.jpg
rename to game/themes/common/[color]picker.jpg
diff --git a/game/themes/Fantasy/[color]picker.png b/game/themes/common/[color]picker.png
similarity index 100%
rename from game/themes/Fantasy/[color]picker.png
rename to game/themes/common/[color]picker.png
diff --git a/game/themes/Fantasy/[color]pickerbg.png b/game/themes/common/[color]pickerbg.png
similarity index 100%
rename from game/themes/Fantasy/[color]pickerbg.png
rename to game/themes/common/[color]pickerbg.png
diff --git a/game/themes/Fantasy/[color]pointer.png b/game/themes/common/[color]pointer.png
similarity index 100%
rename from game/themes/Fantasy/[color]pointer.png
rename to game/themes/common/[color]pointer.png
diff --git a/game/themes/Fantasy/[color]white-fade.png b/game/themes/common/[color]white-fade.png
similarity index 100%
rename from game/themes/Fantasy/[color]white-fade.png
rename to game/themes/common/[color]white-fade.png
diff --git a/game/themes/common/[effect]goldenNoteStar.png b/game/themes/common/[effect]goldenNoteStar.png
new file mode 100644
index 00000000..bd3e21a5
Binary files /dev/null and b/game/themes/common/[effect]goldenNoteStar.png differ
diff --git a/game/themes/common/[effect]perfectNoteStar.png b/game/themes/common/[effect]perfectNoteStar.png
new file mode 100644
index 00000000..a9d0fccf
Binary files /dev/null and b/game/themes/common/[effect]perfectNoteStar.png differ
diff --git a/game/themes/Fantasy/[helper]buttonFade.png b/game/themes/common/[helper]buttonFade.png
similarity index 100%
rename from game/themes/Fantasy/[helper]buttonFade.png
rename to game/themes/common/[helper]buttonFade.png
diff --git a/game/themes/Fantasy/[helper]rectangle.png b/game/themes/common/[helper]rectangle.png
similarity index 100%
rename from game/themes/Fantasy/[helper]rectangle.png
rename to game/themes/common/[helper]rectangle.png
diff --git a/game/themes/Fantasy/[icon]song_calcmedley.png b/game/themes/common/[icon]song_calcmedley.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_calcmedley.png
rename to game/themes/common/[icon]song_calcmedley.png
diff --git a/game/themes/Fantasy/[icon]song_duet.png b/game/themes/common/[icon]song_duet.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_duet.png
rename to game/themes/common/[icon]song_duet.png
diff --git a/game/themes/Fantasy/[icon]song_medley.png b/game/themes/common/[icon]song_medley.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_medley.png
rename to game/themes/common/[icon]song_medley.png
diff --git a/game/themes/Fantasy/[icon]song_menu.png b/game/themes/common/[icon]song_menu.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_menu.png
rename to game/themes/common/[icon]song_menu.png
diff --git a/game/themes/Fantasy/[icon]song_search.png b/game/themes/common/[icon]song_search.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_search.png
rename to game/themes/common/[icon]song_search.png
diff --git a/game/themes/Fantasy/[icon]song_video.png b/game/themes/common/[icon]song_video.png
similarity index 100%
rename from game/themes/Fantasy/[icon]song_video.png
rename to game/themes/common/[icon]song_video.png
diff --git a/game/themes/common/[interface]cursor.png b/game/themes/common/[interface]cursor.png
new file mode 100644
index 00000000..c648973f
Binary files /dev/null and b/game/themes/common/[interface]cursor.png differ
diff --git a/game/themes/common/[interface]cursor_pressed.png b/game/themes/common/[interface]cursor_pressed.png
new file mode 100644
index 00000000..e706e3be
Binary files /dev/null and b/game/themes/common/[interface]cursor_pressed.png differ
diff --git a/game/themes/common/[interface]dialog_background.png b/game/themes/common/[interface]dialog_background.png
new file mode 100644
index 00000000..188f3d1d
Binary files /dev/null and b/game/themes/common/[interface]dialog_background.png differ
diff --git a/game/themes/Fantasy/[interface]dialog_background2.png b/game/themes/common/[interface]dialog_background2.png
similarity index 100%
rename from game/themes/Fantasy/[interface]dialog_background2.png
rename to game/themes/common/[interface]dialog_background2.png
diff --git a/game/themes/Fantasy/[interface]dialog_backgroundtop.png b/game/themes/common/[interface]dialog_backgroundtop.png
similarity index 100%
rename from game/themes/Fantasy/[interface]dialog_backgroundtop.png
rename to game/themes/common/[interface]dialog_backgroundtop.png
diff --git a/game/themes/common/[interface]select_arrow_left.png b/game/themes/common/[interface]select_arrow_left.png
new file mode 100644
index 00000000..eb62e8b2
Binary files /dev/null and b/game/themes/common/[interface]select_arrow_left.png differ
diff --git a/game/themes/common/[interface]select_arrow_right.png b/game/themes/common/[interface]select_arrow_right.png
new file mode 100644
index 00000000..cce260b0
Binary files /dev/null and b/game/themes/common/[interface]select_arrow_right.png differ
diff --git a/game/themes/Fantasy/[interface]selectbg_search.png b/game/themes/common/[interface]selectbg_search.png
similarity index 100%
rename from game/themes/Fantasy/[interface]selectbg_search.png
rename to game/themes/common/[interface]selectbg_search.png
diff --git a/game/themes/common/[jukebox]bartop.png b/game/themes/common/[jukebox]bartop.png
new file mode 100644
index 00000000..7ef2a9a3
Binary files /dev/null and b/game/themes/common/[jukebox]bartop.png differ
diff --git a/game/themes/common/[jukebox]close.png b/game/themes/common/[jukebox]close.png
new file mode 100644
index 00000000..447ab1fb
Binary files /dev/null and b/game/themes/common/[jukebox]close.png differ
diff --git a/game/themes/Fantasy/[jukebox]currentsong.png b/game/themes/common/[jukebox]currentsong.png
similarity index 100%
rename from game/themes/Fantasy/[jukebox]currentsong.png
rename to game/themes/common/[jukebox]currentsong.png
diff --git a/game/themes/common/[jukebox]lyric.png b/game/themes/common/[jukebox]lyric.png
new file mode 100644
index 00000000..cda4296f
Binary files /dev/null and b/game/themes/common/[jukebox]lyric.png differ
diff --git a/game/themes/common/[jukebox]options.png b/game/themes/common/[jukebox]options.png
new file mode 100644
index 00000000..e28f424f
Binary files /dev/null and b/game/themes/common/[jukebox]options.png differ
diff --git a/game/themes/common/[jukebox]pin.png b/game/themes/common/[jukebox]pin.png
new file mode 100644
index 00000000..49aa1a45
Binary files /dev/null and b/game/themes/common/[jukebox]pin.png differ
diff --git a/game/themes/common/[jukebox]random.png b/game/themes/common/[jukebox]random.png
new file mode 100644
index 00000000..d1705215
Binary files /dev/null and b/game/themes/common/[jukebox]random.png differ
diff --git a/game/themes/common/[jukebox]repeat.png b/game/themes/common/[jukebox]repeat.png
new file mode 100644
index 00000000..a99eac5a
Binary files /dev/null and b/game/themes/common/[jukebox]repeat.png differ
diff --git a/game/themes/common/[jukebox]songlist.png b/game/themes/common/[jukebox]songlist.png
new file mode 100644
index 00000000..8a78179f
Binary files /dev/null and b/game/themes/common/[jukebox]songlist.png differ
diff --git a/game/themes/common/[jukebox]songlistdown.png b/game/themes/common/[jukebox]songlistdown.png
new file mode 100644
index 00000000..fde877de
Binary files /dev/null and b/game/themes/common/[jukebox]songlistdown.png differ
diff --git a/game/themes/common/[jukebox]songlistup.png b/game/themes/common/[jukebox]songlistup.png
new file mode 100644
index 00000000..2ce68bd5
Binary files /dev/null and b/game/themes/common/[jukebox]songlistup.png differ
diff --git a/game/themes/common/[jukebox]songmenunext.png b/game/themes/common/[jukebox]songmenunext.png
new file mode 100644
index 00000000..3d2faa52
Binary files /dev/null and b/game/themes/common/[jukebox]songmenunext.png differ
diff --git a/game/themes/common/[jukebox]songmenuplaylist.png b/game/themes/common/[jukebox]songmenuplaylist.png
new file mode 100644
index 00000000..743e6523
Binary files /dev/null and b/game/themes/common/[jukebox]songmenuplaylist.png differ
diff --git a/game/themes/common/[jukebox]songmenuplaypause.png b/game/themes/common/[jukebox]songmenuplaypause.png
new file mode 100644
index 00000000..1639122b
Binary files /dev/null and b/game/themes/common/[jukebox]songmenuplaypause.png differ
diff --git a/game/themes/common/[jukebox]songmenuprevious.png b/game/themes/common/[jukebox]songmenuprevious.png
new file mode 100644
index 00000000..e971709d
Binary files /dev/null and b/game/themes/common/[jukebox]songmenuprevious.png differ
diff --git a/game/themes/common/[jukebox]songoptions.png b/game/themes/common/[jukebox]songoptions.png
new file mode 100644
index 00000000..f38ea905
Binary files /dev/null and b/game/themes/common/[jukebox]songoptions.png differ
diff --git a/game/themes/Fantasy/[jukebox]songlist.png b/game/themes/common/[jukebox]songselection.png
similarity index 100%
rename from game/themes/Fantasy/[jukebox]songlist.png
rename to game/themes/common/[jukebox]songselection.png
diff --git a/game/themes/Fantasy/[jukebox]timeBar.jpg b/game/themes/common/[jukebox]timeBar.jpg
similarity index 100%
rename from game/themes/Fantasy/[jukebox]timeBar.jpg
rename to game/themes/common/[jukebox]timeBar.jpg
diff --git a/game/themes/Fantasy/[jukebox]timeBarBG.png b/game/themes/common/[jukebox]timeBarBG.png
similarity index 100%
rename from game/themes/Fantasy/[jukebox]timeBarBG.png
rename to game/themes/common/[jukebox]timeBarBG.png
diff --git a/game/themes/Fantasy/[jukebox]timeBarSongMenuBG.png b/game/themes/common/[jukebox]timeBarSongMenuBG.png
similarity index 100%
rename from game/themes/Fantasy/[jukebox]timeBarSongMenuBG.png
rename to game/themes/common/[jukebox]timeBarSongMenuBG.png
diff --git a/game/themes/Fantasy/[jukebox]title.png b/game/themes/common/[jukebox]title.png
similarity index 100%
rename from game/themes/Fantasy/[jukebox]title.png
rename to game/themes/common/[jukebox]title.png
diff --git a/game/themes/Fantasy/[main]button.png b/game/themes/common/[main]button.png
similarity index 100%
rename from game/themes/Fantasy/[main]button.png
rename to game/themes/common/[main]button.png
diff --git a/game/themes/common/[main]button2.png b/game/themes/common/[main]button2.png
new file mode 100644
index 00000000..8a722346
Binary files /dev/null and b/game/themes/common/[main]button2.png differ
diff --git a/game/themes/Fantasy/[main]buttonabout.png b/game/themes/common/[main]buttonabout.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonabout.png
rename to game/themes/common/[main]buttonabout.png
diff --git a/game/themes/Fantasy/[main]buttonexit.png b/game/themes/common/[main]buttonexit.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonexit.png
rename to game/themes/common/[main]buttonexit.png
diff --git a/game/themes/Fantasy/[main]buttonf.jpg b/game/themes/common/[main]buttonf.jpg
similarity index 100%
rename from game/themes/Fantasy/[main]buttonf.jpg
rename to game/themes/common/[main]buttonf.jpg
diff --git a/game/themes/Fantasy/[main]buttonjukebox.png b/game/themes/common/[main]buttonjukebox.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonjukebox.png
rename to game/themes/common/[main]buttonjukebox.png
diff --git a/game/themes/Fantasy/[main]buttonoption.png b/game/themes/common/[main]buttonoption.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonoption.png
rename to game/themes/common/[main]buttonoption.png
diff --git a/game/themes/Fantasy/[main]buttonparty.png b/game/themes/common/[main]buttonparty.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonparty.png
rename to game/themes/common/[main]buttonparty.png
diff --git a/game/themes/Fantasy/[main]buttonsolo.png b/game/themes/common/[main]buttonsolo.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonsolo.png
rename to game/themes/common/[main]buttonsolo.png
diff --git a/game/themes/Fantasy/[main]buttonstats.png b/game/themes/common/[main]buttonstats.png
similarity index 100%
rename from game/themes/Fantasy/[main]buttonstats.png
rename to game/themes/common/[main]buttonstats.png
diff --git a/game/themes/Fantasy/[main]mainBar.png b/game/themes/common/[main]mainBar.png
similarity index 100%
rename from game/themes/Fantasy/[main]mainBar.png
rename to game/themes/common/[main]mainBar.png
diff --git a/game/themes/Fantasy/[main]playerNumberBox.png b/game/themes/common/[main]playerNumberBox.png
similarity index 100%
rename from game/themes/Fantasy/[main]playerNumberBox.png
rename to game/themes/common/[main]playerNumberBox.png
diff --git a/game/themes/Fantasy/[main]selectbg.png b/game/themes/common/[main]selectbg.png
similarity index 100%
rename from game/themes/Fantasy/[main]selectbg.png
rename to game/themes/common/[main]selectbg.png
diff --git a/game/themes/Fantasy/[main]songSelection1.png b/game/themes/common/[main]songSelection1.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection1.png
rename to game/themes/common/[main]songSelection1.png
diff --git a/game/themes/Fantasy/[main]songSelection1dn.png b/game/themes/common/[main]songSelection1dn.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection1dn.png
rename to game/themes/common/[main]songSelection1dn.png
diff --git a/game/themes/Fantasy/[main]songSelection1up.png b/game/themes/common/[main]songSelection1up.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection1up.png
rename to game/themes/common/[main]songSelection1up.png
diff --git a/game/themes/Fantasy/[main]songSelection2.png b/game/themes/common/[main]songSelection2.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection2.png
rename to game/themes/common/[main]songSelection2.png
diff --git a/game/themes/Fantasy/[main]songSelection3.png b/game/themes/common/[main]songSelection3.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection3.png
rename to game/themes/common/[main]songSelection3.png
diff --git a/game/themes/Fantasy/[main]songSelection4.png b/game/themes/common/[main]songSelection4.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection4.png
rename to game/themes/common/[main]songSelection4.png
diff --git a/game/themes/Fantasy/[main]songSelection5.png b/game/themes/common/[main]songSelection5.png
similarity index 100%
rename from game/themes/Fantasy/[main]songSelection5.png
rename to game/themes/common/[main]songSelection5.png
diff --git a/game/themes/Fantasy/[menu]songMenuBg.png b/game/themes/common/[menu]songMenuBg.png
similarity index 100%
rename from game/themes/Fantasy/[menu]songMenuBg.png
rename to game/themes/common/[menu]songMenuBg.png
diff --git a/game/themes/Fantasy/[menu]songMenuSelectBg.png b/game/themes/common/[menu]songMenuSelectBg.png
similarity index 100%
rename from game/themes/Fantasy/[menu]songMenuSelectBg.png
rename to game/themes/common/[menu]songMenuSelectBg.png
diff --git a/game/themes/Fantasy/[name]frame.png b/game/themes/common/[name]frame.png
similarity index 100%
rename from game/themes/Fantasy/[name]frame.png
rename to game/themes/common/[name]frame.png
diff --git a/game/themes/common/[name]noavatar.png b/game/themes/common/[name]noavatar.png
new file mode 100644
index 00000000..2a7801d9
Binary files /dev/null and b/game/themes/common/[name]noavatar.png differ
diff --git a/game/themes/Fantasy/[name]player.png b/game/themes/common/[name]player.png
similarity index 100%
rename from game/themes/Fantasy/[name]player.png
rename to game/themes/common/[name]player.png
diff --git a/game/themes/common/[name]select.png b/game/themes/common/[name]select.png
new file mode 100644
index 00000000..74baa9f2
Binary files /dev/null and b/game/themes/common/[name]select.png differ
diff --git a/game/themes/Fantasy/[party]Joker.png b/game/themes/common/[party]Joker.png
similarity index 100%
rename from game/themes/Fantasy/[party]Joker.png
rename to game/themes/common/[party]Joker.png
diff --git a/game/themes/Fantasy/[party]playerButton.png b/game/themes/common/[party]playerButton.png
similarity index 100%
rename from game/themes/Fantasy/[party]playerButton.png
rename to game/themes/common/[party]playerButton.png
diff --git a/game/themes/Fantasy/[party]playerTeamButton.png b/game/themes/common/[party]playerTeamButton.png
similarity index 100%
rename from game/themes/Fantasy/[party]playerTeamButton.png
rename to game/themes/common/[party]playerTeamButton.png
diff --git a/game/themes/Fantasy/[party]playerselectbg.png b/game/themes/common/[party]playerselectbg.png
similarity index 100%
rename from game/themes/Fantasy/[party]playerselectbg.png
rename to game/themes/common/[party]playerselectbg.png
diff --git a/game/themes/Fantasy/[party]pointer.png b/game/themes/common/[party]pointer.png
similarity index 100%
rename from game/themes/Fantasy/[party]pointer.png
rename to game/themes/common/[party]pointer.png
diff --git a/game/themes/Fantasy/[party]roundBG1.png b/game/themes/common/[party]roundBG1.png
similarity index 100%
rename from game/themes/Fantasy/[party]roundBG1.png
rename to game/themes/common/[party]roundBG1.png
diff --git a/game/themes/Fantasy/[party]roundBG2.png b/game/themes/common/[party]roundBG2.png
similarity index 100%
rename from game/themes/Fantasy/[party]roundBG2.png
rename to game/themes/common/[party]roundBG2.png
diff --git a/game/themes/Fantasy/[party]roundBG3.png b/game/themes/common/[party]roundBG3.png
similarity index 100%
rename from game/themes/Fantasy/[party]roundBG3.png
rename to game/themes/common/[party]roundBG3.png
diff --git a/game/themes/Fantasy/[party]roundBG4.png b/game/themes/common/[party]roundBG4.png
similarity index 100%
rename from game/themes/Fantasy/[party]roundBG4.png
rename to game/themes/common/[party]roundBG4.png
diff --git a/game/themes/Fantasy/[party]roundTeamButton.png b/game/themes/common/[party]roundTeamButton.png
similarity index 100%
rename from game/themes/Fantasy/[party]roundTeamButton.png
rename to game/themes/common/[party]roundTeamButton.png
diff --git a/game/themes/Fantasy/[party]scoreBG1.png b/game/themes/common/[party]scoreBG1.png
similarity index 100%
rename from game/themes/Fantasy/[party]scoreBG1.png
rename to game/themes/common/[party]scoreBG1.png
diff --git a/game/themes/Fantasy/[party]scoreBG2.png b/game/themes/common/[party]scoreBG2.png
similarity index 100%
rename from game/themes/Fantasy/[party]scoreBG2.png
rename to game/themes/common/[party]scoreBG2.png
diff --git a/game/themes/common/[party]scoreDecoration.png b/game/themes/common/[party]scoreDecoration.png
new file mode 100644
index 00000000..4d820510
Binary files /dev/null and b/game/themes/common/[party]scoreDecoration.png differ
diff --git a/game/themes/Fantasy/[party]teamPoints.png b/game/themes/common/[party]teamPoints.png
similarity index 100%
rename from game/themes/Fantasy/[party]teamPoints.png
rename to game/themes/common/[party]teamPoints.png
diff --git a/game/themes/common/[party]winDecoration.png b/game/themes/common/[party]winDecoration.png
new file mode 100644
index 00000000..e3506eea
Binary files /dev/null and b/game/themes/common/[party]winDecoration.png differ
diff --git a/game/themes/Fantasy/[party]winTeamButton1.png b/game/themes/common/[party]winTeamButton1.png
similarity index 100%
rename from game/themes/Fantasy/[party]winTeamButton1.png
rename to game/themes/common/[party]winTeamButton1.png
diff --git a/game/themes/Fantasy/[party]winTeamButton2.png b/game/themes/common/[party]winTeamButton2.png
similarity index 100%
rename from game/themes/Fantasy/[party]winTeamButton2.png
rename to game/themes/common/[party]winTeamButton2.png
diff --git a/game/themes/Fantasy/[party]winTeamButton3.png b/game/themes/common/[party]winTeamButton3.png
similarity index 100%
rename from game/themes/Fantasy/[party]winTeamButton3.png
rename to game/themes/common/[party]winTeamButton3.png
diff --git a/game/themes/common/[rap]notesBgLeft.png b/game/themes/common/[rap]notesBgLeft.png
new file mode 100644
index 00000000..5453de15
Binary files /dev/null and b/game/themes/common/[rap]notesBgLeft.png differ
diff --git a/game/themes/common/[rap]notesBgMid.png b/game/themes/common/[rap]notesBgMid.png
new file mode 100644
index 00000000..548339f8
Binary files /dev/null and b/game/themes/common/[rap]notesBgMid.png differ
diff --git a/game/themes/common/[rap]notesBgRight.png b/game/themes/common/[rap]notesBgRight.png
new file mode 100644
index 00000000..ac86226b
Binary files /dev/null and b/game/themes/common/[rap]notesBgRight.png differ
diff --git a/game/themes/common/[rap]notesLeft.png b/game/themes/common/[rap]notesLeft.png
new file mode 100644
index 00000000..77456896
Binary files /dev/null and b/game/themes/common/[rap]notesLeft.png differ
diff --git a/game/themes/common/[rap]notesMid.png b/game/themes/common/[rap]notesMid.png
new file mode 100644
index 00000000..4696dbb1
Binary files /dev/null and b/game/themes/common/[rap]notesMid.png differ
diff --git a/game/themes/common/[rap]notesPlainLeft.png b/game/themes/common/[rap]notesPlainLeft.png
new file mode 100644
index 00000000..fc2a407c
Binary files /dev/null and b/game/themes/common/[rap]notesPlainLeft.png differ
diff --git a/game/themes/common/[rap]notesPlainMid.png b/game/themes/common/[rap]notesPlainMid.png
new file mode 100644
index 00000000..50895c6c
Binary files /dev/null and b/game/themes/common/[rap]notesPlainMid.png differ
diff --git a/game/themes/common/[rap]notesPlainRight.png b/game/themes/common/[rap]notesPlainRight.png
new file mode 100644
index 00000000..8de39464
Binary files /dev/null and b/game/themes/common/[rap]notesPlainRight.png differ
diff --git a/game/themes/common/[rap]notesRight.png b/game/themes/common/[rap]notesRight.png
new file mode 100644
index 00000000..2c80fcea
Binary files /dev/null and b/game/themes/common/[rap]notesRight.png differ
diff --git a/game/themes/Fantasy/[score]Line.png b/game/themes/common/[score]Line.png
similarity index 100%
rename from game/themes/Fantasy/[score]Line.png
rename to game/themes/common/[score]Line.png
diff --git a/game/themes/Fantasy/[score]bar_box_dark.png b/game/themes/common/[score]bar_box_dark.png
similarity index 100%
rename from game/themes/Fantasy/[score]bar_box_dark.png
rename to game/themes/common/[score]bar_box_dark.png
diff --git a/game/themes/Fantasy/[score]bar_box_light.png b/game/themes/common/[score]bar_box_light.png
similarity index 100%
rename from game/themes/Fantasy/[score]bar_box_light.png
rename to game/themes/common/[score]bar_box_light.png
diff --git a/game/themes/Fantasy/[score]bar_box_lightest.png b/game/themes/common/[score]bar_box_lightest.png
similarity index 100%
rename from game/themes/Fantasy/[score]bar_box_lightest.png
rename to game/themes/common/[score]bar_box_lightest.png
diff --git a/game/themes/Fantasy/[score]box.png b/game/themes/common/[score]box.png
similarity index 100%
rename from game/themes/Fantasy/[score]box.png
rename to game/themes/common/[score]box.png
diff --git a/game/themes/Fantasy/[score]buttonsendscore.png b/game/themes/common/[score]buttonsendscore.png
similarity index 100%
rename from game/themes/Fantasy/[score]buttonsendscore.png
rename to game/themes/common/[score]buttonsendscore.png
diff --git a/game/themes/Fantasy/[score]endcap.png b/game/themes/common/[score]endcap.png
similarity index 100%
rename from game/themes/Fantasy/[score]endcap.png
rename to game/themes/common/[score]endcap.png
diff --git a/game/themes/common/[score]frame.png b/game/themes/common/[score]frame.png
new file mode 100644
index 00000000..ca324de4
Binary files /dev/null and b/game/themes/common/[score]frame.png differ
diff --git a/game/themes/Fantasy/[score]glass_box.png b/game/themes/common/[score]glass_box.png
similarity index 100%
rename from game/themes/Fantasy/[score]glass_box.png
rename to game/themes/common/[score]glass_box.png
diff --git a/game/themes/Fantasy/[score]level.png b/game/themes/common/[score]level.png
similarity index 100%
rename from game/themes/Fantasy/[score]level.png
rename to game/themes/common/[score]level.png
diff --git a/game/themes/Fantasy/[score]levelRound.png b/game/themes/common/[score]levelRound.png
similarity index 100%
rename from game/themes/Fantasy/[score]levelRound.png
rename to game/themes/common/[score]levelRound.png
diff --git a/game/themes/Fantasy/[score]level_dark.png b/game/themes/common/[score]level_dark.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_dark.png
rename to game/themes/common/[score]level_dark.png
diff --git a/game/themes/Fantasy/[score]level_dark_round.png b/game/themes/common/[score]level_dark_round.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_dark_round.png
rename to game/themes/common/[score]level_dark_round.png
diff --git a/game/themes/Fantasy/[score]level_light.png b/game/themes/common/[score]level_light.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_light.png
rename to game/themes/common/[score]level_light.png
diff --git a/game/themes/Fantasy/[score]level_light_round.png b/game/themes/common/[score]level_light_round.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_light_round.png
rename to game/themes/common/[score]level_light_round.png
diff --git a/game/themes/Fantasy/[score]level_lightest.png b/game/themes/common/[score]level_lightest.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_lightest.png
rename to game/themes/common/[score]level_lightest.png
diff --git a/game/themes/Fantasy/[score]level_lightest_round.png b/game/themes/common/[score]level_lightest_round.png
similarity index 100%
rename from game/themes/Fantasy/[score]level_lightest_round.png
rename to game/themes/common/[score]level_lightest_round.png
diff --git a/game/themes/common/[score]rating_0.png b/game/themes/common/[score]rating_0.png
new file mode 100644
index 00000000..ce32746f
Binary files /dev/null and b/game/themes/common/[score]rating_0.png differ
diff --git a/game/themes/common/[score]rating_1.png b/game/themes/common/[score]rating_1.png
new file mode 100644
index 00000000..eb188371
Binary files /dev/null and b/game/themes/common/[score]rating_1.png differ
diff --git a/game/themes/common/[score]rating_2.png b/game/themes/common/[score]rating_2.png
new file mode 100644
index 00000000..51489a15
Binary files /dev/null and b/game/themes/common/[score]rating_2.png differ
diff --git a/game/themes/common/[score]rating_3.png b/game/themes/common/[score]rating_3.png
new file mode 100644
index 00000000..48fc5348
Binary files /dev/null and b/game/themes/common/[score]rating_3.png differ
diff --git a/game/themes/common/[score]rating_4.png b/game/themes/common/[score]rating_4.png
new file mode 100644
index 00000000..738437d5
Binary files /dev/null and b/game/themes/common/[score]rating_4.png differ
diff --git a/game/themes/common/[score]rating_5.png b/game/themes/common/[score]rating_5.png
new file mode 100644
index 00000000..74352524
Binary files /dev/null and b/game/themes/common/[score]rating_5.png differ
diff --git a/game/themes/common/[score]rating_6.png b/game/themes/common/[score]rating_6.png
new file mode 100644
index 00000000..b80563c8
Binary files /dev/null and b/game/themes/common/[score]rating_6.png differ
diff --git a/game/themes/common/[score]rating_7.png b/game/themes/common/[score]rating_7.png
new file mode 100644
index 00000000..c8ba1131
Binary files /dev/null and b/game/themes/common/[score]rating_7.png differ
diff --git a/game/themes/Fantasy/[sing]LyricsBall.png b/game/themes/common/[sing]LyricsBall.png
similarity index 100%
rename from game/themes/Fantasy/[sing]LyricsBall.png
rename to game/themes/common/[sing]LyricsBall.png
diff --git a/game/themes/Fantasy/[sing]SongName.png b/game/themes/common/[sing]SongName.png
similarity index 100%
rename from game/themes/Fantasy/[sing]SongName.png
rename to game/themes/common/[sing]SongName.png
diff --git a/game/themes/Fantasy/[sing]lineBonusPopUp.png b/game/themes/common/[sing]lineBonusPopUp.png
similarity index 100%
rename from game/themes/Fantasy/[sing]lineBonusPopUp.png
rename to game/themes/common/[sing]lineBonusPopUp.png
diff --git a/game/themes/common/[sing]lyricsHelpBar.png b/game/themes/common/[sing]lyricsHelpBar.png
new file mode 100644
index 00000000..420190b7
Binary files /dev/null and b/game/themes/common/[sing]lyricsHelpBar.png differ
diff --git a/game/themes/common/[sing]notesBgLeft.png b/game/themes/common/[sing]notesBgLeft.png
new file mode 100644
index 00000000..1e015fc6
Binary files /dev/null and b/game/themes/common/[sing]notesBgLeft.png differ
diff --git a/game/themes/common/[sing]notesBgMid.png b/game/themes/common/[sing]notesBgMid.png
new file mode 100644
index 00000000..6d938a80
Binary files /dev/null and b/game/themes/common/[sing]notesBgMid.png differ
diff --git a/game/themes/common/[sing]notesBgRight.png b/game/themes/common/[sing]notesBgRight.png
new file mode 100644
index 00000000..d8041688
Binary files /dev/null and b/game/themes/common/[sing]notesBgRight.png differ
diff --git a/game/themes/common/[sing]notesLeft.png b/game/themes/common/[sing]notesLeft.png
new file mode 100644
index 00000000..670afd8b
Binary files /dev/null and b/game/themes/common/[sing]notesLeft.png differ
diff --git a/game/themes/common/[sing]notesMid.png b/game/themes/common/[sing]notesMid.png
new file mode 100644
index 00000000..439657be
Binary files /dev/null and b/game/themes/common/[sing]notesMid.png differ
diff --git a/game/themes/common/[sing]notesPlainLeft.png b/game/themes/common/[sing]notesPlainLeft.png
new file mode 100644
index 00000000..7c7a5c02
Binary files /dev/null and b/game/themes/common/[sing]notesPlainLeft.png differ
diff --git a/game/themes/common/[sing]notesPlainMid.png b/game/themes/common/[sing]notesPlainMid.png
new file mode 100644
index 00000000..2bf70fb7
Binary files /dev/null and b/game/themes/common/[sing]notesPlainMid.png differ
diff --git a/game/themes/common/[sing]notesPlainRight.png b/game/themes/common/[sing]notesPlainRight.png
new file mode 100644
index 00000000..d35abe2b
Binary files /dev/null and b/game/themes/common/[sing]notesPlainRight.png differ
diff --git a/game/themes/common/[sing]notesRight.png b/game/themes/common/[sing]notesRight.png
new file mode 100644
index 00000000..8ab6995a
Binary files /dev/null and b/game/themes/common/[sing]notesRight.png differ
diff --git a/game/themes/Fantasy/[sing]p.png b/game/themes/common/[sing]p.png
similarity index 100%
rename from game/themes/Fantasy/[sing]p.png
rename to game/themes/common/[sing]p.png
diff --git a/game/themes/common/[sing]pause.png b/game/themes/common/[sing]pause.png
new file mode 100644
index 00000000..288c0997
Binary files /dev/null and b/game/themes/common/[sing]pause.png differ
diff --git a/game/themes/Fantasy/[sing]scoreBg.jpg b/game/themes/common/[sing]scoreBg.jpg
similarity index 100%
rename from game/themes/Fantasy/[sing]scoreBg.jpg
rename to game/themes/common/[sing]scoreBg.jpg
diff --git a/game/themes/Fantasy/[sing]scoreBg.png b/game/themes/common/[sing]scoreBg.png
similarity index 100%
rename from game/themes/Fantasy/[sing]scoreBg.png
rename to game/themes/common/[sing]scoreBg.png
diff --git a/game/themes/Fantasy/[sing]singBarBack.png b/game/themes/common/[sing]singBarBack.png
similarity index 100%
rename from game/themes/Fantasy/[sing]singBarBack.png
rename to game/themes/common/[sing]singBarBack.png
diff --git a/game/themes/Fantasy/[sing]singBarBar.jpg b/game/themes/common/[sing]singBarBar.jpg
similarity index 100%
rename from game/themes/Fantasy/[sing]singBarBar.jpg
rename to game/themes/common/[sing]singBarBar.jpg
diff --git a/game/themes/Fantasy/[sing]singBarBar.png b/game/themes/common/[sing]singBarBar.png
similarity index 100%
rename from game/themes/Fantasy/[sing]singBarBar.png
rename to game/themes/common/[sing]singBarBar.png
diff --git a/game/themes/Fantasy/[sing]singBarFront.png b/game/themes/common/[sing]singBarFront.png
similarity index 100%
rename from game/themes/Fantasy/[sing]singBarFront.png
rename to game/themes/common/[sing]singBarFront.png
diff --git a/game/themes/common/[sing]textBar.png b/game/themes/common/[sing]textBar.png
new file mode 100644
index 00000000..9fe4e26c
Binary files /dev/null and b/game/themes/common/[sing]textBar.png differ
diff --git a/game/themes/Fantasy/[sing]textBarDuet.png b/game/themes/common/[sing]textBarDuet.png
similarity index 100%
rename from game/themes/Fantasy/[sing]textBarDuet.png
rename to game/themes/common/[sing]textBarDuet.png
diff --git a/game/themes/Fantasy/[sing]timeBar.jpg b/game/themes/common/[sing]timeBar.jpg
similarity index 100%
rename from game/themes/Fantasy/[sing]timeBar.jpg
rename to game/themes/common/[sing]timeBar.jpg
diff --git a/game/themes/common/[sing]timeBarBG.png b/game/themes/common/[sing]timeBarBG.png
new file mode 100644
index 00000000..6014fd75
Binary files /dev/null and b/game/themes/common/[sing]timeBarBG.png differ
diff --git a/game/themes/Fantasy/[sing]timeBarBG2.png b/game/themes/common/[sing]timeBarBG2.png
similarity index 100%
rename from game/themes/Fantasy/[sing]timeBarBG2.png
rename to game/themes/common/[sing]timeBarBG2.png
diff --git a/game/themes/Fantasy/[song]duetsinger.png b/game/themes/common/[song]duetsinger.png
similarity index 100%
rename from game/themes/Fantasy/[song]duetsinger.png
rename to game/themes/common/[song]duetsinger.png
diff --git a/game/themes/Fantasy/[song]duetsinger2.png b/game/themes/common/[song]duetsinger2.png
similarity index 100%
rename from game/themes/Fantasy/[song]duetsinger2.png
rename to game/themes/common/[song]duetsinger2.png
diff --git a/game/themes/Fantasy/[song]duetsinger3.png b/game/themes/common/[song]duetsinger3.png
similarity index 100%
rename from game/themes/Fantasy/[song]duetsinger3.png
rename to game/themes/common/[song]duetsinger3.png
diff --git a/game/themes/Fantasy/[song]message.png b/game/themes/common/[song]message.png
similarity index 100%
rename from game/themes/Fantasy/[song]message.png
rename to game/themes/common/[song]message.png
diff --git a/game/themes/Fantasy/[special]bg_fade.png b/game/themes/common/[special]bg_fade.png
similarity index 100%
rename from game/themes/Fantasy/[special]bg_fade.png
rename to game/themes/common/[special]bg_fade.png
diff --git a/game/themes/common/[stat]InfoBG1.png b/game/themes/common/[stat]InfoBG1.png
new file mode 100644
index 00000000..533e6d75
Binary files /dev/null and b/game/themes/common/[stat]InfoBG1.png differ
diff --git a/game/themes/common/[stat]InfoBG2.png b/game/themes/common/[stat]InfoBG2.png
new file mode 100644
index 00000000..48f19570
Binary files /dev/null and b/game/themes/common/[stat]InfoBG2.png differ
diff --git a/game/themes/Fantasy/[tournament]trophy.png b/game/themes/common/[tournament]trophy.png
similarity index 100%
rename from game/themes/Fantasy/[tournament]trophy.png
rename to game/themes/common/[tournament]trophy.png
diff --git a/game/themes/Fantasy/[tournament]winner.png b/game/themes/common/[tournament]winner.png
similarity index 100%
rename from game/themes/Fantasy/[tournament]winner.png
rename to game/themes/common/[tournament]winner.png
diff --git a/installer/dependencies/images/header.bmp b/installer/dependencies/images/header.bmp
index 5dd65985..96785b14 100644
Binary files a/installer/dependencies/images/header.bmp and b/installer/dependencies/images/header.bmp differ
diff --git a/installer/dependencies/images/side.bmp b/installer/dependencies/images/side.bmp
index 37cae006..57caf54d 100644
Binary files a/installer/dependencies/images/side.bmp and b/installer/dependencies/images/side.bmp differ
diff --git a/src/WorldParty for Windows.lpi b/src/WorldParty for Windows.lpi
index bca9e70c..650d48b1 100644
--- a/src/WorldParty for Windows.lpi
+++ b/src/WorldParty for Windows.lpi
@@ -266,7 +266,7 @@
-
+
@@ -294,7 +294,7 @@
-
+
@@ -506,11 +506,6 @@
-
-
-
-
-
diff --git a/src/WorldParty.dpr b/src/WorldParty.dpr
index 842ab91f..3205c13d 100644
--- a/src/WorldParty.dpr
+++ b/src/WorldParty.dpr
@@ -146,6 +146,7 @@ uses
MTProcs in 'lib\Lazarus\components\multithreadprocs\mtprocs.pas',
MTPCPU in 'lib\Lazarus\components\multithreadprocs\mtpcpu.pas',
{$ENDIF}
+ CpuCount in 'lib\other\cpucount.pas',
{$IFDEF MSWINDOWS}
// FPC compatibility file for Allocate/DeallocateHWnd
WinAllocation in 'lib\other\WinAllocation.pas',
@@ -211,7 +212,6 @@ uses
ULog in 'base\ULog.pas',
UJoystick in 'base\UJoystick.pas',
UDataBase in 'base\UDataBase.pas',
- UCovers in 'base\UCovers.pas',
UCatCovers in 'base\UCatCovers.pas',
UFiles in 'base\UFiles.pas',
UGraphicClasses in 'base\UGraphicClasses.pas',
@@ -225,7 +225,6 @@ uses
TextGL in 'base\TextGL.pas',
UUnicodeUtils in 'base\UUnicodeUtils.pas',
- UUnicodeStringHelper in 'base\uunicodestringhelper',
UFont in 'base\UFont.pas',
UTextEncoding in 'base\UTextEncoding.pas',
@@ -306,7 +305,7 @@ uses
//------------------------------
UScreenLoading in 'screens\UScreenLoading.pas',
UScreenMain in 'screens\UScreenMain.pas',
- UScreenName in 'screens\UScreenName.pas',
+ UScreenPlayerSelection in 'screens\UScreenPlayerSelection.pas',
UScreenSong in 'screens\UScreenSong.pas',
UScreenSingController in 'screens\controllers\UScreenSingController.pas',
UScreenSingView in 'screens\views\UScreenSingView.pas',
@@ -318,7 +317,7 @@ uses
UScreenOptionsSound in 'screens\UScreenOptionsSound.pas',
UScreenOptionsLyrics in 'screens\UScreenOptionsLyrics.pas',
UScreenOptionsThemes in 'screens\UScreenOptionsThemes.pas',
- UScreenOptionsRecord in 'screens\UScreenOptionsRecord.pas',
+ UScreenOptionsMicrophones in 'screens\UScreenOptionsMicrophones.pas',
UScreenOptionsAdvanced in 'screens\UScreenOptionsAdvanced.pas',
UScreenOpen in 'screens\UScreenOpen.pas',
UScreenTop5 in 'screens\UScreenTop5.pas',
diff --git a/src/base/UBeatTimer.pas b/src/base/UBeatTimer.pas
index 81751f00..3ce41fb0 100644
--- a/src/base/UBeatTimer.pas
+++ b/src/base/UBeatTimer.pas
@@ -289,8 +289,8 @@ procedure TLyricsState.UpdateBeats();
OldBeatD := CurrentBeatD;
// MidBeatD = MidBeat with additional GAP
- MidBeatD := -0.5 + GetMidBeat(CurLyricsTime - (StartTime + 120 + 20) / 1000);
+ MidBeatD := -0.5 + GetMidBeat(CurLyricsTime - (StartTime + 90) / 1000);
CurrentBeatD := Floor(MidBeatD);
end;
-end.
\ No newline at end of file
+end.
diff --git a/src/base/UConfig.pas b/src/base/UConfig.pas
index d4588bb9..8ad128b5 100644
--- a/src/base/UConfig.pas
+++ b/src/base/UConfig.pas
@@ -125,7 +125,7 @@ interface
* Current version of UltraStar Deluxe WorldParty
*)
USDX_VERSION_MAJOR = 18;
- USDX_VERSION_MINOR = 2;
+ USDX_VERSION_MINOR = 11;
USDX_VERSION_RELEASE = '';
USDX_VERSION_STATE = '';
USDX_STRING = 'UltraStar Deluxe WorldParty';
diff --git a/src/base/UCovers.pas b/src/base/UCovers.pas
deleted file mode 100644
index a5b30d55..00000000
--- a/src/base/UCovers.pas
+++ /dev/null
@@ -1,144 +0,0 @@
-{*
- UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
- COPYRIGHT file distributed with this source distribution.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
- .
- *}
-
-unit UCovers;
-
-interface
-
-{$IFDEF FPC}
- {$MODE Delphi}
-{$ENDIF}
-
-{$I switches.inc}
-
-uses
- sdl2,
- SysUtils,
- Classes,
- UImage,
- UThemes,
- UTexture,
- UPath;
-
-type
- ECoverDBException = class(Exception)
- end;
-
- TCover = class
- private
- Filename: IPath;
- public
- constructor Create(Filename: IPath);
- function GetPreviewTexture(): TTexture;
- function GetEmptyTexture(): TTexture;
- function GetTexture(): TTexture;
- end;
-
- TCoverDatabase = class
- public
- constructor Create();
- destructor Destroy; override;
- function FindCover(const Filename: IPath): TCover;
- function AddCover(const Filename: IPath): TCover;
- function GetMaxCoverSize(): integer;
- end;
-
- TBlobWrapper = class(TCustomMemoryStream)
- function Write(const Buffer; Count: Integer): Integer; override;
- end;
-
-var
- Covers: TCoverDatabase;
-
-implementation
-
-uses
- UMain,
- ULog,
- UPlatform,
- UIni,
- Math,
- DateUtils;
-
-{ TBlobWrapper }
-
-function TBlobWrapper.Write(const Buffer; Count: Integer): Integer;
-begin
- SetPointer(Pointer(Buffer), Count);
- Result := Count;
-end;
-
-
-{ TCover }
-
-constructor TCover.Create(Filename: IPath);
-begin
- Self.Filename := Filename;
-end;
-
-function TCover.GetPreviewTexture(): TTexture;
-begin
- Result := Self.GetTexture();
-end;
-
-function TCover.GetEmptyTexture(): TTexture;
-begin
- if not (Assigned(Filename)) or (Filename = nil) then Exit;
- FillChar(Result, SizeOf(TTexture), 0);
- Result.Name:= Filename;
-end;
-
-function TCover.GetTexture(): TTexture;
-begin
- if not (Assigned(Filename)) or (Filename = nil) then Exit;
- Result := Texture.LoadTexture(Filename);
-end;
-
-
-{ TCoverDatabase }
-
-constructor TCoverDatabase.Create();
-begin
- inherited;
-end;
-
-destructor TCoverDatabase.Destroy;
-begin
- inherited;
-end;
-
-function TCoverDatabase.GetMaxCoverSize(): integer;
-begin
- Result := ITextureSizeVals[Ini.TextureSize];
-end;
-
-{* TODO delete when change UScreenSong calls *}
-function TCoverDatabase.FindCover(const Filename: IPath): TCover;
-begin
- Result := AddCover(Filename);
-end;
-
-function TCoverDatabase.AddCover(const Filename: IPath): TCover;
-begin
- Result := TCover.Create(Filename);
-end;
-end.
diff --git a/src/base/UDraw.pas b/src/base/UDraw.pas
index 80cb5c1c..a441c54c 100644
--- a/src/base/UDraw.pas
+++ b/src/base/UDraw.pas
@@ -413,20 +413,20 @@ procedure SingDrawBeatDelimeters(Left, Top, Right: real; NrLines: integer);
TempR: real;
begin
- if not Lines[NrLines].Line[Lines[NrLines].Current].HasLength(TempR) then TempR := 0
+ if not CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].HasLength(TempR) then TempR := 0
else TempR := (Right-Left) / TempR;
- if (Lines[NrLines].Line[Lines[NrLines].Current].TotalNotes > 0) and ( Right-Left > 0 ) and ( (Lines[NrLines].Line[Lines[NrLines].Current].End_ - Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) > 0 ) then
- TempR := (Right-Left) / (Lines[NrLines].Line[Lines[NrLines].Current].End_ - Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start)
+ if (CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].TotalNotes > 0) and ( Right-Left > 0 ) and ( (CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].End_ - CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) > 0 ) then
+ TempR := (Right-Left) / (CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].End_ - CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start)
else
TempR := 0;
glEnable(GL_BLEND);
glBegin(GL_LINES);
- for Count := Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start to Lines[NrLines].Line[Lines[NrLines].Current].End_ do
+ for Count := CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start to CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].End_ do
begin
glColor4f(0, 0, 0, 0.3);
- glVertex2f(Left + TempR * (Count - Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start), Top);
- glVertex2f(Left + TempR * (Count - Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start), Top + 135);
+ glVertex2f(Left + TempR * (Count - CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start), Top);
+ glVertex2f(Left + TempR * (Count - CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start), Top + 135);
end;
glEnd;
glDisable(GL_BLEND);
@@ -457,11 +457,11 @@ procedure SingDrawLine(Left, Top, Right: real; NrLines, PlayerNumber: integer; S
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if not Lines[NrLines].Line[Lines[NrLines].Current].HasLength(TempR) then TempR := 0
+ if not CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].HasLength(TempR) then TempR := 0
else TempR := (Right-Left) / TempR;
- with Lines[NrLines].Line[Lines[NrLines].Current] do
+ with CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current] do
begin
for Count := 0 to HighNote do
begin
@@ -484,7 +484,7 @@ procedure SingDrawLine(Left, Top, Right: real; NrLines, PlayerNumber: integer; S
glColor4f(1, 1, 1, 1); // We set alpha to 1, cause we can control the transparency through the png itself
// left part
- Rec.Left := (Start-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX;
+ Rec.Left := (Start-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX;
Rec.Right := Rec.Left + NotesW[PlayerNumber - 1];
Rec.Top := Top - (Tone-BaseNote)*Space/2 - NotesH[PlayerNumber - 1];
Rec.Bottom := Rec.Top + 2 * NotesH[PlayerNumber - 1];
@@ -509,7 +509,7 @@ procedure SingDrawLine(Left, Top, Right: real; NrLines, PlayerNumber: integer; S
// middle part
Rec.Left := Rec.Right;
- Rec.Right := (Start+Length-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left - NotesW[PlayerNumber - 1] - 0.5 + 10*ScreenX;
+ Rec.Right := (Start+Length-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left - NotesW[PlayerNumber - 1] - 0.5 + 10*ScreenX;
// the left note is more right than the right note itself, sounds weird - so we fix that xD
if Rec.Right <= Rec.Left then
@@ -595,7 +595,7 @@ procedure SingDrawPlayerLine(X, Y, W: real; NrLines, PlayerIndex: integer; Space
//if Player[NrGracza].LengthNote > 0 then
begin
- if not Lines[NrLines].Line[Lines[NrLines].Current].HasLength(TempR) then TempR := 0
+ if not CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].HasLength(TempR) then TempR := 0
else TempR := W / TempR;
for N := 0 to Player[PlayerIndex].HighNote do
@@ -603,7 +603,7 @@ procedure SingDrawPlayerLine(X, Y, W: real; NrLines, PlayerIndex: integer; Space
with Player[PlayerIndex].Note[N] do
begin
// Left part of note
- Rec.Left := X + (Start-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + 0.5 + 10*ScreenX;
+ Rec.Left := X + (Start-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + 0.5 + 10*ScreenX;
Rec.Right := Rec.Left + NotesW[PlayerIndex];
// Draw it in half size, if not hit
@@ -616,7 +616,7 @@ procedure SingDrawPlayerLine(X, Y, W: real; NrLines, PlayerIndex: integer; Space
NotesH2 := int(NotesH[PlayerIndex] * 0.65);
end;
- Rec.Top := Y - (Tone-Lines[NrLines].Line[Lines[NrLines].Current].BaseNote)*Space/2 - NotesH2;
+ Rec.Top := Y - (Tone-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].BaseNote)*Space/2 - NotesH2;
Rec.Bottom := Rec.Top + 2 * NotesH2;
// draw the left part
@@ -638,7 +638,7 @@ procedure SingDrawPlayerLine(X, Y, W: real; NrLines, PlayerIndex: integer; Space
// Middle part of the note
Rec.Left := Rec.Right;
- Rec.Right := X + (Start+Length-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR - NotesW[PlayerIndex] - 0.5 + 10*ScreenX;
+ Rec.Right := X + (Start+Length-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR - NotesW[PlayerIndex] - 0.5 + 10*ScreenX;
// new
if (Start+Length-1 = LyricsState.CurrentBeatD) then
@@ -726,10 +726,10 @@ procedure SingDrawPlayerBGLine(Left, Top, Right: real; NrLines, PlayerIndex: int
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if not Lines[NrLines].Line[Lines[NrLines].Current].HasLength(TempR) then TempR := 0
+ if not CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].HasLength(TempR) then TempR := 0
else TempR := (Right-Left) / TempR;
- with Lines[NrLines].Line[Lines[NrLines].Current] do
+ with CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current] do
begin
for Count := 0 to HighNote do
begin
@@ -743,15 +743,15 @@ procedure SingDrawPlayerBGLine(Left, Top, Right: real; NrLines, PlayerIndex: int
H := NotesH[PlayerIndex] * 1.5 + 3.5;
{
- X2 := (Start-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX + 4;
+ X2 := (Start-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX + 4;
X1 := X2-W;
- X3 := (Start+Length-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left - 0.5 + 10*ScreenX - 4;
+ X3 := (Start+Length-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left - 0.5 + 10*ScreenX - 4;
X4 := X3+W;
}
// left
- Rec.Right := (Start-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX + 4;
+ Rec.Right := (Start-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX + 4;
Rec.Left := Rec.Right - W;
Rec.Top := Top - (Tone-BaseNote)*Space/2 - H;
Rec.Bottom := Rec.Top + 2 * H;
@@ -773,7 +773,7 @@ procedure SingDrawPlayerBGLine(Left, Top, Right: real; NrLines, PlayerIndex: int
// middle part
Rec.Left := Rec.Right;
- Rec.Right := (Start+Length-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left - 0.5 + 10*ScreenX - 4;
+ Rec.Right := (Start+Length-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left - 0.5 + 10*ScreenX - 4;
// the left note is more right than the right note itself, sounds weird - so we fix that xD
if Rec.Right <= Rec.Left then
@@ -848,7 +848,7 @@ procedure SingDrawLyricHelper(CP: integer; Left, LyricsMid: real);
BarMoveLimit = 40; // max. number of beats remaining before the bar starts to move
begin
// get current lyrics line and the time in beats of its first note
- CurLine := @Lines[CP].Line[Lines[CP].Current];
+ CurLine := @CurrentSong.Lines[CP].Line[CurrentSong.Lines[CP].Current];
// FIXME: accessing ScreenSing is not that generic
if (CurrentSong.isDuet) and (PlayersPlay <> 1) then
@@ -932,25 +932,25 @@ procedure SingDrawLyricHelper(CP: integer; Left, LyricsMid: real);
begin
if (PlayersPlay = 3) or (PlayersPlay = 6) then
begin
- //if (PlayersPlay = 3) then
+ if (PlayersPlay = 3) then
Col := GetLyricBarColor(Ini.SingColor[CP]);
- //if (PlayersPlay = 6) then
- // Col := GetLyricBarColor(CP + 1);
+ if (PlayersPlay = 6) then
+ Col := GetLyricBarColor(CP + 1);
end
else
begin
if ScreenAct = 1 then
- Col := GetLyricBarColor(Ini.SingColor[CP])
+ Col := GetLyricColor(Ini.JukeboxSingLineColor)
else
- Col := GetLyricBarColor(Ini.SingColor[CP + 2]);
+ Col := GetLyricColor(Ini.JukeboxSingLineColor);
end;
end;
end
else
- // Col := GetLyricBarColor(1);
+ Col := GetLyricColor(Ini.JukeboxSingLineColor);
- glColor4f(255,255, 255, BarAlpha);
+ glColor4f(Col.R, Col.G, Col.B, BarAlpha);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glBindTexture(GL_TEXTURE_2D, Tex_Lyric_Help_Bar.TexNum);
@@ -990,7 +990,7 @@ procedure SingDrawLyricHelperJukebox(Left, LyricsMid: real);
begin
// get current lyrics line and the time in beats of its first note
- CurLine := @Lines[0].Line[Lines[0].Current];
+ CurLine := @CurrentSong.Lines[0].Line[CurrentSong.Lines[0].Current];
// FIXME: accessing ScreenSing is not that generic
LyricEngine := ScreenJukebox.Lyrics;
@@ -1841,10 +1841,10 @@ procedure EditDrawLine(Left, Top, Right: real; NrLines: integer; Space: integer)
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
- if not Lines[NrLines].Line[Lines[NrLines].Current].HasLength(TempR) then TempR := 0
+ if not CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].HasLength(TempR) then TempR := 0
else TempR := (Right-Left) / TempR;
- with Lines[NrLines].Line[Lines[NrLines].Current] do
+ with CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current] do
begin
for Count := 0 to HighNote do
begin
@@ -1861,7 +1861,7 @@ procedure EditDrawLine(Left, Top, Right: real; NrLines: integer; Space: integer)
end; // case
// left part
- Rec.Left := (Start-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX;
+ Rec.Left := (Start-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left + 0.5 + 10*ScreenX;
Rec.Right := Rec.Left + NotesW[0];
Rec.Top := Top - (Tone-BaseNote)*Space/2 - NotesH[0];
Rec.Bottom := Rec.Top + 2 * NotesH[0];
@@ -1883,7 +1883,7 @@ procedure EditDrawLine(Left, Top, Right: real; NrLines: integer; Space: integer)
// middle part
Rec.Left := Rec.Right;
- Rec.Right := (Start+Length-Lines[NrLines].Line[Lines[NrLines].Current].Note[0].Start) * TempR + Left - NotesW[0] - 0.5 + 10*ScreenX;
+ Rec.Right := (Start+Length-CurrentSong.Lines[NrLines].Line[CurrentSong.Lines[NrLines].Current].Note[0].Start) * TempR + Left - NotesW[0] - 0.5 + 10*ScreenX;
If (NoteType = ntRap) or (NoteType = ntRapGolden) then
begin
diff --git a/src/base/UFiles.pas b/src/base/UFiles.pas
index f4b23b00..d190ff17 100644
--- a/src/base/UFiles.pas
+++ b/src/base/UFiles.pas
@@ -66,11 +66,7 @@ procedure ResetSingTemp;
var
Count: integer;
begin
- SetLength(Lines, Length(Player));
for Count := 0 to High(Player) do begin
- SetLength(Lines[Count].Line, 1);
- SetLength(Lines[Count].Line[0].Note, 0);
- Lines[Count].Line[0].Lyric := '';
Player[Count].Score := 0;
Player[Count].LengthNote := 0;
Player[Count].HighNote := -1;
diff --git a/src/base/UGraphic.pas b/src/base/UGraphic.pas
index 43c85c02..e05847b6 100644
--- a/src/base/UGraphic.pas
+++ b/src/base/UGraphic.pas
@@ -44,14 +44,14 @@ interface
UPathUtils,
UScreenLoading,
UScreenMain,
- UScreenName,
+ UScreenPlayerSelection,
UScreenOptions,
UScreenOptionsGame,
UScreenOptionsGraphics,
UScreenOptionsSound,
UScreenOptionsLyrics,
UScreenOptionsThemes,
- UScreenOptionsRecord,
+ UScreenOptionsMicrophones,
UScreenOptionsAdvanced,
UScreenOptionsNetwork,
UScreenOptionsWebcam,
@@ -143,7 +143,7 @@ TRecR = record
ScreenOptionsSound: TScreenOptionsSound;
ScreenOptionsLyrics: TScreenOptionsLyrics;
ScreenOptionsThemes: TScreenOptionsThemes;
- ScreenOptionsRecord: TScreenOptionsRecord;
+ ScreenOptionsMicrophones: TScreenOptionsMicrophones;
ScreenOptionsAdvanced: TScreenOptionsAdvanced;
ScreenOptionsNetwork: TScreenOptionsNetwork;
ScreenOptionsWebcam: TScreenOptionsWebcam;
@@ -208,27 +208,12 @@ TRecR = record
Tex_BG_Mid_Rap: array[1..UIni.IMaxPlayerCount] of TTexture; //rename to tex_noteglow_mid
Tex_BG_Right_Rap: array[1..UIni.IMaxPlayerCount] of TTexture; //rename to tex_noteglow_right
- Tex_Note_Star: TTexture;
- Tex_Note_Perfect_Star: TTexture;
-
-
- Tex_Ball: TTexture;
Tex_Lyric_Help_Bar: TTexture;
FullScreen: boolean;
Tex_TimeProgress: TTexture;
Tex_JukeboxTimeProgress: TTexture;
- //Sing Bar Mod
- Tex_SingBar_Back: TTexture;
- Tex_SingBar_Bar: TTexture;
- Tex_SingBar_Front: TTexture;
- //end Singbar Mod
-
- //PhrasenBonus - Line Bonus Mod
- Tex_SingLineBonusBack: array[0..8] of TTexture;
- //End PhrasenBonus - Line Bonus Mod
-
//ScoreBG Texs
Tex_ScoreBG: array [0..UIni.IMaxPlayerCount-1] of TTexture;
@@ -244,15 +229,6 @@ TRecR = record
Tex_Score_Ratings : array [0..7] of TTexture; //stores all possible rating result images
- // arrows for SelectSlide
- Tex_SelectS_ArrowL: TTexture;
- Tex_SelectS_ArrowR: TTexture;
-
- // textures for software mouse cursor
- Tex_Cursor_Unpressed: TTexture;
- Tex_Cursor_Pressed: TTexture;
-
-
PboSupported: boolean;
const
@@ -338,94 +314,14 @@ procedure UnloadFontTextures;
end;
procedure LoadTextures;
-var
- P: integer;
- R, G, B: real;
- Col: integer;
begin
- Log.LogStatus('Loading Textures', 'LoadTextures');
+ TextGL.BuildFonts; //font textures
Texture := TTextureUnit.Create;
Texture.Limit := 1920; //currently, Full HD is all we want. switch to 64bit target before going further up
- Log.LogStatus('Loading Textures - A', 'LoadTextures');
-
- Tex_Note_Perfect_Star := Texture.LoadTexture(Skin.GetTextureFileName('NotePerfectStar'), TEXTURE_TYPE_TRANSPARENT, 0);
- Tex_Note_Star := Texture.LoadTexture(Skin.GetTextureFileName('NoteStar') , TEXTURE_TYPE_TRANSPARENT, $FFFFFF);
- Tex_Ball := Texture.LoadTexture(Skin.GetTextureFileName('Ball'), TEXTURE_TYPE_TRANSPARENT, $FF00FF);
- Tex_Lyric_Help_Bar := Texture.LoadTexture(Skin.GetTextureFileName('LyricHelpBar'), TEXTURE_TYPE_TRANSPARENT, 0);
-
- Tex_SelectS_ArrowL := Texture.LoadTexture(Skin.GetTextureFileName('Select_ArrowLeft'), TEXTURE_TYPE_TRANSPARENT, 0);
- Tex_SelectS_ArrowR := Texture.LoadTexture(Skin.GetTextureFileName('Select_ArrowRight'), TEXTURE_TYPE_TRANSPARENT, 0);
-
- Tex_Cursor_Unpressed := Texture.LoadTexture(Skin.GetTextureFileName('Cursor'), TEXTURE_TYPE_TRANSPARENT, 0);
-
- if (Skin.GetTextureFileName('Cursor_Pressed').IsSet) then
- Tex_Cursor_Pressed := Texture.LoadTexture(Skin.GetTextureFileName('Cursor_Pressed'), TEXTURE_TYPE_TRANSPARENT, 0)
- else
- Tex_Cursor_Pressed.TexNum := 0;
-
- //TimeBar mod
- Tex_TimeProgress := Texture.LoadTexture(Skin.GetTextureFileName('TimeBar'));
- Tex_JukeboxTimeProgress := Texture.LoadTexture(Skin.GetTextureFileName('JukeboxTimeBar'));
- //eoa TimeBar mod
-
- //SingBar Mod
- Tex_SingBar_Back := Texture.LoadTexture(Skin.GetTextureFileName('SingBarBack'), TEXTURE_TYPE_PLAIN, 0);
- Tex_SingBar_Bar := Texture.LoadTexture(Skin.GetTextureFileName('SingBarBar'), TEXTURE_TYPE_PLAIN, 0);
- Tex_SingBar_Front := Texture.LoadTexture(Skin.GetTextureFileName('SingBarFront'), TEXTURE_TYPE_PLAIN, 0);
- //end Singbar Mod
-
- Log.LogStatus('Loading Textures - B', 'LoadTextures');
-
- //Line Bonus PopUp
- for P := 0 to 8 do
- begin
- Case P of
- 0: begin
- R := 1;
- G := 0;
- B := 0;
- end;
- 1..3: begin
- R := 1;
- G := (P * 0.25);
- B := 0;
- end;
- 4: begin
- R := 1;
- G := 1;
- B := 0;
- end;
- 5..7: begin
- R := 1-((P-4)*0.25);
- G := 1;
- B := 0;
- end;
- 8: begin
- R := 0;
- G := 1;
- B := 0;
- end;
- else begin
- R := 1;
- G := 0;
- B := 0;
- end;
-
- End;
-
- Col := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255);
- Tex_SingLineBonusBack[P] := Texture.LoadTexture(Skin.GetTextureFileName('LineBonusBack'), TEXTURE_TYPE_COLORIZED, Col);
- end;
-
- Log.LogStatus('Loading Textures - C', 'LoadTextures');
-
- //## rating pictures that show a picture according to your rate ##
- for P := 0 to 7 do begin
- Tex_Score_Ratings[P] := Texture.LoadTexture(Skin.GetTextureFileName('Rating_'+IntToStr(P)), TEXTURE_TYPE_TRANSPARENT, 0);
- end;
-
- TextGL.BuildFonts; //font textures
- Log.LogStatus('Loading Textures - Done', 'LoadTextures');
+ //TODO this textures must be loaded in file that use it, but need more OOP to do this...
+ Tex_Lyric_Help_Bar := Texture.LoadTexture('LyricHelpBar', TEXTURE_TYPE_TRANSPARENT);
+ Tex_TimeProgress := Texture.LoadTexture('TimeBar');
+ Tex_JukeboxTimeProgress := Texture.LoadTexture('JukeboxTimeBar');
end;
const
@@ -448,8 +344,6 @@ procedure Initialize3D(Title: string);
LoadScreens();
Display.CurrentScreen^.FadeTo(@ScreenMain);
- Log.LogBenchmark('--> Loading Screens', 2);
- Log.LogStatus('Finish', 'Initialize3D');
end;
procedure SwapBuffers;
@@ -793,49 +687,14 @@ procedure OnWindowResized(w,h: integer);
end;
end;
+{ Load common screens }
procedure LoadScreens;
begin
+ ScreenOpen := TScreenOpen.Create();
+ ScreenPopupCheck := TScreenPopupCheck.Create();
+ ScreenPopupError := TScreenPopupError.Create();
+ ScreenPopupInfo := TScreenPopupInfo.Create();
ScreenMain := TScreenMain.Create;
- ScreenName := TScreenName.Create;
- ScreenSong := TScreenSong.Create;
- ScreenSongMenu := TScreenSongMenu.Create;
- ScreenJukebox := TScreenJukebox.Create;
- ScreenJukeboxOptions := TScreenJukeboxOptions.Create;
- ScreenJukeboxPlaylist := TScreenJukeboxPlaylist.Create;
- ScreenTop5 := TScreenTop5.Create;
- ScreenOptions := TScreenOptions.Create;
- ScreenOptionsGame := TScreenOptionsGame.Create;
- ScreenOptionsGraphics := TScreenOptionsGraphics.Create;
- ScreenOptionsSound := TScreenOptionsSound.Create;
- ScreenOptionsLyrics := TScreenOptionsLyrics.Create;
- ScreenOptionsThemes := TScreenOptionsThemes.Create;
- ScreenOptionsRecord := TScreenOptionsRecord.Create;
- ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create;
- ScreenOptionsNetwork := TScreenOptionsNetwork.Create;
- ScreenOptionsWebcam := TScreenOptionsWebcam.Create;
- ScreenOptionsJukebox := TScreenOptionsJukebox.Create;
- ScreenOpen := TScreenOpen.Create;
- ScreenAbout := TScreenAbout.Create;
- ScreenDevelopers := TScreenDevelopers.Create;
- ScreenSongJumpto := TScreenSongJumpto.Create;
- ScreenPopupCheck := TScreenPopupCheck.Create;
- ScreenPopupError := TScreenPopupError.Create;
- ScreenPopupInfo := TScreenPopupInfo.Create;
- ScreenPopupInsertUser := TScreenPopupInsertUser.Create;
- ScreenPopupSendScore := TScreenPopupSendScore.Create;
- ScreenPopupScoreDownload := TScreenPopupScoreDownload.Create;
- ScreenPartyNewRound := TScreenPartyNewRound.Create;
- ScreenPartyScore := TScreenPartyScore.Create;
- ScreenPartyWin := TScreenPartyWin.Create;
- ScreenPartyOptions := TScreenPartyOptions.Create;
- ScreenPartyPlayer := TScreenPartyPlayer.Create;
- ScreenPartyRounds := TScreenPartyRounds.Create;
- ScreenPartyTournamentRounds := TScreenPartyTournamentRounds.Create;
- ScreenPartyTournamentPlayer := TScreenPartyTournamentPlayer.Create;
- ScreenPartyTournamentOptions := TScreenPartyTournamentOptions.Create;
- ScreenPartyTournamentWin := TScreenPartyTournamentWin.Create;
- ScreenStatMain := TScreenStatMain.Create;
- ScreenStatDetail := TScreenStatDetail.Create;
end;
procedure ShowStatus(Status: string);
@@ -843,50 +702,51 @@ procedure ShowStatus(Status: string);
ScreenMain.Text[3].Text := Status;
end;
+{ Free screen variables in all cases, with an instance or not }
procedure UnloadScreens;
begin
- ScreenMain.Free;
- ScreenName.Free;
- ScreenSong.Free;
- ScreenScore.Free;
- ScreenOptions.Free;
- ScreenOptionsGame.Free;
- ScreenOptionsGraphics.Free;
- ScreenOptionsSound.Free;
- ScreenOptionsLyrics.Free;
- ScreenOptionsThemes.Free;
- ScreenOptionsRecord.Free;
- ScreenOptionsAdvanced.Free;
- ScreenOptionsNetwork.Free;
- ScreenOptionsWebcam.Free;
- ScreenOptionsJukebox.Free;
- ScreenJukebox.Free;
- ScreenJukeboxOptions.Free;
- ScreenJukeboxPlaylist.Free;
- ScreenTop5.Free;
- ScreenOpen.Free;
- ScreenAbout.Free;
- ScreenDevelopers.Free;
- ScreenSongMenu.Free;
- ScreenSongJumpto.Free;
- ScreenPopupCheck.Free;
- ScreenPopupError.Free;
- ScreenPopupInfo.Free;
- ScreenPopupInsertUser.Free;
- ScreenPopupSendScore.Free;
- ScreenPopupScoreDownload.Free;
- ScreenPartyNewRound.Free;
- ScreenPartyScore.Free;
- ScreenPartyWin.Free;
- ScreenPartyOptions.Free;
- ScreenPartyPlayer.Free;
- ScreenPartyRounds.Free;
- ScreenPartyTournamentRounds.Free;
- ScreenPartyTournamentPlayer.Free;
- ScreenPartyTournamentOptions.Free;
- ScreenPartyTournamentWin.Free;
- ScreenStatMain.Free;
- ScreenStatDetail.Free;
+ FreeAndNil(ScreenMain);
+ FreeAndNil(ScreenName);
+ FreeAndNil(ScreenSong);
+ FreeAndNil(ScreenScore);
+ FreeAndNil(ScreenOptions);
+ FreeAndNil(ScreenOptionsGame);
+ FreeAndNil(ScreenOptionsGraphics);
+ FreeAndNil(ScreenOptionsSound);
+ FreeAndNil(ScreenOptionsLyrics);
+ FreeAndNil(ScreenOptionsThemes);
+ FreeAndNil(ScreenOptionsMicrophones);
+ FreeAndNil(ScreenOptionsAdvanced);
+ FreeAndNil(ScreenOptionsNetwork);
+ FreeAndNil(ScreenOptionsWebcam);
+ FreeAndNil(ScreenOptionsJukebox);
+ FreeAndNil(ScreenJukebox);
+ FreeAndNil(ScreenJukeboxOptions);
+ FreeAndNil(ScreenJukeboxPlaylist);
+ FreeAndNil(ScreenTop5);
+ FreeAndNil(ScreenOpen);
+ FreeAndNil(ScreenAbout);
+ FreeAndNil(ScreenDevelopers);
+ FreeAndNil(ScreenSongMenu);
+ FreeAndNil(ScreenSongJumpto);
+ FreeAndNil(ScreenPopupCheck);
+ FreeAndNil(ScreenPopupError);
+ FreeAndNil(ScreenPopupInfo);
+ FreeAndNil(ScreenPopupInsertUser);
+ FreeAndNil(ScreenPopupSendScore);
+ FreeAndNil(ScreenPopupScoreDownload);
+ FreeAndNil(ScreenPartyNewRound);
+ FreeAndNil(ScreenPartyScore);
+ FreeAndNil(ScreenPartyWin);
+ FreeAndNil(ScreenPartyOptions);
+ FreeAndNil(ScreenPartyPlayer);
+ FreeAndNil(ScreenPartyRounds);
+ FreeAndNil(ScreenPartyTournamentRounds);
+ FreeAndNil(ScreenPartyTournamentPlayer);
+ FreeAndNil(ScreenPartyTournamentOptions);
+ FreeAndNil(ScreenPartyTournamentWin);
+ FreeAndNil(ScreenStatMain);
+ FreeAndNil(ScreenStatDetail);
end;
end.
diff --git a/src/base/UGraphicClasses.pas b/src/base/UGraphicClasses.pas
index a7cd577b..009170c0 100644
--- a/src/base/UGraphicClasses.pas
+++ b/src/base/UGraphicClasses.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -95,7 +95,8 @@ TEffectManager = class
PerfNoteArray : array of PerfectNotePositions;
FlareTex: TTexture;
-
+ Tex_Note_Star: TTexture;
+ Tex_Note_Perfect_Star: TTexture;
constructor Create;
destructor Destroy; override;
procedure Draw;
@@ -159,7 +160,7 @@ constructor TParticle.Create(cX, cY : real;
case cStarType of
GoldenNote:
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
W := 20;
H := 20;
SetLength(Scale,4);
@@ -185,7 +186,7 @@ constructor TParticle.Create(cX, cY : real;
end;
PerfectNote:
begin
- Tex := Tex_Note_Perfect_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Perfect_Star.TexNum;
W := 8;
H := 12;
SetLength(Col,1);
@@ -195,7 +196,7 @@ constructor TParticle.Create(cX, cY : real;
end;
NoteHitTwinkle:
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
Alpha := (Live/16); // linear fade-out
W := 15;
H := 15;
@@ -206,7 +207,7 @@ constructor TParticle.Create(cX, cY : real;
end;
PerfectLineTwinkle:
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
W := RandomRange(10,20);
H := W;
SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1);
@@ -227,7 +228,7 @@ constructor TParticle.Create(cX, cY : real;
end;
ColoredStar:
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
W := RandomRange(10,20);
H := W;
SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1);
@@ -243,7 +244,7 @@ constructor TParticle.Create(cX, cY : real;
end;
Flare:
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
W := 7;
H := 7;
SizeMod := (-cos((Frame+1)*5*2*pi/16)*0.5+1.1);
@@ -273,7 +274,7 @@ constructor TParticle.Create(cX, cY : real;
end;
else // just some random default values
begin
- Tex := Tex_Note_Star.TexNum;
+ Tex := GoldenRec.Tex_Note_Star.TexNum;
Alpha := 1;
W := 20;
H := 20;
@@ -356,7 +357,7 @@ procedure TParticle.Draw;
glBindTexture(GL_TEXTURE_2D, Tex);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
-
+
// this draws (multiple) texture(s) of our particle
for L := 0 to High(Col) do
begin
@@ -369,7 +370,7 @@ procedure TParticle.Draw;
glTexCoord2f((1/16) * Frame, 1); glVertex2f(X+W*Scale[L]*SizeMod, Y-H*Scale[L]*SizeMod);
glEnd;
end;
-
+
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, 0);
@@ -390,6 +391,8 @@ constructor TEffectManager.Create;
begin
TwinkleArray[c] := 0;
end;
+ Self.Tex_Note_Perfect_Star := Texture.LoadTexture('NotePerfectStar', TEXTURE_TYPE_TRANSPARENT, 0);
+ Self.Tex_Note_Star := Texture.LoadTexture('NoteStar', TEXTURE_TYPE_TRANSPARENT, $FFFFFF);
end;
destructor TEffectManager.Destroy;
@@ -779,4 +782,3 @@ procedure TEffectManager.SpawnPerfectLineTwinkle();
end;
end.
-
diff --git a/src/base/UImage.pas b/src/base/UImage.pas
index aa439c3e..b525c8b0 100644
--- a/src/base/UImage.pas
+++ b/src/base/UImage.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -534,25 +534,12 @@ function WriteJPGImage(const FileName: IPath; Surface: PSDL_Surface; Quality: in
* Loads an image from the given file
*)
function LoadImage(const Filename: IPath): PSDL_Surface;
-var
- FilenameCaseAdj: IPath;
begin
- Result := nil;
-
- // try to adjust filename's case and check if it exists
- FilenameCaseAdj := Filename.AdjustCase(false);
- if (not FilenameCaseAdj.IsFile) then
- begin
- Log.LogError('Image-File does not exist "' + FilenameCaseAdj.ToNative + '"', 'LoadImage');
- Exit;
- end;
-
- // load from file
try
- Result := IMG_Load(PChar(FilenameCaseAdj.ToUTF8())); //SDL2 uses wants UTF-8 strings according to doocumentation
+ Result := IMG_Load(PChar(Filename.ToUTF8())); //SDL2 uses wants UTF-8 strings according to doocumentation
// Note: TBinaryFileStream is freed by SDLStream. SDLStream by IMG_Load_RW().
except
- Log.LogError('Could not load from file "' + FilenameCaseAdj.ToNative + '"', 'LoadImage');
+ Log.LogError('Could not load from file "' + Filename.ToNative() + '"', 'LoadImage');
Exit;
end;
end;
@@ -563,7 +550,7 @@ function LoadImage(const Filename: IPath): PSDL_Surface;
function PixelFormatEquals(fmt1, fmt2: PSDL_PixelFormat): boolean;
begin
- Result :=
+ Result :=
(fmt1^.BitsPerPixel = fmt2^.BitsPerPixel) and
(fmt1^.BytesPerPixel = fmt2^.BytesPerPixel) and
(fmt1^.Rloss = fmt2^.Rloss) and (fmt1^.Gloss = fmt2^.Gloss) and (fmt1^.Bloss = fmt2^.Bloss) and
@@ -618,8 +605,8 @@ procedure ColorizeImage(ImgSurface: PSDL_Surface; NewColor: longword);
// hsv color is converted back to rgb space.
// For the conversion algorithms of colors from rgb to hsv space
// and back simply check the wikipedia.
- // In order to speed up starting time of USDX the division of reals is
- // replaced by division of longints, shifted by 10 bits to keep
+ // In order to speed up starting time of USDX the division of reals is
+ // replaced by division of longints, shifted by 10 bits to keep
// digits.
// The use of longwards leeds to some type size mismatch warnings
@@ -699,14 +686,14 @@ procedure ColorizeImage(ImgSurface: PSDL_Surface; NewColor: longword);
+ IntToStr(ImgSurface^.format.BytesPerPixel));
end;
- // Check whether the new color is white, grey or black,
+ // Check whether the new color is white, grey or black,
// because a greyscale must be created in a different
// way.
Red := ((NewColor and $ff0000) shr 16); // R
Green := ((NewColor and $ff00) shr 8); // G
Blue := (NewColor and $ff) ; // B
-
+
if (Red = Green) and (Green = Blue) then // greyscale image
begin
// According to these recommendations (ITU-R BT.709-5)
diff --git a/src/base/UIni.pas b/src/base/UIni.pas
index 29a68bd3..2774a501 100644
--- a/src/base/UIni.pas
+++ b/src/base/UIni.pas
@@ -73,9 +73,9 @@ TInputDeviceConfig = record
LATENCY_AUTODETECT = -1; // for field Latency
DEFAULT_RESOLUTION = '800x600';
DEFAULT_THEME = 'Fantasy';
- IMaxPlayerCount = 12;
- IPlayers: array[0..6] of UTF8String = ('1', '2', '3', '4', '6', '8', '12');
- IPlayersVals: array[0..6] of integer = ( 1 , 2 , 3 , 4 , 6 , 8 , 12);
+ IMaxPlayerCount = 12; //TODO change to 6 and fix UScreenPlayerSelection RETURN key
+ IPlayers: array[0..4] of UTF8String = ('1', '2', '3', '4', '6');
+ IPlayersVals: array[0..4] of integer = (1, 2, 3, 4, 6);
type
@@ -128,7 +128,6 @@ TIni = class
Language: integer;
SongMenu: integer;
Tabs: integer;
- TabsAtStartup: integer; //Tabs at Startup fix
Sorting: integer;
ShowScores: integer;
ShowWebScore: integer;
@@ -435,7 +434,7 @@ TIni = class
IJukeboxTimebarMode: array[0..2] of UTF8String = ('Current', 'Remaining', 'Total');
// Recording options
- IChannelPlayer: array[0..12] of UTF8String = ('Off', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12');
+ IChannelPlayer: array[0..6] of UTF8String = ('Off', '1', '2', '3', '4', '5', '6');
IMicBoost: array[0..3] of UTF8String = ('Off', '+6dB', '+12dB', '+18dB');
// Webcam
@@ -466,7 +465,7 @@ TIni = class
// Network
ISendNameTranslated: array[0..1] of UTF8String = ('Off', 'On');
IAutoModeTranslated: array[0..2] of UTF8String = ('Off', 'Send', 'Guardar');
- IAutoPlayerTranslated: array[0..IMaxPlayerCount] of UTF8String = ('Player 1', 'Player 2', 'Player 3', 'Player 4', 'Player 5', 'Player 6', 'Player 7', 'Player 8', 'Player 9', 'Player 10', 'Player 11', 'Player 12', 'All');
+ IAutoPlayerTranslated: array[0..6] of UTF8String = ('Player 1', 'Player 2', 'Player 3', 'Player 4', 'Player 5', 'Player 6', 'All');
IAutoScoreEasyTranslated: array of UTF8String;
IAutoScoreMediumTranslated: array of UTF8String;
IAutoScoreHardTranslated: array of UTF8String;
@@ -583,11 +582,11 @@ procedure TIni.TranslateOptionValues;
IAutoModeTranslated[1] := ULanguage.Language.Translate('OPTION_VALUE_SEND');
IAutoModeTranslated[2] := ULanguage.Language.Translate('OPTION_VALUE_SAVE');
- for I:=0 to IMaxPlayerCount-1 do
- begin
+ //TODO change 6 with IMaxPlayerCount when change 12 value in this variable
+ for I:=0 to 6-1 do
IAutoPlayerTranslated[I] :=ULanguage.Language.Translate('OPTION_PLAYER_' + IntToStr(I));
- end;
- IAutoPlayerTranslated[12] := ULanguage.Language.Translate('OPTION_ALL_PLAYERS');
+
+ IAutoPlayerTranslated[6] := ULanguage.Language.Translate('OPTION_ALL_PLAYERS');
SetLength(IAutoScoreEasyTranslated, 10000);
SetLength(IAutoScoreMediumTranslated, 10000);
@@ -1069,7 +1068,6 @@ procedure TIni.Load();
// Tabs
Tabs := ReadArrayIndex(ITabs, IniFile, 'Game', 'Tabs', 0);
- TabsAtStartup := Tabs; //Tabs at Startup fix
// Song Sorting
Sorting := ReadArrayIndex(ISorting, IniFile, 'Game', 'Sorting', Ord(sTitle));
@@ -1143,10 +1141,10 @@ procedure TIni.Load();
AudioOutputBufferSizeIndex := ReadArrayIndex(IAudioOutputBufferSize, IniFile, 'Sound', 'AudioOutputBufferSize', 0);
//Preview Volume
- PreviewVolume := ReadArrayIndex(IPreviewVolume, IniFile, 'Sound', 'PreviewVolume', 7);
+ PreviewVolume := ReadArrayIndex(IPreviewVolume, IniFile, 'Sound', 'PreviewVolume', 6);
//Preview Fading
- PreviewFading := ReadArrayIndex(IPreviewFading, IniFile, 'Sound', 'PreviewFading', 3);
+ PreviewFading := ReadArrayIndex(IPreviewFading, IniFile, 'Sound', 'PreviewFading', 1);
//AudioRepeat aka VoicePassthrough
VoicePassthrough := ReadArrayIndex(IVoicePassthrough, IniFile, 'Sound', 'VoicePassthrough', 0);
diff --git a/src/base/UMain.pas b/src/base/UMain.pas
index 53ef4aad..ee0474d9 100644
--- a/src/base/UMain.pas
+++ b/src/base/UMain.pas
@@ -66,7 +66,6 @@ implementation
dglOpenGL,
UAvatars,
UCatCovers,
- UCovers,
UCommandLine,
UCommon,
UConfig,
@@ -142,77 +141,60 @@ procedure Main;
// without SDL_INIT_TIMER SDL_GetTicks() might return strange values
SDL_SetHint(SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING, '1');
SDL_Init(SDL_INIT_VIDEO or SDL_INIT_TIMER);
- //SDL_EnableUnicode(1); //not necessary in SDL2 any more
// create luacore first so other classes can register their events
LuaCore := TLuaCore.Create;
-
USTime := TTime.Create;
VideoBGTimer := TRelativeTimer.Create;
// Language
- Log.LogStatus('Initialize Paths', 'Initialization');
InitializePaths;
+ Log.BenchmarkStart(1);
Log.SetLogFileLevel(50);
- Log.LogStatus('Load Language', 'Initialization');
Language := TLanguage.Create;
-
- // add const values:
Language.AddConst('US_VERSION', USDXVersionStr);
// Skin
- Log.BenchmarkStart(1);
- Log.LogStatus('Loading Skin List', 'Initialization');
Skin := TSkin.Create;
-
- Log.LogStatus('Loading Theme List', 'Initialization');
Theme := TTheme.Create;
- Log.LogStatus('Website-Manager', 'Initialization');
+
DLLMan := TDLLMan.Create; // Load WebsiteList
- Log.LogStatus('DataBase System', 'Initialization');
DataBase := TDataBaseSystem.Create;
-
if (Params.ScoreFile.IsUnset) then
DataBase.Init(Platform.GetGameUserPath.Append('Ultrastar.db'))
else
DataBase.Init(Params.ScoreFile);
// Ini + Paths
- Log.LogStatus('Load Ini', 'Initialization');
- Ini := TIni.Create;
- Ini.Load;
+ UIni.Ini := TIni.Create();
+ UIni.Ini.Load();
+ UIni.Ini.Save(); // it is possible that this is the first run, create a .ini file if neccessary
//load and check songs and get covers and category covers
- UCovers.Covers := TCoverDatabase.Create;
UCatCovers.CatCovers := TCatCovers.Create;
USongs.CatSongs := TCatSongs.Create;
USongs.Songs := TSongs.Create; //in a new thread
- // it is possible that this is the first run, create a .ini file if neccessary
- Log.LogStatus('Write Ini', 'Initialization');
- Ini.Save;
+ // Theme
+ UThemes.Theme.LoadTheme(Ini.Theme, Ini.Color);
//avatars cache
- Avatars := TAvatarDatabase.Create;
+ UAvatars.Avatars := TAvatarDatabase.Create();
- // Theme
- Theme.LoadTheme(Ini.Theme, Ini.Color);
+ // Graphics
+ UGraphic.Initialize3D(WindowTitle);
UMusic.InitializeSound();
UMusic.InitializeVideo();
// Lyrics-engine with media reference timer
LyricsState := TLyricsState.Create();
- // Graphics
- Initialize3D(WindowTitle);
// Playlist Manager
- Log.LogStatus('Playlist Manager', 'Initialization');
PlaylistMan := TPlaylistManager.Create;
// GoldenStarsTwinkleMod
- Log.LogStatus('Effect Manager', 'Initialization');
GoldenRec := TEffectManager.Create;
// Joypad
@@ -248,20 +230,21 @@ procedure Main;
*}
SoundLib.StartBgMusic;
- // check microphone settings, goto record options if they are corrupt
+ // check microphone settings, goto Microphones options if they are corrupt
BadPlayer := AudioInputProcessor.ValidateSettings;
if (BadPlayer <> 0) then
begin
ScreenPopupError.ShowPopup(
Format(Language.Translate('ERROR_PLAYER_DEVICE_ASSIGNMENT'),
[BadPlayer]));
- Display.CurrentScreen^.FadeTo( @ScreenOptionsRecord );
+ Display.CurrentScreen^.FadeTo( @ScreenOptionsMicrophones );
end;
+ Log.LogBenchmark('Main load', 1);
+
//------------------------------
// Start Mainloop
//------------------------------
- Log.LogStatus('Main Loop', 'Initialization');
MainLoop;
{$IFNDEF Debug}
diff --git a/src/base/UMusic.pas b/src/base/UMusic.pas
index 9a3827ef..a62fb4d3 100644
--- a/src/base/UMusic.pas
+++ b/src/base/UMusic.pas
@@ -587,25 +587,14 @@ TAudioConverter = class
const
SOUNDID_START = 0;
SOUNDID_BACK = 1;
- SOUNDID_SWOOSH = 2;
- SOUNDID_CHANGE = 3;
- SOUNDID_OPTION = 4;
- SOUNDID_CLICK = 5;
+ SOUNDID_OPTION = 2;
LAST_SOUNDID = SOUNDID_CLICK;
BaseSoundFilenames: array[0..LAST_SOUNDID] of IPath = (
- '%SOUNDPATH%/Common start.mp3', // Start
- '%SOUNDPATH%/Common back.mp3', // Back
- '%SOUNDPATH%/menu swoosh.mp3', // Swoosh
- '%SOUNDPATH%/select music change music 50.mp3', // Change
- '%SOUNDPATH%/option change col.mp3', // Option
- '%SOUNDPATH%/rimshot022b.mp3' // Click
- {
- '%SOUNDPATH%/bassdrumhard076b.mp3', // Drum (unused)
- '%SOUNDPATH%/hihatclosed068b.mp3', // Hihat (unused)
- '%SOUNDPATH%/claps050b.mp3', // Clap (unused)
- '%SOUNDPATH%/Shuffle.mp3' // Shuffle (unused)
- }
+ '%SOUNDPATH%/forward sound.mp3', // Start
+ '%SOUNDPATH%/back sound.mp3', // Back
+ '%SOUNDPATH%/option sound col.mp3', // Option
+
);
*)
@@ -619,11 +608,7 @@ TSoundLibrary = class
// and provide IDs instead.
Start: TAudioPlaybackStream;
Back: TAudioPlaybackStream;
- Swoosh: TAudioPlaybackStream;
- Change: TAudioPlaybackStream;
Option: TAudioPlaybackStream;
- Click: TAudioPlaybackStream;
- Applause:TAudioPlaybackStream;
BGMusic: TAudioPlaybackStream;
constructor Create();
@@ -643,7 +628,6 @@ TSoundLibrary = class
var
// TODO: JB --- THESE SHOULD NOT BE GLOBAL
- Lines: array of TLines;
LyricsState: TLyricsState;
SoundLib: TSoundLibrary;
@@ -995,14 +979,9 @@ procedure TSoundLibrary.LoadSounds();
begin
UnloadSounds();
- Start := AudioPlayback.OpenSound(SoundPath.Append('Common start.mp3'));
- Back := AudioPlayback.OpenSound(SoundPath.Append('Common back.mp3'));
- Swoosh := AudioPlayback.OpenSound(SoundPath.Append('menu swoosh.mp3'));
- Change := AudioPlayback.OpenSound(SoundPath.Append('select music change music 50.mp3'));
- Option := AudioPlayback.OpenSound(SoundPath.Append('option change col.mp3'));
- Click := AudioPlayback.OpenSound(SoundPath.Append('rimshot022b.mp3'));
- Applause:= AudioPlayback.OpenSound(SoundPath.Append('Applause.mp3'));
-
+ Start := AudioPlayback.OpenSound(SoundPath.Append('forward sound.mp3'));
+ Back := AudioPlayback.OpenSound(SoundPath.Append('back sound.mp3'));
+ Option := AudioPlayback.OpenSound(SoundPath.Append('option sound.mp3'));
BGMusic := AudioPlayback.OpenSound(SoundPath.Append('background track.mp3'));
if (BGMusic <> nil) then
@@ -1013,11 +992,7 @@ procedure TSoundLibrary.UnloadSounds();
begin
FreeAndNil(Start);
FreeAndNil(Back);
- FreeAndNil(Swoosh);
- FreeAndNil(Change);
FreeAndNil(Option);
- FreeAndNil(Click);
- FreeAndNil(Applause);
FreeAndNil(BGMusic);
end;
diff --git a/src/base/UNote.pas b/src/base/UNote.pas
index cf468b8b..55c90c34 100644
--- a/src/base/UNote.pas
+++ b/src/base/UNote.pas
@@ -146,7 +146,6 @@ implementation
UCommandLine,
UCommon,
UConfig,
- UCovers,
UDataBase,
UGraphic,
UGraphicClasses,
@@ -203,23 +202,23 @@ procedure Sing(Screen: TScreenSingController);
PetGr := 1;
// sentences routines
- for CountGr := 0 to PetGr do //High(Lines)
+ for CountGr := 0 to PetGr do //High(CurrentSong.Lines)
begin;
CP := CountGr;
// old parts
- LyricsState.OldLine := Lines[CP].Current;
+ LyricsState.OldLine := CurrentSong.Lines[CP].Current;
// choose current parts
- for Count := 0 to Lines[CP].High do
+ for Count := 0 to CurrentSong.Lines[CP].High do
begin
- if LyricsState.CurrentBeat >= Lines[CP].Line[Count].Start then
- Lines[CP].Current := Count;
+ if LyricsState.CurrentBeat >= CurrentSong.Lines[CP].Line[Count].Start then
+ CurrentSong.Lines[CP].Current := Count;
end;
// clean player note if there is a new line
// (optimization on halfbeat time)
- if Lines[CP].Current <> LyricsState.OldLine then
+ if CurrentSong.Lines[CP].Current <> LyricsState.OldLine then
NewSentence(CP, Screen);
end; // for CountGr
@@ -242,22 +241,22 @@ procedure SingJukebox(Screen: TScreenJukebox);
LyricsState.UpdateBeats();
// sentences routines
- for CountGr := 0 to 0 do //High(Lines)
+ for CountGr := 0 to 0 do //High(CurrentSong.Lines)
begin;
CP := CountGr;
// old parts
- LyricsState.OldLine := Lines[CP].Current;
+ LyricsState.OldLine := CurrentSong.Lines[CP].Current;
// choose current parts
- for Count := 0 to Lines[CP].High do
+ for Count := 0 to CurrentSong.Lines[CP].High do
begin
- if LyricsState.CurrentBeat >= Lines[CP].Line[Count].Start then
- Lines[CP].Current := Count;
+ if LyricsState.CurrentBeat >= CurrentSong.Lines[CP].Line[Count].Start then
+ CurrentSong.Lines[CP].Current := Count;
end;
end; // for CountGr
// on sentence change...
- Screen.onSentenceChange(Lines[0].Current);
+ Screen.onSentenceChange(CurrentSong.Lines[0].Current);
end;
procedure NewSentence(CP: integer; Screen: TScreenSingController);
@@ -275,7 +274,7 @@ procedure NewSentence(CP: integer; Screen: TScreenSingController);
end;
end;
- Screen.onSentenceChange(CP, Lines[CP].Current)
+ Screen.onSentenceChange(CP, CurrentSong.Lines[CP].Current)
end;
procedure NewBeatClick;
@@ -287,17 +286,15 @@ procedure NewBeatClick;
begin
if (Ini.BeatClick = 1) and ((LyricsState.CurrentBeatC + 4) mod 4 = 0) then //FIXME after remove resolution and notesgap use 4 as default...
begin
- AudioPlayback.PlaySound(SoundLib.Click);
end;
- for Count := 0 to Lines[0].Line[Lines[0].Current].HighNote do
+ for Count := 0 to CurrentSong.Lines[0].Line[CurrentSong.Lines[0].Current].HighNote do
begin
//basisbit todo
- if (Lines[0].Line[Lines[0].Current].Note[Count].Start = LyricsState.CurrentBeatC) then
+ if (CurrentSong.Lines[0].Line[CurrentSong.Lines[0].Current].Note[Count].Start = LyricsState.CurrentBeatC) then
begin
// click assist
if Ini.ClickAssist = 1 then
- AudioPlayback.PlaySound(SoundLib.Click);
// drum machine
(*
@@ -340,9 +337,9 @@ procedure NewBeatDetect(Screen: TScreenSingController);
NewNote(CP, Screen);
- for I := 0 to Lines[CP].High do
+ for I := 0 to CurrentSong.Lines[CP].High do
begin
- with Lines[CP].Line[I] do
+ with CurrentSong.Lines[CP].Line[I] do
begin
if (HighNote >= 0) then
begin
@@ -384,14 +381,14 @@ procedure NewNote(CP: integer; Screen: TScreenSingController);
NoteHit := false;
// TODO: add duet mode support
- // use Lines[LineSetIndex] with LineSetIndex depending on the current player
+ // use CurrentSong.Lines[LineSetIndex] with LineSetIndex depending on the current player
// count min and max sentence range for checking
// (detection is delayed to the notes we see on the screen)
- SentenceMin := Lines[CP].Current-1;
+ SentenceMin := CurrentSong.Lines[CP].Current-1;
if (SentenceMin < 0) then
SentenceMin := 0;
- SentenceMax := Lines[CP].Current;
+ SentenceMax := CurrentSong.Lines[CP].Current;
for ActualBeat := LyricsState.OldBeatD+1 to LyricsState.CurrentBeatD do
begin
@@ -405,7 +402,7 @@ procedure NewNote(CP: integer; Screen: TScreenSingController);
SentenceDetected := SentenceMin;
for SentenceIndex := SentenceMin to SentenceMax do
begin
- Line := @Lines[CP].Line[SentenceIndex];
+ Line := @CurrentSong.Lines[CP].Line[SentenceIndex];
for LineFragmentIndex := 0 to Line.HighNote do
begin
CurrentLineFragment := @Line.Note[LineFragmentIndex];
@@ -447,7 +444,7 @@ procedure NewNote(CP: integer; Screen: TScreenSingController);
if (CurrentSound.ToneValid and NoteAvailable) then
begin
CurrentNoteType := ntNormal;
- Line := @Lines[CP].Line[SentenceDetected];
+ Line := @CurrentSong.Lines[CP].Line[SentenceDetected];
// process until last note
for LineFragmentIndex := 0 to Line.HighNote do
begin
@@ -497,7 +494,7 @@ procedure NewNote(CP: integer; Screen: TScreenSingController);
// gets for a hit of one beat of a normal note
// CurNotePoints is the amount of points that is meassured
// for a hit of the note per full beat
- CurNotePoints := (MaxSongPoints / Lines[CP].ScoreValue) * ScoreFactor[CurrentLineFragment.NoteType];
+ CurNotePoints := (MaxSongPoints / CurrentSong.Lines[CP].ScoreValue) * ScoreFactor[CurrentLineFragment.NoteType];
case CurrentLineFragment.NoteType of
ntNormal: CurrentPlayer.Score := CurrentPlayer.Score + CurNotePoints;
diff --git a/src/base/UPath.pas b/src/base/UPath.pas
index 211f7e25..80842d58 100644
--- a/src/base/UPath.pas
+++ b/src/base/UPath.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -41,7 +41,7 @@ interface
LazUTF8Classes,
{$ENDIF}
UConfig,
- UUnicodeStringHelper,
+ UUnicodeUtils,
SDL2;
type
@@ -78,7 +78,7 @@ TUnicodeMemIniFile = class(TMemIniFile)
procedure UpdateFile; override;
property UTF8Encoded: boolean READ FUTF8Encoded WRITE FUTF8Encoded;
end;
-
+
{**
* TBinaryFileStream (inherited from THandleStream)
*}
@@ -151,8 +151,8 @@ TUnicodeIniStream = class()
{**
* pdKeep: Keep path as is, neither remove or append a delimiter
- * pdAppend: Append a delimiter if path does not have a trailing one
- * pdRemove: Remove a trailing delimiter from the path
+ * pdAppend: Append a delimiter if path does not have a trailing one
+ * pdRemove: Remove a trailing delimiter from the path
*}
TPathDelimOption = (pdKeep, pdAppend, pdRemove);
@@ -274,7 +274,7 @@ TUnicodeIniStream = class()
{**
* Splits the path into its components. Path delimiters are not removed from
- * components.
+ * components.
* Example: C:\test\my\dir -> ['C:\', 'test\', 'my\', 'dir']
*}
function SplitDirs(): IPathDynArray;
@@ -558,9 +558,9 @@ TPathImpl = class(TInterfacedObject, IPath)
function Path(const PathName: RawByteString; DelimOption: TPathDelimOption): IPath;
begin
- if (IsUTF8StringH(PathName)) then
+ if (UUnicodeUtils.IsUTF8String(PathName)) then
Result := TPathImpl.Create(PathName, DelimOption)
- else if (IsNativeUTF8H()) then
+ else if (UUnicodeUtils.IsNativeUTF8()) then
Result := PATH_NONE
else
Result := TPathImpl.Create(AnsiToUtf8(PathName), DelimOption);
@@ -619,7 +619,7 @@ procedure TPathImpl.Unify(DelimOption: TPathDelimOption);
fName[I] := PathDelim;
end;
- // Include/ExcludeTrailingPathDelimiter need PathDelim as path delimiter
+ // Include/ExcludeTrailingPathDelimiter need PathDelim as path delimiter
case DelimOption of
pdAppend: fName := IncludeTrailingPathDelimiter(fName);
pdRemove: fName := ExcludeTrailingPathDelimiter(fName);
@@ -661,7 +661,7 @@ function TPathImpl.ToWide(UseNativeDelim: boolean): WideString;
function TPathImpl.ToNative(): RawByteString;
begin
- if (IsNativeUTF8H()) then
+ if (UUnicodeUtils.IsNativeUTF8()) then
Result := fName
else //basisbit hackyhack
Result := Utf8ToAnsi(fName);
diff --git a/src/base/USingScores.pas b/src/base/USingScores.pas
index add41e3b..955d5cbf 100644
--- a/src/base/USingScores.pas
+++ b/src/base/USingScores.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -142,6 +142,14 @@ TSingScores = class
// current and previous call of draw
TimePassed: Cardinal;
+ //Sing Bar Mod
+ Tex_SingBar_Back: TTexture;
+ Tex_SingBar_Bar: TTexture;
+ Tex_SingBar_Front: TTexture;
+
+ //PhrasenBonus - Line Bonus Mod
+ Tex_SingLineBonusBack: array[0..8] of TTexture;
+
// draws a popup by pointer
procedure DrawPopUp(const PopUp: PScorePopUp);
@@ -234,18 +242,22 @@ TSingScores = class
implementation
uses
- SysUtils,
Math,
sdl2,
+ SysUtils,
TextGL,
+ UGraphic,
ULog,
UNote,
- UGraphic;
+ USkins;
{**
* sets some standard settings
*}
constructor TSingScores.Create;
+var
+ I: integer;
+ R, G: real;
begin
inherited;
@@ -257,7 +269,7 @@ constructor TSingScores.Create;
Visible := true;
Enabled := true;
RBVisible := true;
-
+
// clear position index
oPositionCount := 0;
oPlayerCount := 0;
@@ -279,6 +291,44 @@ constructor TSingScores.Create;
Settings.RatingBar_BG_Tex.TexNum := 0;
Settings.RatingBar_FG_Tex.TexNum := 0;
Settings.RatingBar_Bar_Tex.TexNum := 0;
+
+ //SingBar Mod
+ Self.Tex_SingBar_Back := UTexture.Texture.LoadTexture('SingBarBack');
+ Self.Tex_SingBar_Bar := UTexture.Texture.LoadTexture('SingBarBar');
+ Self.Tex_SingBar_Front := UTexture.Texture.LoadTexture('SingBarFront');
+
+ //line Bonus PopUp
+ for I := 0 to 8 do
+ begin
+ case I of
+ 1..3:
+ begin
+ R := 1;
+ G := I * 0.25;
+ end;
+ 4:
+ begin
+ R := 1;
+ G := 1;
+ end;
+ 5..7:
+ begin
+ R := 1 - ((I - 4) * 0.25);
+ G := 1;
+ end;
+ 8:
+ begin
+ R := 0;
+ G := 1;
+ end;
+ else
+ begin
+ R := 1;
+ G := 0;
+ end;
+ end;
+ Self.Tex_SingLineBonusBack[I] := UTexture.Texture.LoadTexture('LineBonusBack', TEXTURE_TYPE_COLORIZED, $10000 * Round(R * 255) + $100 * Round(G * 255));
+ end;
end;
{**
@@ -570,7 +620,7 @@ function TSingScores.GetPopUpPoints(const Index: integer): integer;
CurPopUp: PScorePopUp;
begin
Result := 0;
-
+
CurPopUp := FirstPopUp;
while (CurPopUp <> nil) do
begin
diff --git a/src/base/USong.pas b/src/base/USong.pas
index 28362864..99a272ca 100644
--- a/src/base/USong.pas
+++ b/src/base/USong.pas
@@ -49,11 +49,11 @@ interface
UCommon,
UFilesystem,
ULog,
+ UMusic, //needed for TLines
UPath,
UPlatform,
UTexture,
UTextEncoding,
- UUnicodeStringHelper,
UUnicodeUtils;
type
@@ -150,6 +150,7 @@ TSong = class
CatNumber: integer; // Count of Songs in Category for Cats and Number of Song in Category for Songs
LastError: AnsiString;
+ Lines: array of TLines;
function GetErrorLineNo: integer;
property ErrorLineNo: integer read GetErrorLineNo;
@@ -186,7 +187,6 @@ implementation
UIni,
UPathUtils,
USongs,
- UMusic, //needed for Lines
UNote; //needed for Player
const
@@ -1084,9 +1084,12 @@ function TSong.Analyse(DuetChange: boolean): boolean;
try
Result := Self.ReadTxTHeader() and Self.LoadSong(DuetChange);
- UNote.CurrentSong := Self;
- if (not Self.isDuet) and (Self.Medley.Source = msNone) then //TODO needed a little bit more work to find refrains in duets
- Self.FindRefrain();
+ if Result then
+ begin
+ UNote.CurrentSong := Self;
+ if (not Self.isDuet) and (Self.Medley.Source = msNone) then //TODO needed a little bit more work to find refrains in duets
+ Self.FindRefrain();
+ end;
except
Log.LogError('Reading headers from file failed. File incomplete or not Ultrastar txt?: ' + Self.Path.Append(Self.FileName).ToUTF8(true));
end;
diff --git a/src/base/USongs.pas b/src/base/USongs.pas
index 7dcfbad0..34eb07ae 100644
--- a/src/base/USongs.pas
+++ b/src/base/USongs.pas
@@ -24,9 +24,7 @@
interface
-{$IFDEF FPC}
- {$MODE OBJFPC}
-{$ENDIF}
+{$MODE OBJFPC}
{$I switches.inc}
@@ -44,7 +42,7 @@ interface
{$ENDIF}
UnixType,
{$ENDIF}
- MTProcs,
+ CpuCount,
SysUtils,
UCatCovers,
UCommon,
@@ -69,20 +67,46 @@ TScore = record
Length: string;
end;
+ TProgressSong = record
+ Folder: UTF8String;
+ Total: integer;
+ Finished: boolean;
+ end;
+
+ TSongsParse = class(TThread)
+ private
+ Event: PRTLEvent; //event to fire parsing songs
+ Txt: integer; //number of txts parsed
+ Txts: TThreadList; //list to store all parsed songs as TSong object
+ protected
+ procedure Execute; override;
+ public
+ constructor Create();
+ destructor Destroy(); override;
+ procedure AddSong(const TxtFile: IPath);
+ end;
+
TSongs = class(TThread)
- private
- protected
- procedure Execute; override;
- public
- LoadingSongs: boolean;
- SongList: TList; //array of songs
- Selected: integer; //selected song index
- constructor Create();
- destructor Destroy(); override;
- procedure Sort(OrderType: TSortingType);
+ private
+ ProgressSong: TProgressSong;
+ Threads: array of TSongsParse; //threads to parse songs
+ Thread: integer; //current thread
+ procedure FindTxts(const Dir: IPath);
+ protected
+ procedure Execute; override;
+ public
+ SongList: TList; //array of songs
+ Selected: integer; //selected song index
+ constructor Create();
+ destructor Destroy(); override;
+ function GetLoadProgress(): TProgressSong;
+ procedure Sort(OrderType: TSortingType);
end;
TCatSongs = class
+ private
+ VisibleSongs: integer;
+ public
Song: array of TSong; // array of categories with songs
SongSort: array of TSong;
@@ -99,15 +123,16 @@ TCatSongs = class
procedure ShowCategoryList; // Hides all Songs And Show the List of all Categorys
function FindNextVisible(SearchFrom: integer): integer; // Find Next visible Song
function FindPreviousVisible(SearchFrom: integer): integer; // Find Previous visible Song
- function VisibleSongs: integer; // returns number of visible songs (for tabs)
+ function GetVisibleSongs(): integer; //returns number of visible songs
+ procedure SetVisibleSongs(); //sets number of visible songs
function VisibleIndex(Index: integer): integer; // returns visible song index (skips invisible)
function SetFilter(FilterStr: UTF8String; Filter: TSongFilter): cardinal;
end;
var
- Songs: TSongs; // all songs
- CatSongs: TCatSongs; // categorized songs
+ Songs: TSongs; //all songs
+ CatSongs: TCatSongs; //categorized songs
const
IN_ACCESS = $00000001; //* File was accessed */
@@ -127,8 +152,8 @@ implementation
uses
FileUtil,
+ Math,
StrUtils,
- UCovers,
UFiles,
UFilesystem,
UGraphic,
@@ -138,60 +163,129 @@ implementation
UPathUtils,
UUnicodeUtils;
+constructor TSongsParse.Create();
+begin
+ inherited Create(false);
+ Self.FreeOnTerminate := true;
+ Self.Txts := TThreadList.Create();
+ Self.Txt := 0;
+ Self.Event := RTLEventCreate();
+end;
+
+destructor TSongsParse.Destroy();
+begin
+ RTLeventDestroy(Self.Event);
+ Self.Txts.Destroy();
+ inherited;
+end;
+
+procedure TSongsParse.Execute();
+var
+ Song: TSong;
+ List: TList;
+ I: integer;
+begin
+ while not Self.Terminated do
+ begin
+ RtlEventWaitFor(Self.Event);
+ List := Self.Txts.LockList();
+ try
+ for I := Self.Txt to List.Count - 1 do //start to parse from the last position
+ begin
+ Song := TSong(List.Items[I]);
+ if Song.Analyse() then
+ Inc(Self.Txt)
+ else
+ Self.Txts.Remove(Song);
+ end;
+ finally
+ Self.Txts.UnlockList();
+ end;
+ end;
+end;
+
+procedure TSongsParse.AddSong(const TxtFile: IPath);
+begin
+ Self.Txts.Add(TSong.Create(TxtFile));
+ RtlEventSetEvent(Self.Event);
+end;
+
constructor TSongs.Create();
+var
+ I: integer;
begin
inherited Create(false);
Self.FreeOnTerminate := false;
Self.SongList := TList.Create();
+ Self.Thread := 0;
+ Setlength(Self.Threads, Max(1, CpuCount.GetLogicalCpuCount() - 2)); //total - main and songs threads
+ for I := 0 to High(Self.Threads) do
+ Self.Threads[I] := TSongsParse.Create();
end;
destructor TSongs.Destroy();
+var
+ I: integer;
begin
- // FreeAndNil(Self.SongList);
+ for I := 0 to High(Self.Threads) do
+ Self.Threads[I].Terminate();
inherited;
end;
+{ Search for all files and directories }
+procedure TSongs.FindTxts(const Dir: IPath);
+var
+ Iter: IFileIterator;
+ FileInfo: TFileInfo;
+begin
+ Iter := FileSystem.FileFind(Dir.Append('*'), faAnyFile);
+ while Iter.HasNext do //content of current folder
+ begin
+ FileInfo := Iter.Next; //get file info
+ if ((FileInfo.Attr and faDirectory) <> 0) and (not (FileInfo.Name.ToUTF8()[1] = '.')) then //if is a directory try to find more
+ Self.FindTxts(Dir.Append(FileInfo.Name))
+ else if FileInfo.Name.GetExtension().ToNative() = '.txt' then //if is a txt file send to a thread to parse it
+ begin
+ Inc(Self.ProgressSong.Total);
+ Self.Threads[Self.Thread].AddSong(Dir.Append(FileInfo.Name));
+ if Self.Thread = High(Self.Threads) then //each txt to one thread
+ Self.Thread := 0
+ else
+ Inc(Self.Thread)
+ end
+ end;
+end;
+
{ Create a new thread to load songs and update main screen with progress }
procedure TSongs.Execute();
var
- I, J, Total : integer;
- Txts: TStringList;
+ I: integer;
Song: TSong;
- Folder: string;
begin
- LoadingSongs := true;
+ Log.BenchmarkStart(2);
Log.LogStatus('Searching For Songs', 'SongList');
- //find txt files on directories and add songs
- for I := 0 to UPathUtils.SongPaths.Count-1 do
+ Self.ProgressSong.Total := 0;
+ Self.ProgressSong.Finished := false;
+ for I := 0 to UPathUtils.SongPaths.Count - 1 do //find txt files on directories and add songs
begin
- Folder := IPath(UPathUtils.SongPaths[I]).ToNative();
- if Assigned(UGraphic.ScreenMain) then
- UGraphic.ScreenMain.SetLoadProgress(Format(ULanguage.Language.Translate('SING_LOADING_CHECK_FOLDER'), [Folder]));
-
- Txts := FileUtil.FindAllFiles(Folder, '*.txt', true);
- Total := Txts.Count;
- for J := 0 to Total-1 do
- begin
- Song := TSong.Create(Path(Txts.Strings[J]));
- if Song.Analyse() then
- Self.SongList.Add(Song);
-
- if Assigned(UGraphic.ScreenMain) then
- UGraphic.ScreenMain.SetLoadProgress(IntToStr(J)+'/'+IntToStr(Total)+' ('+IntToStr(Trunc((J*100)/Total))+'%)');
- end;
+ Self.ProgressSong.Folder := Format(ULanguage.Language.Translate('SING_LOADING_SONGS'), [IPath(UPathUtils.SongPaths[I]).ToNative()]);
+ Self.FindTxts(IPath(UPathUtils.SongPaths[I]));
end;
+ for I := 0 to High(Self.Threads) do //add all songs parsed to main list
+ Self.SongList.AddList(Self.Threads[I].Txts.LockList());
+
Log.LogStatus('Search Complete', 'SongList');
CatSongs.Refresh;
-
- //wait to generate thumbnails and show message
- while not Terminated and not Assigned(UGraphic.ScreenSong) do;
- UGraphic.ScreenSong.GenerateThumbnails();
- UGraphic.ScreenMain.SetLoadProgress(ULanguage.Language.Translate('SING_LOADING_FINISH'));
-
- Self.LoadingSongs := false;
+ Self.ProgressSong.Folder := '';
+ Self.ProgressSong.Finished := true;
+ Log.LogBenchmark('Song loading', 2);
end;
+function TSongs.GetLoadProgress(): TProgressSong;
+begin
+ Result := Self.ProgressSong;
+end;
(*
* Comparison functions for sorting
*)
@@ -527,27 +621,11 @@ procedure TCatSongs.Refresh;
// set song's category info
CurSong.OrderNum := OrderNum; // assigns category
CurSong.CatNumber := CatNumber;
-
- if (Ini.Tabs = 0) then
- begin
- CurSong.Visible := true;
- end
- else if (Ini.Tabs = 1) then
- begin
- CurSong.Visible := false;
- end;
-{
- if (Ini.Tabs = 1) and (Order = 1) then
- begin
- //open first tab
- CurSong.Visible := true;
- end;
- CurSong.Visible := true;
-}
+ CurSong.Visible := UIni.Ini.Tabs = 0;
end;
// set CatNumber of last category
- if (Ini.TabsAtStartup = 1) and (High(Song) >= 1) then
+ if (UIni.Ini.Tabs = 1) and (High(Song) >= 1) then
begin
// set number of songs in previous category
SongIndex := CatIndex - CatNumber;
@@ -561,30 +639,34 @@ procedure TCatSongs.Refresh;
procedure TCatSongs.ShowCategory(Index: integer);
var
- S: integer; // song
+ I: integer;
begin
+ Self.VisibleSongs := 0;
CatNumShow := Index;
- for S := 0 to high(CatSongs.Song) do
+ for I := 0 to high(CatSongs.Song) do
begin
-{
- if (CatSongs.Song[S].OrderNum = Index) and (not CatSongs.Song[S].Main) then
- CatSongs.Song[S].Visible := true
+ if (CatSongs.Song[I].OrderNum = Index) and (not CatSongs.Song[I].Main) then
+ begin
+ CatSongs.Song[I].Visible := true;
+ Inc(Self.VisibleSongs);
+ end
else
- CatSongs.Song[S].Visible := false;
-}
-// KMS: This should be the same, but who knows :-)
- CatSongs.Song[S].Visible := ((CatSongs.Song[S].OrderNum = Index) and (not CatSongs.Song[S].Main));
+ CatSongs.Song[I].Visible := false;
end;
end;
-procedure TCatSongs.HideCategory(Index: integer); // hides all songs in category
+{hides all songs in category}
+procedure TCatSongs.HideCategory(Index: integer);
var
- S: integer; // song
+ I: integer;
begin
- for S := 0 to high(CatSongs.Song) do
+ Self.VisibleSongs := 0;
+ for I := 0 to high(CatSongs.Song) do
begin
- if not CatSongs.Song[S].Main then
- CatSongs.Song[S].Visible := false // hides all at now
+ if not CatSongs.Song[I].Main then
+ CatSongs.Song[I].Visible := false // hides all at now
+ else
+ Inc(Self.VisibleSongs);
end;
end;
@@ -604,17 +686,20 @@ procedure TCatSongs.ClickCategoryButton(Index: integer);
end;
//Hide Categorys when in Category Hack
-procedure TCatSongs.ShowCategoryList;
+procedure TCatSongs.ShowCategoryList();
var
- S: integer;
+ I: integer;
begin
- // Hide All Songs Show All Cats
- for S := 0 to high(CatSongs.Song) do
- CatSongs.Song[S].Visible := CatSongs.Song[S].Main;
+ Self.VisibleSongs := 0;
+ for I := 0 to high(CatSongs.Song) do //hide all songs and show all cats
+ begin
+ CatSongs.Song[I].Visible := CatSongs.Song[I].Main;
+ if CatSongs.Song[I].Visible then
+ Inc(Self.VisibleSongs);
+ end;
CatSongs.Selected := CatNumShow; //Show last shown Category
CatNumShow := -1;
end;
-//Hide Categorys when in Category Hack End
// Wrong song selected when tabs on bug
function TCatSongs.FindNextVisible(SearchFrom:integer): integer;// Find next Visible Song
@@ -659,23 +744,22 @@ function TCatSongs.FindPreviousVisible(SearchFrom:integer): integer;// Find prev
end;
end;
-// Wrong song selected when tabs on bug End
-
-(**
- * Returns the number of visible songs.
- *)
-function TCatSongs.VisibleSongs: integer;
+procedure TCatSongs.SetVisibleSongs();
var
- SongIndex: integer;
+ I: integer;
begin
- Result := 0;
- for SongIndex := 0 to High(CatSongs.Song) do
- begin
- if (CatSongs.Song[SongIndex].Visible) then
- Inc(Result);
- end;
+ Self.VisibleSongs := 0;
+ for I := 0 to High(CatSongs.Song) do
+ if (CatSongs.Song[I].Visible) then
+ Inc(Self.VisibleSongs);
end;
+function TCatSongs.GetVisibleSongs(): integer;
+begin
+ Result := Self.VisibleSongs;
+end;
+
+
(**
* Returns the index of a song in the subset of all visible songs.
* If all songs are visible, the result will be equal to the Index parameter.
@@ -698,14 +782,11 @@ function TCatSongs.SetFilter(FilterStr: UTF8String; Filter: TSongFilter): cardin
TmpString: UTF8String;
WordArray: array of UTF8String;
begin
-
- FilterStr := Trim(LowerCase(FilterStr));
- FilterStr := GetStringWithNoAccents(FilterStr);
-
- if (FilterStr <> '') then
+ Self.VisibleSongs := 0;
+ Result := 0;
+ FilterStr := UCommon.GetStringWithNoAccents(Trim(LowerCase(FilterStr)));
+ if FilterStr <> '' then
begin
- Result := 0;
-
// initialize word array
SetLength(WordArray, 1);
@@ -739,8 +820,7 @@ function TCatSongs.SetFilter(FilterStr: UTF8String; Filter: TSongFilter): cardin
// Look for every searched word
for J := 0 to High(WordArray) do
begin
- Song[i].Visible := Song[i].Visible and
- UTF8ContainsStr(TmpString, WordArray[J])
+ Song[i].Visible := Song[i].Visible and UTF8ContainsStr(TmpString, WordArray[J])
end;
if Song[i].Visible then
Inc(Result);
@@ -752,13 +832,15 @@ function TCatSongs.SetFilter(FilterStr: UTF8String; Filter: TSongFilter): cardin
end
else
begin
- for i := 0 to High(Song) do
+ for I := 0 to High(Song) do
begin
- Song[i].Visible := (Ini.Tabs = 1) = Song[i].Main;
- CatNumShow := -1;
+ Song[I].Visible := (UIni.Ini.Tabs = 1) = Song[I].Main;
+ if Song[I].Visible then
+ Inc(Result);
end;
- Result := 0;
+ CatNumShow := -1;
end;
+ Self.VisibleSongs := Result;
end;
// -----------------------------------------------------------------------------
diff --git a/src/base/UTexture.pas b/src/base/UTexture.pas
index 09841f04..a0aac3c0 100644
--- a/src/base/UTexture.pas
+++ b/src/base/UTexture.pas
@@ -116,8 +116,8 @@ TTextureUnit = class
procedure AddTexture(var Tex: TTexture; Typ: TTextureType; Color: cardinal; Cache: boolean = false); overload;
function GetTexture(const Name: IPath; Typ: TTextureType; FromCache: boolean = false): TTexture; overload;
function GetTexture(const Name: IPath; Typ: TTextureType; Col: LongWord; FromCache: boolean = false): TTexture; overload;
- function LoadTexture(const Identifier: IPath; Typ: TTextureType; Col: LongWord): TTexture; overload;
- function LoadTexture(const Identifier: IPath): TTexture; overload;
+ function LoadTexture(const Identifier: UTF8String; Typ: TTextureType = TEXTURE_TYPE_PLAIN; Col: LongWord = 0): TTexture; overload;
+ function LoadTexture(const Identifier: IPath; Typ: TTextureType = TEXTURE_TYPE_PLAIN; Col: LongWord = 0): TTexture; overload;
function CreateTexture(Data: PChar; const Name: IPath; Width, Height: word; BitsPerPixel: byte): TTexture;
procedure UnloadTexture(const Name: IPath; Typ: TTextureType; FromCache: boolean); overload;
procedure UnloadTexture(const Name: IPath; Typ: TTextureType; Col: cardinal; FromCache: boolean); overload;
@@ -134,32 +134,20 @@ implementation
uses
DateUtils,
- StrUtils,
Math,
+ StrUtils,
+ UImage,
ULog,
- UCovers,
- UThemes,
- UImage;
+ USkins,
+ UThemes;
procedure AdjustPixelFormat(var TexSurface: PSDL_Surface; Typ: TTextureType);
var
- TempSurface: PSDL_Surface;
NeededPixFmt: UInt32;
begin
- if (Typ = TEXTURE_TYPE_PLAIN) then
- NeededPixFmt := SDL_PIXELFORMAT_RGB24
- else if (Typ = TEXTURE_TYPE_TRANSPARENT) or
- (Typ = TEXTURE_TYPE_COLORIZED) then
- NeededPixFmt := SDL_PIXELFORMAT_ABGR8888
- else
- NeededPixFmt := SDL_PIXELFORMAT_RGB24;
-
+ NeededPixFmt := IfThen((Typ = TEXTURE_TYPE_TRANSPARENT) or (Typ = TEXTURE_TYPE_COLORIZED), SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_RGB24);
if not (TexSurface^.format.format = NeededPixFmt) then
- begin
- TempSurface := TexSurface;
- TexSurface := SDL_ConvertSurfaceFormat(TempSurface, NeededPixFmt, 0);
- SDL_FreeSurface(TempSurface);
- end;
+ TexSurface := SDL_ConvertSurfaceFormat(TexSurface, NeededPixFmt, 0);
end;
{ TTextureDatabase }
@@ -237,9 +225,9 @@ procedure TTextureUnit.AddTexture(var Tex: TTexture; Typ: TTextureType; Color: c
TextureDatabase.AddTexture(Tex, Typ, Color, Cache);
end;
-function TTextureUnit.LoadTexture(const Identifier: IPath): TTexture;
+function TTextureUnit.LoadTexture(const Identifier: UTF8String; Typ: TTextureType; Col: LongWord): TTexture;
begin
- Result := LoadTexture(Identifier, TEXTURE_TYPE_PLAIN, 0);
+ Result := Self.LoadTexture(USkins.Skin.GetTextureFileName(Identifier), Typ, Col);
end;
function TTextureUnit.LoadTexture(const Identifier: IPath; Typ: TTextureType; Col: LongWord): TTexture;
@@ -306,31 +294,22 @@ function TTextureUnit.LoadTexture(const Identifier: IPath; Typ: TTextureType; Co
// prepare OpenGL texture
glGenTextures(1, @ActTex);
-
glBindTexture(GL_TEXTURE_2D, ActTex);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- // load data into gl texture
- if (Typ = TEXTURE_TYPE_TRANSPARENT) or
- (Typ = TEXTURE_TYPE_COLORIZED) then
- begin
- {$IFDEF FPC_BIG_ENDIAN}
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, newWidth, newHeight, 0, GL_RGBA, GL_UNSIGNED_INT_8_8_8_8_REV, TexSurface.pixels);
- {$ELSE}
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, newWidth, newHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, TexSurface.pixels);
- {$ENDIF}
- end
- else //if Typ = TEXTURE_TYPE_PLAIN then
- begin
- {$IFDEF FPC_BIG_ENDIAN}
- glTexImage2D(GL_TEXTURE_2D, 0, 3, newWidth, newHeight, 0, GL_BGR, GL_UNSIGNED_BYTE, TexSurface.pixels);
- {$ELSE}
- glTexImage2D(GL_TEXTURE_2D, 0, 3, newWidth, newHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, TexSurface.pixels);
- {$ENDIF}
- end;
+ glTexImage2D( //load data into gl texture
+ GL_TEXTURE_2D,
+ 0,
+ IfThen((Typ = TEXTURE_TYPE_TRANSPARENT) or (Typ = TEXTURE_TYPE_COLORIZED), GL_RGBA, 3), //idk why 3, maybe is a constant...
+ newWidth,
+ newHeight,
+ 0,
+ IfThen((Typ = TEXTURE_TYPE_TRANSPARENT) or (Typ = TEXTURE_TYPE_COLORIZED), GL_RGBA, GL_RGB),
+ GL_UNSIGNED_BYTE,
+ TexSurface.pixels
+ );
// setup texture struct
with Result do
@@ -428,12 +407,7 @@ function TTextureUnit.CreateTexture(Data: PChar; const Name: IPath; Width, Heigh
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- {$IFDEF FPC_BIG_ENDIAN}
- glTexImage2D(GL_TEXTURE_2D, 0, 3, Width, Height, 0, GL_BGR, GL_UNSIGNED_BYTE, Data);
- {$ELSE}
glTexImage2D(GL_TEXTURE_2D, 0, 3, Width, Height, 0, GL_RGB, GL_UNSIGNED_BYTE, Data);
- {$ENDIF}
{
if Mipmapping then
diff --git a/src/base/UThemes.pas b/src/base/UThemes.pas
index c1bb2beb..607efec7 100644
--- a/src/base/UThemes.pas
+++ b/src/base/UThemes.pas
@@ -56,7 +56,7 @@ TThemeBackground = record
end;
const
- //Defaul Background for Screens w/o Theme e.g. editor
+ //Defaul Background for Screens w/o Theme
DEFAULT_BACKGROUND: TThemeBackground = (
BGType: bgtColor;
Color: (R:1; G:1; B:1);
@@ -70,7 +70,7 @@ TThemeBackground = record
OPTIONS_DESC_INDEX_SOUND = 3;
OPTIONS_DESC_INDEX_LYRICS = 4;
OPTIONS_DESC_INDEX_THEMES = 5;
- OPTIONS_DESC_INDEX_RECORD = 6;
+ OPTIONS_DESC_INDEX_MICROPHONES = 6;
OPTIONS_DESC_INDEX_ADVANCED = 7;
OPTIONS_DESC_INDEX_NETWORK = 8;
OPTIONS_DESC_INDEX_WEBCAM = 9;
@@ -255,12 +255,14 @@ TThemeMain = class(TThemeBasic)
ButtonStat: TThemeButton;
ButtonOptions: TThemeButton;
ButtonExit: TThemeButton;
- ButtonAbout: TThemeButton;
+ ButtonAbout: TThemeButton;
+ ProgressSongsText: TThemeText;
TextDescription: TThemeText;
TextDescriptionLong: TThemeText;
Description: array[0..7] of UTF8String;
DescriptionLong: array[0..7] of UTF8String;
+
end;
TThemeName = class(TThemeBasic)
@@ -314,6 +316,9 @@ TThemeSong = class(TThemeBasic)
TextCat: TThemeText;
StaticCat: TThemeStatic;
+ SongSelectionUp: TThemeStatic;
+ SongSelectionDown: TThemeStatic;
+
//Cover Mod
Cover: record
Reflections: boolean;
@@ -816,17 +821,17 @@ TThemeTop5 = class(TThemeBasic)
end;
TThemeOptions = class(TThemeBasic)
- ButtonGame: TThemeButton;
- ButtonGraphics: TThemeButton;
- ButtonSound: TThemeButton;
- ButtonLyrics: TThemeButton;
- ButtonThemes: TThemeButton;
- ButtonRecord: TThemeButton;
- ButtonAdvanced: TThemeButton;
- ButtonNetwork: TThemeButton;
- ButtonWebcam: TThemeButton;
- ButtonJukebox: TThemeButton;
- ButtonExit: TThemeButton;
+ ButtonGame: TThemeButton;
+ ButtonGraphics: TThemeButton;
+ ButtonSound: TThemeButton;
+ ButtonLyrics: TThemeButton;
+ ButtonThemes: TThemeButton;
+ ButtonMicrophones: TThemeButton;
+ ButtonAdvanced: TThemeButton;
+ ButtonNetwork: TThemeButton;
+ ButtonWebcam: TThemeButton;
+ ButtonJukebox: TThemeButton;
+ ButtonExit: TThemeButton;
TextDescription: TThemeText;
Description: array[0..10] of UTF8String;
@@ -880,7 +885,7 @@ TThemeOptionsThemes = class(TThemeBasic)
ButtonExit: TThemeButton;
end;
- TThemeOptionsRecord = class(TThemeBasic)
+ TThemeOptionsMicrophones = class(TThemeBasic)
SelectSlideCard: TThemeSelectSlide;
SelectSlideInput: TThemeSelectSlide;
SelectSlideChannel: TThemeSelectSlide;
@@ -950,48 +955,6 @@ TThemeOptionsJukebox = class(TThemeBasic)
LowerX, LowerW, LowerY, LowerH : integer;
end;
- TThemeEdit = class(TThemeBasic)
- ButtonConvert: TThemeButton;
- ButtonExit: TThemeButton;
-
- TextDescription: TThemeText;
- TextDescriptionLong: TThemeText;
- Description: array[0..5] of UTF8string;
- DescriptionLong: array[0..5] of UTF8string;
- end;
-
- TThemeEditSub = class(TThemeBasic)
- //in editor - headers
- BackgroundImage: TThemeStatic;
- ButtonCurrentLine: TThemeButton;
- ButtonCurrentNote: TThemeButton;
- // buttons
- PlayOnly: TThemeButton;
- PlayWithNote: TThemeButton;
- PlayNote: TThemeButton;
- previousseq: TThemeButton;
- nextseq: TThemeButton;
- undo: TThemeButton;
- gold: TThemeButton;
- freestyle: TThemeButton;
-
- SlideTitle: TThemeSelectSlide;
- SlideArtist: TThemeSelectSlide;
- SlideMP3: TThemeSelectSlide;
- SlideCover: TThemeSelectSlide;
- SlideBackground: TThemeSelectSlide;
- SlideBPM: TThemeSelectSlide;
- SlideGAP: TThemeSelectSlide;
- SlideStart: TThemeSelectSlide;
- SlideDuration: TThemeSelectSlide;
- SlideTone: TThemeSelectSlide;
- SlideLyric: TThemeSelectSlide;
- SelectVolAudio: TThemeSelectSlide;
- SelectVolMidi: TThemeSelectSlide;
- SelectVolClick: TThemeSelectSlide;
- SlideVideoGap: TThemeSelectSlide;
- end;
-
//Error- and Check-Popup
TThemeError = class(TThemeBasic)
Button1: TThemeButton;
@@ -1253,7 +1216,6 @@ TThemePartyTournamentWin = class(TThemeBasic)
TThemeAboutMain = class(TThemeBasic)
StaticBghelper: TThemeStatic;
ButtonDevelopers: TThemeButton;
- ButtonCredits: TThemeButton;
ButtonExit: TThemeButton;
TextOverview: TThemeText;
end;
@@ -1336,14 +1298,11 @@ TTheme = class
OptionsSound: TThemeOptionsSound;
OptionsLyrics: TThemeOptionsLyrics;
OptionsThemes: TThemeOptionsThemes;
- OptionsRecord: TThemeOptionsRecord;
+ OptionsMicrophones: TThemeOptionsMicrophones;
OptionsAdvanced: TThemeOptionsAdvanced;
OptionsNetwork: TThemeOptionsNetwork;
OptionsWebcam: TThemeOptionsWebcam;
OptionsJukebox: TThemeOptionsJukebox;
- //edit
- Edit: TThemeEdit;
- EditSub: TThemeEditSub;
//error and check popup
ErrorPopup: TThemeError;
CheckPopup: TThemeCheck;
@@ -1378,7 +1337,7 @@ TTheme = class
Playlist: TThemePlaylist;
ILevel: array[0..2] of UTF8String;
- IMode: array[0..3] of UTF8String;
+ IMode: array[0..2] of UTF8String;
constructor Create;
@@ -1501,15 +1460,12 @@ constructor TTheme.Create;
OptionsSound := TThemeOptionsSound.Create;
OptionsLyrics := TThemeOptionsLyrics.Create;
OptionsThemes := TThemeOptionsThemes.Create;
- OptionsRecord := TThemeOptionsRecord.Create;
+ OptionsMicrophones := TThemeOptionsMicrophones.Create;
OptionsAdvanced := TThemeOptionsAdvanced.Create;
OptionsNetwork := TThemeOptionsNetwork.Create;
OptionsWebcam := TThemeOptionsWebcam.Create;
OptionsJukebox := TThemeOptionsJukebox.Create;
- Edit := TThemeEdit.Create;
- EditSub := TThemeEditSub.Create;
-
ErrorPopup := TThemeError.Create;
CheckPopup := TThemeCheck.Create;
InsertUserPopup := TThemeInsertUser.Create;
@@ -1668,6 +1624,7 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
ThemeLoadText(Main.TextDescription, 'MainTextDescription');
ThemeLoadText(Main.TextDescriptionLong, 'MainTextDescriptionLong');
+ ThemeLoadText(Main.ProgressSongsText, 'MainProgressSongsText');
ThemeLoadButton(Main.ButtonSolo, 'MainButtonSolo');
ThemeLoadButton(Main.ButtonMulti, 'MainButtonMulti');
ThemeLoadButton(Main.ButtonJukebox, 'MainButtonJukebox');
@@ -2183,18 +2140,18 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
// Options
ThemeLoadBasic(Options, 'Options');
- ThemeLoadButton(Options.ButtonGame, 'OptionsButtonGame');
- ThemeLoadButton(Options.ButtonGraphics, 'OptionsButtonGraphics');
- ThemeLoadButton(Options.ButtonSound, 'OptionsButtonSound');
+ ThemeLoadButton(Options.ButtonGame, 'OptionsButtonGame');
+ ThemeLoadButton(Options.ButtonGraphics, 'OptionsButtonGraphics');
+ ThemeLoadButton(Options.ButtonSound, 'OptionsButtonSound');
- ThemeLoadButton(Options.ButtonLyrics, 'OptionsButtonLyrics');
- ThemeLoadButton(Options.ButtonThemes, 'OptionsButtonThemes');
- ThemeLoadButton(Options.ButtonRecord, 'OptionsButtonRecord');
- ThemeLoadButton(Options.ButtonAdvanced, 'OptionsButtonAdvanced');
- ThemeLoadButton(Options.ButtonNetwork, 'OptionsButtonNetwork');
- ThemeLoadButton(Options.ButtonWebcam, 'OptionsButtonWebcam');
- ThemeLoadButton(Options.ButtonJukebox, 'OptionsButtonJukebox');
- ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit');
+ ThemeLoadButton(Options.ButtonLyrics, 'OptionsButtonLyrics');
+ ThemeLoadButton(Options.ButtonThemes, 'OptionsButtonThemes');
+ ThemeLoadButton(Options.ButtonMicrophones, 'OptionsButtonMicrophones');
+ ThemeLoadButton(Options.ButtonAdvanced, 'OptionsButtonAdvanced');
+ ThemeLoadButton(Options.ButtonNetwork, 'OptionsButtonNetwork');
+ ThemeLoadButton(Options.ButtonWebcam, 'OptionsButtonWebcam');
+ ThemeLoadButton(Options.ButtonJukebox, 'OptionsButtonJukebox');
+ ThemeLoadButton(Options.ButtonExit, 'OptionsButtonExit');
// Note: always update the indexes constant on top of this unit when changing the order (see OPTIONS_DESC_INDEX_*)
Options.Description[OPTIONS_DESC_INDEX_BACK] := Language.Translate('SING_OPTIONS_EXIT');
@@ -2203,7 +2160,7 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
Options.Description[OPTIONS_DESC_INDEX_SOUND] := Language.Translate('SING_OPTIONS_SOUND_DESC');
Options.Description[OPTIONS_DESC_INDEX_LYRICS] := Language.Translate('SING_OPTIONS_LYRICS_DESC');
Options.Description[OPTIONS_DESC_INDEX_THEMES] := Language.Translate('SING_OPTIONS_THEMES_DESC');
- Options.Description[OPTIONS_DESC_INDEX_RECORD] := Language.Translate('SING_OPTIONS_RECORD_DESC');
+ Options.Description[OPTIONS_DESC_INDEX_MICROPHONES] := Language.Translate('SING_OPTIONS_MICROPHONES_DESC');
Options.Description[OPTIONS_DESC_INDEX_ADVANCED] := Language.Translate('SING_OPTIONS_ADVANCED_DESC');
Options.Description[OPTIONS_DESC_INDEX_NETWORK] := Language.Translate('SING_OPTIONS_NETWORK_DESC');
Options.Description[OPTIONS_DESC_INDEX_WEBCAM] := Language.Translate('SING_OPTIONS_WEBCAM_DESC');
@@ -2267,15 +2224,15 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
ThemeLoadSelectSlide(OptionsThemes.SelectColor, 'OptionsThemesSelectColor');
ThemeLoadButton(OptionsThemes.ButtonExit, 'OptionsThemesButtonExit');
- // Options Record
- ThemeLoadBasic(OptionsRecord, 'OptionsRecord');
+ // Options Microphones
+ ThemeLoadBasic(OptionsMicrophones, 'OptionsMicrophones');
- ThemeLoadSelectSlide(OptionsRecord.SelectSlideCard, 'OptionsRecordSelectSlideCard');
- ThemeLoadSelectSlide(OptionsRecord.SelectSlideInput, 'OptionsRecordSelectSlideInput');
- ThemeLoadSelectSlide(OptionsRecord.SelectSlideChannel, 'OptionsRecordSelectSlideChannel');
- ThemeLoadSelectSlide(OptionsRecord.SelectThreshold, 'OptionsRecordSelectThreshold');
- ThemeLoadSelectSlide(OptionsRecord.SelectMicBoost, 'OptionsRecordSelectMicBoost');
- ThemeLoadButton(OptionsRecord.ButtonExit, 'OptionsRecordButtonExit');
+ ThemeLoadSelectSlide(OptionsMicrophones.SelectSlideCard, 'OptionsMicrophonesSelectSlideCard');
+ ThemeLoadSelectSlide(OptionsMicrophones.SelectSlideInput, 'OptionsMicrophonesSelectSlideInput');
+ ThemeLoadSelectSlide(OptionsMicrophones.SelectSlideChannel, 'OptionsMicrophonesSelectSlideChannel');
+ ThemeLoadSelectSlide(OptionsMicrophones.SelectThreshold, 'OptionsMicrophonesSelectThreshold');
+ ThemeLoadSelectSlide(OptionsMicrophones.SelectMicBoost, 'OptionsMicrophonesSelectMicBoost');
+ ThemeLoadButton(OptionsMicrophones.ButtonExit, 'OptionsMicrophonesButtonExit');
//Options Advanced
ThemeLoadBasic(OptionsAdvanced, 'OptionsAdvanced');
@@ -2521,7 +2478,6 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
// About
ThemeLoadBasic(AboutMain, 'AboutMain');
ThemeLoadButton(AboutMain.ButtonDevelopers, 'AboutMainButtonDevelopers');
- ThemeLoadButton(AboutMain.ButtonCredits, 'AboutMainButtonCredits');
ThemeLoadButton(AboutMain.ButtonExit, 'AboutMainButtonExit');
ThemeLoadText (AboutMain.TextOverview, 'AboutMainTextOverview');
ThemeLoadStatic(AboutMain.StaticBghelper, 'AboutMainStatico');
@@ -2576,16 +2532,16 @@ function TTheme.LoadTheme(ThemeNum: integer; sColor: integer): boolean;
//Level Translations
//Fill ILevel
- ILevel[0] := Language.Translate('SING_EASY');
- ILevel[1] := Language.Translate('SING_MEDIUM');
- ILevel[2] := Language.Translate('SING_HARD');
+ ILevel[0] := Language.Translate('OPTION_VALUE_EASY');
+ ILevel[1] := Language.Translate('OPTION_VALUE_MEDIUM');
+ ILevel[2] := Language.Translate('OPTION_VALUE_HARD');
//Mode Translations
//Fill IMode
IMode[0] := Language.Translate('PARTY_MODE_CLASSIC');
IMode[1] := Language.Translate('PARTY_MODE_CLASSIC_FREE');
- IMode[2] := Language.Translate('PARTY_MODE_CHALLENGE');
- IMode[3] := Language.Translate('PARTY_MODE_TOURNAMENT');
+ IMode[2] := Language.Translate('PARTY_MODE_TOURNAMENT');
+ //IMode[3] := Language.Translate('PARTY_MODE_CHALLENGE'); //Hidden for the moment. Check in the future
end;
ThemeIni.Free;
@@ -4267,6 +4223,9 @@ procedure TTheme.ThemeSongLoad;
ThemeLoadStatic(Song.StaticCat, 'Song' + prefix + 'StaticCat');
ThemeLoadText(Song.TextCat, 'Song' + prefix + 'TextCat');
+ Self.ThemeLoadStatic(Self.Song.SongSelectionUp, 'Song' + prefix + 'Static1');
+ Self.ThemeLoadStatic(Self.Song.SongSelectionDown, 'Song' + prefix + 'Static2');
+
//Load Cover Pos and Size from Theme Mod
Song.Cover.X := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'X', 300);
Song.Cover.Y := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'Y', 190);
@@ -4305,6 +4264,7 @@ procedure TTheme.ThemeSongLoad;
if (TSongMenuMode(Ini.SongMenu) = smList) then
begin
+ Song.Cover.Rows := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'Rows', 4);
Song.Cover.SelectX := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'SelectX', 300);
Song.Cover.SelectY := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'SelectY', 120);
Song.Cover.SelectW := ThemeIni.ReadInteger('Song' + prefix + 'Cover', 'SelectW', 325);
@@ -4472,8 +4432,8 @@ procedure TTheme.CreateThemeObjects();
freeandnil(OptionsThemes);
OptionsThemes := TThemeOptionsThemes.Create;
- freeandnil(OptionsRecord);
- OptionsRecord := TThemeOptionsRecord.Create;
+ freeandnil(OptionsMicrophones);
+ OptionsMicrophones := TThemeOptionsMicrophones.Create;
freeandnil(OptionsAdvanced);
OptionsAdvanced := TThemeOptionsAdvanced.Create;
@@ -4487,12 +4447,6 @@ procedure TTheme.CreateThemeObjects();
freeandnil(OptionsJukebox);
OptionsJukebox := TThemeOptionsJukebox.Create;
- freeandnil(Edit);
- Edit := TThemeEdit.Create;
-
- freeandnil(EditSub);
- EditSub := TThemeEditSub.Create;
-
freeandnil(ErrorPopup);
ErrorPopup := TThemeError.Create;
diff --git a/src/base/uunicodestringhelper.pas b/src/base/uunicodestringhelper.pas
deleted file mode 100644
index ff805cb9..00000000
--- a/src/base/uunicodestringhelper.pas
+++ /dev/null
@@ -1,62 +0,0 @@
-{*
- UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
- COPYRIGHT file distributed with this source distribution.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
- .
- *}
-
-unit UUnicodeStringHelper;
-
-{$mode objfpc}
-
-interface
-
-uses
- UUnicodeUtils;
-
-{**
- * Checks if the given string is a valid UTF-8 string.
- * If an ANSI encoded string (with char codes >= 128) is passed, the
- * function will most probably return false, as most ANSI strings sequences
- * are illegal in UTF-8.
- *}
-function IsUTF8StringH(const str: RawByteString): boolean;
-
-{**
- * Returns true if the system uses UTF-8 as default string type
- * (filesystem or API calls).
- * This is always true on Mac OS X and always false on Win32. On Unix it depends
- * on the LC_CTYPE setting.
- * Do not use AnsiToUTF8() or UTF8ToAnsi() if this function returns true.
- *}
-function IsNativeUTF8H(): boolean;
-
-implementation
-
-function IsUTF8StringH(const str: RawByteString): boolean;
-begin
- Result := IsUTF8String(str);
-end;
-
-function IsNativeUTF8H(): boolean;
-begin
- Result := IsNativeUTF8();
-end;
-
-end.
-
diff --git a/src/lib/ffmpeg-4.0/How to update the ffmpeg files.txt b/src/lib/ffmpeg-4.0/How to update the ffmpeg files.txt
new file mode 100644
index 00000000..ae65d477
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/How to update the ffmpeg files.txt
@@ -0,0 +1,20 @@
+how to update the ffmpeg files:
+
+1) buffer.pas
+ cpu.pas
+ dict.pas
+ error.pas
+ frame.pas
+ log.pas
+ mathematics.pas
+ mem.pas
+ opt.pas
+ pixfmt.pas
+ samplefmt.pas
+2) rational.pas
+3) avutil.pas
+4) avcodec.pas
+5) avio.pas
+ swscale.pas
+ swresample.pas
+6) avformat.pas
\ No newline at end of file
diff --git a/src/lib/ffmpeg-4.0/ToDo.txt b/src/lib/ffmpeg-4.0/ToDo.txt
new file mode 100644
index 00000000..b0bd305e
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/ToDo.txt
@@ -0,0 +1,112 @@
+1) avutil.pas
+
+from mem.pas:
+inline function av_x_if_null
+inline function av_size_mult
+
+from log.pas:
+inline function av_log
+inline function av_log_set_callback
+inline function av_log_default_callback
+inline function av_dlog
+
+
+FFmpeg 3.0 changes:
+2016-02-10 - bc9a596 / 9f61abc - lavf 57.25.100 / 57.3.0 - avformat.h
+ Add AVFormatContext.opaque, io_open and io_close, allowing custom IO
+
+2016-02-01 - 1dba837 - lavf 57.24.100 - avformat.h, avio.h
+ Add protocol_whitelist to AVFormatContext, AVIOContext
+
+2016-01-31 - 66e9d2f - lavu 55.17.100 - frame.h
+ Add AV_FRAME_DATA_GOP_TIMECODE for exporting MPEG1/2 GOP timecodes.
+
+2016-01-01 - 5e8b053 / 2c68113 - lavc 57.21.100 / 57.12.0 - avcodec.h
+ Add AVCodecDescriptor.profiles and avcodec_profile_name().
+
+2015-12-28 - 1f9139b - lavf 57.21.100 - avformat.h
+ Add automatic bitstream filtering; add av_apply_bitstream_filters()
+
+2015-12-22 - 39a09e9 - lavfi 6.21.101 - avfilter.h
+ Deprecate avfilter_link_set_closed().
+ Applications are not supposed to mess with links,
+ they should close the sinks.
+
+2015-12-17 - lavc 57.18.100 / 57.11.0 - avcodec.h dirac.h
+ xxxxxxx - Add av_packet_add_side_data().
+ xxxxxxx - Add AVCodecContext.coded_side_data.
+ xxxxxxx - Add AVCPBProperties API.
+ xxxxxxx - Add a new public header dirac.h containing
+ av_dirac_parse_sequence_header()
+
+2015-12-11 - 676a93f - lavf 57.20.100 - avformat.h
+ Add av_program_add_stream_index()
+
+2015-11-29 - 93fb4a4 - lavc 57.16.101 - avcodec.h
+ Deprecate rtp_callback without replacement, i.e. it won't be possible to
+ get image slices before the full frame is encoded any more. The libavformat
+ rtpenc muxer can still be used for RFC-2190 packetization.
+
+2015-11-22 - fe20e34 - lavc 57.16.100 - avcodec.h
+ Add AV_PKT_DATA_FALLBACK_TRACK for making fallback associations between
+ streams.
+
+2015-11-22 - ad317c9 - lavf 57.19.100 - avformat.h
+ Add av_stream_new_side_data().
+
+2015-11-22 - e12f403 - lavu 55.8.100 - xtea.h
+ Add av_xtea_le_init and av_xtea_le_crypt
+
+2015-11-18 - lavu 55.7.100 - mem.h
+ Add av_fast_mallocz()
+
+2015-10-29 - lavc 57.12.100 / 57.8.0 - avcodec.h
+ xxxxxx - Deprecate av_free_packet(). Use av_packet_unref() as replacement,
+ it resets the packet in a more consistent way.
+ xxxxxx - Deprecate av_dup_packet(), it is a no-op for most cases.
+ Use av_packet_ref() to make a non-refcounted AVPacket refcounted.
+ xxxxxx - Add av_packet_alloc(), av_packet_clone(), av_packet_free().
+ They match the AVFrame functions with the same name.
+
+2015-10-27 - 1e477a9 - lavu 55.5.100 - cpu.h
+ Add AV_CPU_FLAG_AESNI.
+
+2015-10-22 - ee573b4 / a17a766 - lavc 57.9.100 / 57.5.0 - avcodec.h
+ Add data and linesize array to AVSubtitleRect, to be used instead of
+ the ones from the embedded AVPicture.
+
+2015-10-22 - 866a417 / dc923bc - lavc 57.8.100 / 57.0.0 - qsv.h
+ Add an API for allocating opaque surfaces.
+
+2015-10-15 - 2c2d162 - lavf 57.4.100
+ Remove the latm demuxer that was a duplicate of the loas demuxer.
+
+2015-10-14 - b994788 / 11c5f43 - lavu 55.4.100 / 55.2.0 - dict.h
+ Change return type of av_dict_copy() from void to int, so that a proper
+ error code can be reported.
+
+2015-09-29 - b01891a / 948f3c1 - lavc 57.3.100 / 57.2.0 - avcodec.h
+ Change type of AVPacket.duration from int to int64_t.
+
+2015-09-17 - 7c46f24 / e3d4784 - lavc 57.3.100 / 57.2.0 - d3d11va.h
+ Add av_d3d11va_alloc_context(). This function must from now on be used for
+ allocating AVD3D11VAContext.
+
+2015-09-15 - lavf 57.2.100 - avformat.h
+ probesize and max_analyze_duration switched to 64bit, both
+ are only accessible through AVOptions
+
+2015-09-15 - lavf 57.1.100 - avformat.h
+ bit_rate was changed to 64bit, make sure you update any
+ printf() or other type sensitive code
+
+2015-09-15 - lavc 57.2.100 - avcodec.h
+ bit_rate/rc_max_rate/rc_min_rate were changed to 64bit, make sure you update
+ any printf() or other type sensitive code
+
+2015-09-07 - lavu 55.0.100 / 55.0.0
+ c734b34 / b8b5d82 - Change type of AVPixFmtDescriptor.flags from uint8_t to uint64_t.
+ f53569a / 6b3ef7f - Change type of AVComponentDescriptor fields from uint16_t to int
+ and drop bit packing.
+ 151aa2e / 2268db2 - Add step, offset, and depth to AVComponentDescriptor to replace
+ the deprecated step_minus1, offset_plus1, and depth_minus1.
\ No newline at end of file
diff --git a/src/lib/ffmpeg-4.0/avcodec.pas b/src/lib/ffmpeg-4.0/avcodec.pas
new file mode 100644
index 00000000..e717744d
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/avcodec.pas
@@ -0,0 +1,6805 @@
+(*
+ * copyright (c) 2001 Fabrice Bellard
+ *
+ * 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 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavcodec/avcodec.h
+ * version: 56.1.100
+ *
+ *)
+
+unit avcodec;
+
+{$IFDEF FPC}
+ {$MODE DELPHI }
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I switches.inc} (* for ffmpeg defines *)
+{$I ff_api-defines.inc} (* FF_API_* defines *)
+
+{$IFDEF DARWIN}
+ {$linklib libavcodec}
+{$ENDIF}
+
+interface
+
+uses
+ ctypes,
+ avutil,
+ rational,
+ SysUtils,
+ {$IFDEF UNIX}
+ BaseUnix,
+ {$ENDIF}
+ UConfig;
+
+const
+ (*
+ * IMPORTANT: The official FFmpeg C headers change very quickly. Often some
+ * of the data structures are changed so that they become incompatible with
+ * older header files. The Pascal headers have to be adjusted to those changes,
+ * otherwise the application might crash randomly or strange bugs (not
+ * necessarily related to video or audio due to buffer overflows etc.) might
+ * occur.
+ *
+ * In the past users reported problems with USDX that took hours to fix and
+ * the problem was an unsupported version of FFmpeg. So we decided to disable
+ * support for future versions of FFmpeg until the headers are revised by us
+ * for that version as they otherwise most probably will break USDX.
+ *
+ * If the headers do not yet support your FFmpeg version you may want to
+ * adjust the max. version numbers manually but please note: it may work but
+ * in many cases it does not. The USDX team does NOT PROVIDE ANY SUPPORT
+ * for the game if the MAX. VERSION WAS CHANGED.
+ *
+ * The only safe way to support new versions of FFmpeg is to add the changes
+ * of the FFmpeg git repository C headers to the Pascal headers.
+ * You can accelerate this process by posting a patch with the git changes
+ * translated to Pascal to our bug tracker (please join our IRC chat before
+ * you start working on it). Simply adjusting the max. versions is NOT a valid
+ * fix.
+ *)
+
+ (* Supported version by this header *)
+ LIBAVCODEC_MAX_VERSION_MAJOR = 58;
+ LIBAVCODEC_MAX_VERSION_MINOR = 35;
+ LIBAVCODEC_MAX_VERSION_RELEASE = 100;
+ LIBAVCODEC_MAX_VERSION = (LIBAVCODEC_MAX_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVCODEC_MAX_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVCODEC_MAX_VERSION_RELEASE * VERSION_RELEASE);
+
+ (* Min. supported version by this header *)
+ LIBAVCODEC_MIN_VERSION_MAJOR = 58;
+ LIBAVCODEC_MIN_VERSION_MINOR = 18;
+ LIBAVCODEC_MIN_VERSION_RELEASE = 100;
+ LIBAVCODEC_MIN_VERSION = (LIBAVCODEC_MIN_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVCODEC_MIN_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVCODEC_MIN_VERSION_RELEASE * VERSION_RELEASE);
+
+(* Check if linked versions are supported *)
+{$IF (LIBAVCODEC_VERSION < LIBAVCODEC_MIN_VERSION)}
+ {$MESSAGE Error 'Linked version of libavcodec is too old!'}
+{$IFEND}
+
+(* Check if linked version is supported *)
+{$IF (LIBAVCODEC_VERSION > LIBAVCODEC_MAX_VERSION)}
+ {$MESSAGE Error 'Linked version of libavcodec is not yet supported!'}
+{$IFEND}
+
+{$IFNDEF FPC}
+type
+ // defines for Delphi
+ size_t = cardinal;
+{$ENDIF}
+
+type
+ FF_INTERNALC_MEM_TYPE = cuint;
+
+const
+ AV_NOPTS_VALUE: cint64 = $8000000000000000;
+ AV_TIME_BASE = 1000000;
+ AV_TIME_BASE_Q: TAVRational = (num: 1; den: AV_TIME_BASE);
+
+(**
+ * @ingroup libavc
+ * @defgroup lavc_encdec send/receive encoding and decoding API overview
+ * @{
+ *
+ * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/
+ * avcodec_receive_packet() functions provide an encode/decode API, which
+ * decouples input and output.
+ *
+ * The API is very similar for encoding/decoding and audio/video, and works as
+ * follows:
+ * - Set up and open the AVCodecContext as usual.
+ * - Send valid input:
+ * - For decoding, call avcodec_send_packet() to give the decoder raw
+ * compressed data in an AVPacket.
+ * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame
+ * containing uncompressed audio or video.
+ * In both cases, it is recommended that AVPackets and AVFrames are
+ * refcounted, or libavcodec might have to copy the input data. (libavformat
+ * always returns refcounted AVPackets, and av_frame_get_buffer() allocates
+ * refcounted AVFrames.)
+ * - Receive output in a loop. Periodically call one of the avcodec_receive_*()
+ * functions and process their output:
+ * - For decoding, call avcodec_receive_frame(). On success, it will return
+ * an AVFrame containing uncompressed audio or video data.
+ * - For encoding, call avcodec_receive_packet(). On success, it will return
+ * an AVPacket with a compressed frame.
+ * Repeat this call until it returns AVERROR(EAGAIN) or an error. The
+ * AVERROR(EAGAIN) return value means that new input data is required to
+ * return new output. In this case, continue with sending input. For each
+ * input frame/packet, the codec will typically return 1 output frame/packet,
+ * but it can also be 0 or more than 1.
+ *
+ * At the beginning of decoding or encoding, the codec might accept multiple
+ * input frames/packets without returning a frame, until its internal buffers
+ * are filled. This situation is handled transparently if you follow the steps
+ * outlined above.
+ *
+ * In theory, sending input can result in EAGAIN - this should happen only if
+ * not all output was received. You can use this to structure alternative decode
+ * or encode loops other than the one suggested above. For example, you could
+ * try sending new input on each iteration, and try to receive output if that
+ * returns EAGAIN.
+ *
+ * End of stream situations. These require "flushing" (aka draining) the codec,
+ * as the codec might buffer multiple frames or packets internally for
+ * performance or out of necessity (consider B-frames).
+ * This is handled as follows:
+ * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding)
+ * or avcodec_send_frame() (encoding) functions. This will enter draining
+ * mode.
+ * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet()
+ * (encoding) in a loop until AVERROR_EOF is returned. The functions will
+ * not return AVERROR(EAGAIN), unless you forgot to enter draining mode.
+ * - Before decoding can be resumed again, the codec has to be reset with
+ * avcodec_flush_buffers().
+ *
+ * Using the API as outlined above is highly recommended. But it is also
+ * possible to call functions outside of this rigid schema. For example, you can
+ * call avcodec_send_packet() repeatedly without calling
+ * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed
+ * until the codec's internal buffer has been filled up (which is typically of
+ * size 1 per output frame, after initial input), and then reject input with
+ * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to
+ * read at least some output.
+ *
+ * Not all codecs will follow a rigid and predictable dataflow; the only
+ * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on
+ * one end implies that a receive/send call on the other end will succeed, or
+ * at least will not fail with AVERROR(EAGAIN). In general, no codec will
+ * permit unlimited buffering of input or output.
+ *
+ * This API replaces the following legacy functions:
+ * - avcodec_decode_video2() and avcodec_decode_audio4():
+ * Use avcodec_send_packet() to feed input to the decoder, then use
+ * avcodec_receive_frame() to receive decoded frames after each packet.
+ * Unlike with the old video decoding API, multiple frames might result from
+ * a packet. For audio, splitting the input packet into frames by partially
+ * decoding packets becomes transparent to the API user. You never need to
+ * feed an AVPacket to the API twice (unless it is rejected with AVERROR(EAGAIN) - then
+ * no data was read from the packet).
+ * Additionally, sending a flush/draining packet is required only once.
+ * - avcodec_encode_video2()/avcodec_encode_audio2():
+ * Use avcodec_send_frame() to feed input to the encoder, then use
+ * avcodec_receive_packet() to receive encoded packets.
+ * Providing user-allocated buffers for avcodec_receive_packet() is not
+ * possible.
+ * - The new API does not handle subtitles yet.
+ *
+ * Mixing new and old function calls on the same AVCodecContext is not allowed,
+ * and will result in undefined behavior.
+ *
+ * Some codecs might require using the new API; using the old API will return
+ * an error when calling it. All codecs support the new API.
+ *
+ * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This
+ * would be an invalid state, which could put the codec user into an endless
+ * loop. The API has no concept of time either: it cannot happen that trying to
+ * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second
+ * later accepts the packet (with no other receive/flush API calls involved).
+ * The API is a strict state machine, and the passage of time is not supposed
+ * to influence it. Some timing-dependent behavior might still be deemed
+ * acceptable in certain cases. But it must never result in both send/receive
+ * returning EAGAIN at the same time at any point. It must also absolutely be
+ * avoided that the current state is "unstable" and can "flip-flop" between
+ * the send/receive APIs allowing progress. For example, it's not allowed that
+ * the codec randomly decides that it actually wants to consume a packet now
+ * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an
+ * avcodec_send_packet() call.
+ * @}
+ *)
+
+(**
+ * @defgroup lavc_core Core functions/structures.
+ * @ingroup libavc
+ *
+ * Basic definitions, functions for querying libavcodec capabilities,
+ * allocating core structures, etc.
+ * @
+ *)
+
+(**
+ * Identify the syntax and semantics of the bitstream.
+ * The principle is roughly:
+ * Two decoders with the same ID can decode the same streams.
+ * Two encoders with the same ID can encode compatible streams.
+ * There may be slight deviations from the principle due to implementation
+ * details.
+ *
+ * If you add a codec ID to this list, add it so that
+ * 1. no value of an existing codec ID changes (that would break ABI),
+ * 2. it is as close as possible to similar codecs
+ *
+ * After adding new codec IDs, do not forget to add an entry to the codec
+ * descriptor list and bump libavcodec minor version.
+ *)
+type
+ PAVCodecID = ^TAVCodecID;
+ TAVCodecID = (
+ AV_CODEC_ID_NONE,
+
+ //* video codecs */
+ AV_CODEC_ID_MPEG1VIDEO,
+ AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
+ AV_CODEC_ID_H261,
+ AV_CODEC_ID_H263,
+ AV_CODEC_ID_RV10,
+ AV_CODEC_ID_RV20,
+ AV_CODEC_ID_MJPEG,
+ AV_CODEC_ID_MJPEGB,
+ AV_CODEC_ID_LJPEG,
+ AV_CODEC_ID_SP5X,
+ AV_CODEC_ID_JPEGLS,
+ AV_CODEC_ID_MPEG4,
+ AV_CODEC_ID_RAWVIDEO,
+ AV_CODEC_ID_MSMPEG4V1,
+ AV_CODEC_ID_MSMPEG4V2,
+ AV_CODEC_ID_MSMPEG4V3,
+ AV_CODEC_ID_WMV1,
+ AV_CODEC_ID_WMV2,
+ AV_CODEC_ID_H263P,
+ AV_CODEC_ID_H263I,
+ AV_CODEC_ID_FLV1,
+ AV_CODEC_ID_SVQ1,
+ AV_CODEC_ID_SVQ3,
+ AV_CODEC_ID_DVVIDEO,
+ AV_CODEC_ID_HUFFYUV,
+ AV_CODEC_ID_CYUV,
+ AV_CODEC_ID_H264,
+ AV_CODEC_ID_INDEO3,
+ AV_CODEC_ID_VP3,
+ AV_CODEC_ID_THEORA,
+ AV_CODEC_ID_ASV1,
+ AV_CODEC_ID_ASV2,
+ AV_CODEC_ID_FFV1,
+ AV_CODEC_ID_4XM,
+ AV_CODEC_ID_VCR1,
+ AV_CODEC_ID_CLJR,
+ AV_CODEC_ID_MDEC,
+ AV_CODEC_ID_ROQ,
+ AV_CODEC_ID_INTERPLAY_VIDEO,
+ AV_CODEC_ID_XAN_WC3,
+ AV_CODEC_ID_XAN_WC4,
+ AV_CODEC_ID_RPZA,
+ AV_CODEC_ID_CINEPAK,
+ AV_CODEC_ID_WS_VQA,
+ AV_CODEC_ID_MSRLE,
+ AV_CODEC_ID_MSVIDEO1,
+ AV_CODEC_ID_IDCIN,
+ AV_CODEC_ID_8BPS,
+ AV_CODEC_ID_SMC,
+ AV_CODEC_ID_FLIC,
+ AV_CODEC_ID_TRUEMOTION1,
+ AV_CODEC_ID_VMDVIDEO,
+ AV_CODEC_ID_MSZH,
+ AV_CODEC_ID_ZLIB,
+ AV_CODEC_ID_QTRLE,
+ AV_CODEC_ID_TSCC,
+ AV_CODEC_ID_ULTI,
+ AV_CODEC_ID_QDRAW,
+ AV_CODEC_ID_VIXL,
+ AV_CODEC_ID_QPEG,
+ AV_CODEC_ID_PNG,
+ AV_CODEC_ID_PPM,
+ AV_CODEC_ID_PBM,
+ AV_CODEC_ID_PGM,
+ AV_CODEC_ID_PGMYUV,
+ AV_CODEC_ID_PAM,
+ AV_CODEC_ID_FFVHUFF,
+ AV_CODEC_ID_RV30,
+ AV_CODEC_ID_RV40,
+ AV_CODEC_ID_VC1,
+ AV_CODEC_ID_WMV3,
+ AV_CODEC_ID_LOCO,
+ AV_CODEC_ID_WNV1,
+ AV_CODEC_ID_AASC,
+ AV_CODEC_ID_INDEO2,
+ AV_CODEC_ID_FRAPS,
+ AV_CODEC_ID_TRUEMOTION2,
+ AV_CODEC_ID_BMP,
+ AV_CODEC_ID_CSCD,
+ AV_CODEC_ID_MMVIDEO,
+ AV_CODEC_ID_ZMBV,
+ AV_CODEC_ID_AVS,
+ AV_CODEC_ID_SMACKVIDEO,
+ AV_CODEC_ID_NUV,
+ AV_CODEC_ID_KMVC,
+ AV_CODEC_ID_FLASHSV,
+ AV_CODEC_ID_CAVS,
+ AV_CODEC_ID_JPEG2000,
+ AV_CODEC_ID_VMNC,
+ AV_CODEC_ID_VP5,
+ AV_CODEC_ID_VP6,
+ AV_CODEC_ID_VP6F,
+ AV_CODEC_ID_TARGA,
+ AV_CODEC_ID_DSICINVIDEO,
+ AV_CODEC_ID_TIERTEXSEQVIDEO,
+ AV_CODEC_ID_TIFF,
+ AV_CODEC_ID_GIF,
+ AV_CODEC_ID_DXA,
+ AV_CODEC_ID_DNXHD,
+ AV_CODEC_ID_THP,
+ AV_CODEC_ID_SGI,
+ AV_CODEC_ID_C93,
+ AV_CODEC_ID_BETHSOFTVID,
+ AV_CODEC_ID_PTX,
+ AV_CODEC_ID_TXD,
+ AV_CODEC_ID_VP6A,
+ AV_CODEC_ID_AMV,
+ AV_CODEC_ID_VB,
+ AV_CODEC_ID_PCX,
+ AV_CODEC_ID_SUNRAST,
+ AV_CODEC_ID_INDEO4,
+ AV_CODEC_ID_INDEO5,
+ AV_CODEC_ID_MIMIC,
+ AV_CODEC_ID_RL2,
+ AV_CODEC_ID_ESCAPE124,
+ AV_CODEC_ID_DIRAC,
+ AV_CODEC_ID_BFI,
+ AV_CODEC_ID_CMV,
+ AV_CODEC_ID_MOTIONPIXELS,
+ AV_CODEC_ID_TGV,
+ AV_CODEC_ID_TGQ,
+ AV_CODEC_ID_TQI,
+ AV_CODEC_ID_AURA,
+ AV_CODEC_ID_AURA2,
+ AV_CODEC_ID_V210X,
+ AV_CODEC_ID_TMV,
+ AV_CODEC_ID_V210,
+ AV_CODEC_ID_DPX,
+ AV_CODEC_ID_MAD,
+ AV_CODEC_ID_FRWU,
+ AV_CODEC_ID_FLASHSV2,
+ AV_CODEC_ID_CDGRAPHICS,
+ AV_CODEC_ID_R210,
+ AV_CODEC_ID_ANM,
+ AV_CODEC_ID_BINKVIDEO,
+ AV_CODEC_ID_IFF_ILBM,
+ AV_CODEC_ID_IFF_BYTERUN1 = AV_CODEC_ID_IFF_ILBM,
+ AV_CODEC_ID_KGV1,
+ AV_CODEC_ID_YOP,
+ AV_CODEC_ID_VP8,
+ AV_CODEC_ID_PICTOR,
+ AV_CODEC_ID_ANSI,
+ AV_CODEC_ID_A64_MULTI,
+ AV_CODEC_ID_A64_MULTI5,
+ AV_CODEC_ID_R10K,
+ AV_CODEC_ID_MXPEG,
+ AV_CODEC_ID_LAGARITH,
+ AV_CODEC_ID_PRORES,
+ AV_CODEC_ID_JV,
+ AV_CODEC_ID_DFA,
+ AV_CODEC_ID_WMV3IMAGE,
+ AV_CODEC_ID_VC1IMAGE,
+ AV_CODEC_ID_UTVIDEO,
+ AV_CODEC_ID_BMV_VIDEO,
+ AV_CODEC_ID_VBLE,
+ AV_CODEC_ID_DXTORY,
+ AV_CODEC_ID_V410,
+ AV_CODEC_ID_XWD,
+ AV_CODEC_ID_CDXL,
+ AV_CODEC_ID_XBM,
+ AV_CODEC_ID_ZEROCODEC,
+ AV_CODEC_ID_MSS1,
+ AV_CODEC_ID_MSA1,
+ AV_CODEC_ID_TSCC2,
+ AV_CODEC_ID_MTS2,
+ AV_CODEC_ID_CLLC,
+ AV_CODEC_ID_MSS2,
+ AV_CODEC_ID_VP9,
+ AV_CODEC_ID_AIC,
+ AV_CODEC_ID_ESCAPE130,
+ AV_CODEC_ID_G2M,
+ AV_CODEC_ID_WEBP,
+ AV_CODEC_ID_HNM4_VIDEO,
+ AV_CODEC_ID_HEVC,
+ AV_CODEC_ID_FIC,
+ AV_CODEC_ID_ALIAS_PIX,
+ AV_CODEC_ID_BRENDER_PIX,
+ AV_CODEC_ID_PAF_VIDEO,
+ AV_CODEC_ID_EXR,
+ AV_CODEC_ID_VP7,
+ AV_CODEC_ID_SANM,
+ AV_CODEC_ID_SGIRLE,
+ AV_CODEC_ID_MVC1,
+ AV_CODEC_ID_MVC2,
+ AV_CODEC_ID_HQX,
+ AV_CODEC_ID_TDSC,
+ AV_CODEC_ID_HQ_HQA,
+ AV_CODEC_ID_HAP,
+ AV_CODEC_ID_DDS,
+ AV_CODEC_ID_DXV,
+ AV_CODEC_ID_SCREENPRESSO,
+ AV_CODEC_ID_RSCC,
+
+ AV_CODEC_ID_Y41P = $8000,
+ AV_CODEC_ID_AVRP,
+ AV_CODEC_ID_012V,
+ AV_CODEC_ID_AVUI,
+ AV_CODEC_ID_AYUV,
+ AV_CODEC_ID_TARGA_Y216,
+ AV_CODEC_ID_V308,
+ AV_CODEC_ID_V408,
+ AV_CODEC_ID_YUV4,
+ AV_CODEC_ID_AVRN,
+ AV_CODEC_ID_CPIA,
+ AV_CODEC_ID_XFACE,
+ AV_CODEC_ID_SNOW,
+ AV_CODEC_ID_SMVJPEG,
+ AV_CODEC_ID_APNG,
+ AV_CODEC_ID_DAALA,
+ AV_CODEC_ID_CFHD,
+ AV_CODEC_ID_TRUEMOTION2RT,
+ AV_CODEC_ID_M101,
+ AV_CODEC_ID_MAGICYUV,
+ AV_CODEC_ID_SHEERVIDEO,
+ AV_CODEC_ID_YLC,
+ AV_CODEC_ID_PSD,
+ AV_CODEC_ID_PIXLET,
+ AV_CODEC_ID_SPEEDHQ,
+ AV_CODEC_ID_FMVC,
+ AV_CODEC_ID_SCPR,
+ AV_CODEC_ID_CLEARVIDEO,
+ AV_CODEC_ID_XPM,
+ AV_CODEC_ID_AV1,
+ AV_CODEC_ID_BITPACKED,
+ AV_CODEC_ID_MSCC,
+ AV_CODEC_ID_SRGC,
+ AV_CODEC_ID_SVG,
+ AV_CODEC_ID_GDV,
+ AV_CODEC_ID_FITS,
+
+ //* various PCM "codecs" */
+ AV_CODEC_ID_FIRST_AUDIO = $10000, ///< A dummy id pointing at the start of audio codecs
+ AV_CODEC_ID_PCM_S16LE = $10000,
+ AV_CODEC_ID_PCM_S16BE,
+ AV_CODEC_ID_PCM_U16LE,
+ AV_CODEC_ID_PCM_U16BE,
+ AV_CODEC_ID_PCM_S8,
+ AV_CODEC_ID_PCM_U8,
+ AV_CODEC_ID_PCM_MULAW,
+ AV_CODEC_ID_PCM_ALAW,
+ AV_CODEC_ID_PCM_S32LE,
+ AV_CODEC_ID_PCM_S32BE,
+ AV_CODEC_ID_PCM_U32LE,
+ AV_CODEC_ID_PCM_U32BE,
+ AV_CODEC_ID_PCM_S24LE,
+ AV_CODEC_ID_PCM_S24BE,
+ AV_CODEC_ID_PCM_U24LE,
+ AV_CODEC_ID_PCM_U24BE,
+ AV_CODEC_ID_PCM_S24DAUD,
+ AV_CODEC_ID_PCM_ZORK,
+ AV_CODEC_ID_PCM_S16LE_PLANAR,
+ AV_CODEC_ID_PCM_DVD,
+ AV_CODEC_ID_PCM_F32BE,
+ AV_CODEC_ID_PCM_F32LE,
+ AV_CODEC_ID_PCM_F64BE,
+ AV_CODEC_ID_PCM_F64LE,
+ AV_CODEC_ID_PCM_BLURAY,
+ AV_CODEC_ID_PCM_LXF,
+ AV_CODEC_ID_S302M,
+ AV_CODEC_ID_PCM_S8_PLANAR,
+ AV_CODEC_ID_PCM_S24LE_PLANAR,
+ AV_CODEC_ID_PCM_S32LE_PLANAR,
+ AV_CODEC_ID_PCM_S16BE_PLANAR,
+
+ AV_CODEC_ID_PCM_S64LE = $10800,
+ AV_CODEC_ID_PCM_S64BE,
+ AV_CODEC_ID_PCM_F16LE,
+ AV_CODEC_ID_PCM_F24LE,
+
+ //* various ADPCM codecs */
+ AV_CODEC_ID_ADPCM_IMA_QT = $11000,
+ AV_CODEC_ID_ADPCM_IMA_WAV,
+ AV_CODEC_ID_ADPCM_IMA_DK3,
+ AV_CODEC_ID_ADPCM_IMA_DK4,
+ AV_CODEC_ID_ADPCM_IMA_WS,
+ AV_CODEC_ID_ADPCM_IMA_SMJPEG,
+ AV_CODEC_ID_ADPCM_MS,
+ AV_CODEC_ID_ADPCM_4XM,
+ AV_CODEC_ID_ADPCM_XA,
+ AV_CODEC_ID_ADPCM_ADX,
+ AV_CODEC_ID_ADPCM_EA,
+ AV_CODEC_ID_ADPCM_G726,
+ AV_CODEC_ID_ADPCM_CT,
+ AV_CODEC_ID_ADPCM_SWF,
+ AV_CODEC_ID_ADPCM_YAMAHA,
+ AV_CODEC_ID_ADPCM_SBPRO_4,
+ AV_CODEC_ID_ADPCM_SBPRO_3,
+ AV_CODEC_ID_ADPCM_SBPRO_2,
+ AV_CODEC_ID_ADPCM_THP,
+ AV_CODEC_ID_ADPCM_IMA_AMV,
+ AV_CODEC_ID_ADPCM_EA_R1,
+ AV_CODEC_ID_ADPCM_EA_R3,
+ AV_CODEC_ID_ADPCM_EA_R2,
+ AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
+ AV_CODEC_ID_ADPCM_IMA_EA_EACS,
+ AV_CODEC_ID_ADPCM_EA_XAS,
+ AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
+ AV_CODEC_ID_ADPCM_IMA_ISS,
+ AV_CODEC_ID_ADPCM_G722,
+ AV_CODEC_ID_ADPCM_IMA_APC,
+ AV_CODEC_ID_ADPCM_VIMA,
+ AV_CODEC_ID_ADPCM_AFC = $11800,
+ AV_CODEC_ID_ADPCM_IMA_OKI,
+ AV_CODEC_ID_ADPCM_DTK,
+ AV_CODEC_ID_ADPCM_IMA_RAD,
+ AV_CODEC_ID_ADPCM_G726LE,
+ AV_CODEC_ID_ADPCM_THP_LE,
+ AV_CODEC_ID_ADPCM_PSX,
+ AV_CODEC_ID_ADPCM_AICA,
+ AV_CODEC_ID_ADPCM_IMA_DAT4,
+ AV_CODEC_ID_ADPCM_MTAF,
+
+ //* AMR */
+ AV_CODEC_ID_AMR_NB = $12000,
+ AV_CODEC_ID_AMR_WB,
+
+ //* RealAudio codecs*/
+ AV_CODEC_ID_RA_144 = $13000,
+ AV_CODEC_ID_RA_288,
+
+ //* various DPCM codecs */
+ AV_CODEC_ID_ROQ_DPCM = $14000,
+ AV_CODEC_ID_INTERPLAY_DPCM,
+ AV_CODEC_ID_XAN_DPCM,
+ AV_CODEC_ID_SOL_DPCM,
+
+ AV_CODEC_ID_SDX2_DPCM = $14800,
+ AV_CODEC_ID_GREMLIN_DPCM,
+
+ //* audio codecs */
+ AV_CODEC_ID_MP2 = $15000,
+ AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
+ AV_CODEC_ID_AAC,
+ AV_CODEC_ID_AC3,
+ AV_CODEC_ID_DTS,
+ AV_CODEC_ID_VORBIS,
+ AV_CODEC_ID_DVAUDIO,
+ AV_CODEC_ID_WMAV1,
+ AV_CODEC_ID_WMAV2,
+ AV_CODEC_ID_MACE3,
+ AV_CODEC_ID_MACE6,
+ AV_CODEC_ID_VMDAUDIO,
+ AV_CODEC_ID_FLAC,
+ AV_CODEC_ID_MP3ADU,
+ AV_CODEC_ID_MP3ON4,
+ AV_CODEC_ID_SHORTEN,
+ AV_CODEC_ID_ALAC,
+ AV_CODEC_ID_WESTWOOD_SND1,
+ AV_CODEC_ID_GSM, ///< as in Berlin toast format
+ AV_CODEC_ID_QDM2,
+ AV_CODEC_ID_COOK,
+ AV_CODEC_ID_TRUESPEECH,
+ AV_CODEC_ID_TTA,
+ AV_CODEC_ID_SMACKAUDIO,
+ AV_CODEC_ID_QCELP,
+ AV_CODEC_ID_WAVPACK,
+ AV_CODEC_ID_DSICINAUDIO,
+ AV_CODEC_ID_IMC,
+ AV_CODEC_ID_MUSEPACK7,
+ AV_CODEC_ID_MLP,
+ AV_CODEC_ID_GSM_MS, { as found in WAV }
+ AV_CODEC_ID_ATRAC3,
+ AV_CODEC_ID_APE,
+ AV_CODEC_ID_NELLYMOSER,
+ AV_CODEC_ID_MUSEPACK8,
+ AV_CODEC_ID_SPEEX,
+ AV_CODEC_ID_WMAVOICE,
+ AV_CODEC_ID_WMAPRO,
+ AV_CODEC_ID_WMALOSSLESS,
+ AV_CODEC_ID_ATRAC3P,
+ AV_CODEC_ID_EAC3,
+ AV_CODEC_ID_SIPR,
+ AV_CODEC_ID_MP1,
+ AV_CODEC_ID_TWINVQ,
+ AV_CODEC_ID_TRUEHD,
+ AV_CODEC_ID_MP4ALS,
+ AV_CODEC_ID_ATRAC1,
+ AV_CODEC_ID_BINKAUDIO_RDFT,
+ AV_CODEC_ID_BINKAUDIO_DCT,
+ AV_CODEC_ID_AAC_LATM,
+ AV_CODEC_ID_QDMC,
+ AV_CODEC_ID_CELT,
+ AV_CODEC_ID_G723_1,
+ AV_CODEC_ID_G729,
+ AV_CODEC_ID_8SVX_EXP,
+ AV_CODEC_ID_8SVX_FIB,
+ AV_CODEC_ID_BMV_AUDIO,
+ AV_CODEC_ID_RALF,
+ AV_CODEC_ID_IAC,
+ AV_CODEC_ID_ILBC,
+ AV_CODEC_ID_OPUS,
+ AV_CODEC_ID_COMFORT_NOISE,
+ AV_CODEC_ID_TAK,
+ AV_CODEC_ID_PAF_AUDIO,
+ AV_CODEC_ID_ON2AVC,
+ AV_CODEC_ID_DSS_SP,
+ AV_CODEC_ID_CODEC2,
+
+ AV_CODEC_ID_FFWAVESYNTH = $15800,
+ AV_CODEC_ID_SONIC,
+ AV_CODEC_ID_SONIC_LS,
+ AV_CODEC_ID_EVRC,
+ AV_CODEC_ID_SMV,
+ AV_CODEC_ID_DSD_LSBF,
+ AV_CODEC_ID_DSD_MSBF,
+ AV_CODEC_ID_DSD_LSBF_PLANAR,
+ AV_CODEC_ID_DSD_MSBF_PLANAR,
+ AV_CODEC_ID_4GV,
+ AV_CODEC_ID_INTERPLAY_ACM,
+ AV_CODEC_ID_XMA1,
+ AV_CODEC_ID_XMA2,
+ AV_CODEC_ID_DST,
+ AV_CODEC_ID_ATRAC3AL,
+ AV_CODEC_ID_ATRAC3PAL,
+ AV_CODEC_ID_DOLBY_E,
+ AV_CODEC_ID_APTX,
+ AV_CODEC_ID_APTX_HD,
+ AV_CODEC_ID_SBC,
+
+ //* subtitle codecs */
+ AV_CODEC_ID_FIRST_SUBTITLE = $17000, ///< A dummy ID pointing at the start of subtitle codecs.
+ AV_CODEC_ID_DVD_SUBTITLE = $17000,
+ AV_CODEC_ID_DVB_SUBTITLE,
+ AV_CODEC_ID_TEXT, ///< raw UTF-8 text
+ AV_CODEC_ID_XSUB,
+ AV_CODEC_ID_SSA,
+ AV_CODEC_ID_MOV_TEXT,
+ AV_CODEC_ID_HDMV_PGS_SUBTITLE,
+ AV_CODEC_ID_DVB_TELETEXT,
+ AV_CODEC_ID_SRT,
+ AV_CODEC_ID_MICRODVD = $17800,
+ AV_CODEC_ID_EIA_608,
+ AV_CODEC_ID_JACOSUB,
+ AV_CODEC_ID_SAMI,
+ AV_CODEC_ID_REALTEXT,
+ AV_CODEC_ID_STL,
+ AV_CODEC_ID_SUBVIEWER1,
+ AV_CODEC_ID_SUBVIEWER,
+ AV_CODEC_ID_SUBRIP,
+ AV_CODEC_ID_WEBVTT,
+ AV_CODEC_ID_MPL2,
+ AV_CODEC_ID_VPLAYER,
+ AV_CODEC_ID_PJS,
+ AV_CODEC_ID_ASS,
+ AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
+
+ //* other specific kind of codecs (generally used for attachments) */
+ AV_CODEC_ID_FIRST_UNKNOWN = $18000, ///< A dummy ID pointing at the start of various fake codecs.
+ AV_CODEC_ID_TTF = $18000,
+
+ AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream.
+ AV_CODEC_ID_BINTEXT = $18800,
+ AV_CODEC_ID_XBIN,
+ AV_CODEC_ID_IDF,
+ AV_CODEC_ID_OTF,
+ AV_CODEC_ID_SMPTE_KLV,
+ AV_CODEC_ID_DVD_NAV,
+ AV_CODEC_ID_TIMED_ID3,
+ AV_CODEC_ID_BIN_DATA,
+
+ AV_CODEC_ID_PROBE = $19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
+
+ AV_CODEC_ID_MPEG2TS = $20000, (**< _FAKE_ codec to indicate a raw MPEG-2 TS
+ * stream (only used by libavformat) *)
+ AV_CODEC_ID_MPEG4SYSTEMS = $20001, (**< _FAKE_ codec to indicate a MPEG-4 Systems
+ * stream (only used by libavformat) *)
+ AV_CODEC_ID_FFMETADATA = $21000, ///< Dummy codec for streams containing only metadata information.
+ AV_CODEC_ID_WRAPPED_AVFRAME = $21001 ///< Passthrough codec, AVFrames wrapped in AVPacket
+ );
+
+type
+ TCodecType = TAVMediaType;
+
+const
+ CODEC_TYPE_UNKNOWN = AVMEDIA_TYPE_UNKNOWN;
+ CODEC_TYPE_VIDEO = AVMEDIA_TYPE_VIDEO;
+ CODEC_TYPE_AUDIO = AVMEDIA_TYPE_AUDIO;
+ CODEC_TYPE_DATA = AVMEDIA_TYPE_DATA;
+ CODEC_TYPE_SUBTITLE = AVMEDIA_TYPE_SUBTITLE;
+ CODEC_TYPE_ATTACHMENT = AVMEDIA_TYPE_ATTACHMENT;
+ CODEC_TYPE_NB = AVMEDIA_TYPE_NB;
+
+(**
+ * This struct describes the properties of a single codec described by an
+ * AVCodecID.
+ * @see avcodec_descriptor_get()
+ *)
+type
+
+ (**
+ * AVProfile.
+ *)
+ PAVProfile = ^TAVProfile;
+ TAVProfile = record
+ profile: cint;
+ name: {const} PAnsiChar; ///< short name for the profile
+ end; {TAVProfile}
+
+ PAVCodecHWConfig = ^TAVCodecHWConfig;
+ TAVCodecHWConfig = record
+ (**
+ * A hardware pixel format which the codec can use.
+ *)
+ pix_fmt: TAVPixelFormat;
+ (**
+ * Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible
+ * setup methods which can be used with this configuration.
+ *)
+ methods: cint;
+ (**
+ * The device type associated with the configuration.
+ *
+ * Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and
+ * AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused.
+ *)
+ device_type: pointer; {TAVHWDeviceType}
+ end; {TAVCodecHWConfig}
+
+ PAVCodecDescriptor = ^TAVCodecDescriptor;
+ TAVCodecDescriptor = record
+ id: TAVCodecID;
+ type_: TAVMediaType;
+ (**
+ * Name of the codec described by this descriptor. It is non-empty and
+ * unique for each codec descriptor. It should contain alphanumeric
+ * characters and '_' only.
+ *)
+ name: PAnsiChar;
+ (**
+ * A more descriptive name for this codec. May be NULL.
+ *)
+ long_name: PAnsiChar;
+ (**
+ * Codec properties, a combination of AV_CODEC_PROP_* flags.
+ *)
+ props: cint;
+
+ (**
+ * MIME type(s) associated with the codec.
+ * May be NULL; if not, a NULL-terminated array of MIME types.
+ * The first item is always non-NULL and is the preferred MIME type.
+ *)
+ mime_types: PAnsiChar;
+
+ (**
+ * If non-NULL, an array of profiles recognized for this codec.
+ * Terminated with FF_PROFILE_UNKNOWN.
+ *)
+ profiles: PAVProfile;
+ end;
+
+const
+(**
+ * Codec uses only intra compression.
+ * Video and audio codecs only.
+ *)
+ AV_CODEC_PROP_INTRA_ONLY = 1 << 0;
+(**
+ * Codec supports lossy compression. Audio and video codecs only.
+ * @note a codec may support both lossy and lossless
+ * compression modes
+ *)
+ AV_CODEC_PROP_LOSSY = 1 << 1;
+(**
+ * Codec supports lossless compression. Audio and video codecs only.
+ *)
+ AV_CODEC_PROP_LOSSLESS = 1 << 2;
+(**
+ * Codec supports frame reordering. That is, the coded order (the order in which
+ * the encoded packets are output by the encoders / stored / input to the
+ * decoders) may be different from the presentation order of the corresponding
+ * frames.
+ *
+ * For codecs that do not have this property set, PTS and DTS should always be
+ * equal.
+ *)
+ AV_CODEC_PROP_REORDER = 1 << 3;
+(**
+ * Subtitle codec is bitmap based
+ * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field.
+ *)
+ AV_CODEC_PROP_BITMAP_SUB = 1 << 16;
+(**
+ * Subtitle codec is text based.
+ * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field.
+ *)
+ AV_CODEC_PROP_TEXT_SUB = 1 << 17;
+
+(**
+ * @ingroup lavc_decoding
+ * Required number of additionally allocated bytes at the end of the input bitstream for decoding.
+ * This is mainly needed because some optimized bitstream readers read
+ * 32 or 64 bit at once and could read over the end.
+ * Note: If the first 23 bits of the additional bytes are not 0, then damaged
+ * MPEG bitstreams could cause overread and segfault.
+ *)
+ AV_INPUT_BUFFER_PADDING_SIZE = 64;
+
+(**
+ * @ingroup lavc_decoding
+ * minimum encoding buffer size.
+ * Used to avoid some checks during header writing.
+ *)
+ AV_INPUT_BUFFER_MIN_SIZE = 16384;
+
+type
+
+(**
+ * @ingroup lavc_decoding
+ *)
+ TAVDiscard = (
+ (* We leave some space between them for extensions (drop some
+ * keyframes for intra-only or drop just some bidir frames).
+ *)
+ AVDISCARD_NONE = -16, ///< discard nothing
+ AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
+ AVDISCARD_NONREF = 8, ///< discard all non reference
+ AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
+ AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
+ AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
+ AVDISCARD_ALL = 48 ///< discard all
+ );
+
+{ removed, kept for the moment
+ TAVColorPrimaries = (
+ AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
+ AVCOL_PRI_UNSPECIFIED = 2,
+ AVCOL_PRI_BT470M = 4,
+ AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
+ AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
+ AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above
+ AVCOL_PRI_FILM = 8,
+ AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020
+ AVCOL_PRI_NB ///< Not part of ABI
+ );
+
+ TAVColorTransferCharacteristic = (
+ AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361
+ AVCOL_TRC_UNSPECIFIED = 2,
+ AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
+ AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG
+ AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
+ AVCOL_TRC_SMPTE240M = 7,
+ AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics"
+ AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)"
+ AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt( 10 ) : 1 range)"
+ AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4
+ AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut
+ AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC)
+ AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10 bit system
+ AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12 bit system
+ AVCOL_TRC_NB ///< Not part of ABI
+ );
+
+(**
+ * X X 3 4 X X are luma samples,
+ * 1 2 1-6 are possible chroma positions
+ * X X 5 6 X 0 is undefined/unknown position
+ *)
+ TAVChromaLocation = (
+ AVCHROMA_LOC_UNSPECIFIED = 0,
+ AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default
+ AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263
+ AVCHROMA_LOC_TOPLEFT = 3, ///< DV
+ AVCHROMA_LOC_TOP = 4,
+ AVCHROMA_LOC_BOTTOMLEFT = 5,
+ AVCHROMA_LOC_BOTTOM = 6,
+ AVCHROMA_LOC_NB ///< Not part of ABI
+ );
+}
+ TAVAudioServiceType =(
+ AV_AUDIO_SERVICE_TYPE_MAIN = 0,
+ AV_AUDIO_SERVICE_TYPE_EFFECTS = 1,
+ AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
+ AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3,
+ AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4,
+ AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5,
+ AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6,
+ AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7,
+ AV_AUDIO_SERVICE_TYPE_KARAOKE = 8,
+ AV_AUDIO_SERVICE_TYPE_NB ///< Not part of ABI
+ );
+
+(**
+ * @ingroup lavc_decoding
+ *)
+ PRcOverride = ^TRcOverride;
+ TRcOverride = record {16}
+ start_frame: cint;
+ end_frame: cint;
+ qscale: cint; // if this is 0 then quality_factor will be used instead
+ quality_factor: cfloat;
+ end;
+
+const
+(* encoding support
+ These flags can be passed in AVCodecContext.flags before initialization.
+ Note: Not everything is supported yet.
+*)
+
+(**
+ * Allow decoders to produce frames with data planes that are not aligned
+ * to CPU requirements (e.g. due to cropping).
+ *)
+ AV_CODEC_FLAG_UNALIGNED = $0001; // (1 << 0)
+(**
+ * Use fixed qscale.
+ *)
+ AV_CODEC_FLAG_QSCALE = $0002; // (1 << 1)
+(**
+ * 4 MV per MB allowed / advanced prediction for H.263.
+ *)
+ AV_CODEC_FLAG_4MV = $0004; // (1 << 2)
+(**
+ * Output even those frames that might be corrupted.
+ *)
+ AV_CODEC_FLAG_OUTPUT_CORRUPT = $0008; // (1 << 3)
+(**
+ * Use qpel MC.
+ *)
+ AV_CODEC_FLAG_QPEL = $0010; // (1 << 4)
+(**
+ * Use internal 2pass ratecontrol in first pass mode.
+ *)
+ AV_CODEC_FLAG_PASS1 = $0200; // (1 << 9)
+(**
+ * Use internal 2pass ratecontrol in second pass mode.
+ *)
+ AV_CODEC_FLAG_PASS2 = $0400; // (1 << 10)
+(**
+ * loop filter.
+ *)
+ AV_CODEC_FLAG_LOOP_FILTER = $0800; // (1 << 11)
+(**
+ * Only decode/encode grayscale.
+ *)
+ AV_CODEC_FLAG_GRAY = $2000; // (1 << 13)
+(**
+ * error[?] variables will be set during encoding.
+ *)
+ AV_CODEC_FLAG_PSNR = $8000; // (1 << 15)
+(**
+ * Input bitstream might be truncated at a random location
+ * instead of only at frame boundaries.
+ *)
+ AV_CODEC_FLAG_TRUNCATED = $10000; // (1 << 16)
+(**
+ * Use interlaced DCT.
+ *)
+ AV_CODEC_FLAG_INTERLACED_DCT = $40000; // (1 << 18)
+(**
+ * Force low delay.
+ *)
+ AV_CODEC_FLAG_LOW_DELAY = $80000; // (1 << 19)
+(**
+ * Place global headers in extradata instead of every keyframe.
+ *)
+ AV_CODEC_FLAG_GLOBAL_HEADER = $400000; // (1 << 22)
+(**
+ * Use only bitexact stuff (except (I)DCT).
+ *)
+ AV_CODEC_FLAG_BITEXACT = $800000; // (1 << 23)
+(* Fx : Flag for H.263+ extra options *)
+(**
+ * H.263 advanced intra coding / MPEG-4 AC prediction
+ *)
+ AV_CODEC_FLAG_AC_PRED = $1000000; // (1 << 24)
+(**
+ * interlaced motion estimation
+ *)
+ AV_CODEC_FLAG_INTERLACED_ME = $20000000; // (1 << 29)
+ AV_CODEC_FLAG_CLOSED_GOP = $80000000; // (1U << 31)
+
+(**
+ * Allow non spec compliant speedup tricks.
+ *)
+ AV_CODEC_FLAG2_FAST = $0001; // (1 << 0)
+(**
+ * Skip bitstream encoding.
+ *)
+ AV_CODEC_FLAG2_NO_OUTPUT = $0004; // (1 << 2)
+(**
+ * Place global headers at every keyframe instead of in extradata.
+ *)
+ AV_CODEC_FLAG2_LOCAL_HEADER = $0008; // (1 << 3)
+
+(**
+ * timecode is in drop frame format. DEPRECATED!!!!
+ *)
+ AV_CODEC_FLAG2_DROP_FRAME_TIMECODE = $2000; // (1 << 13)
+
+(**
+ * Input bitstream might be truncated at a packet boundaries
+ * instead of only at frame boundaries.
+ *)
+ AV_CODEC_FLAG2_CHUNKS = $8000; // (1 << 15)
+(**
+ * Discard cropping information from SPS.
+ *)
+ AV_CODEC_FLAG2_IGNORE_CROP = $10000; // (1 << 16)
+
+(**
+ * Show all frames before the first keyframe
+ *)
+ AV_CODEC_FLAG2_SHOW_ALL = $400000; // (1 << 22)
+(**
+ * Export motion vectors through frame side data
+ *)
+ AV_CODEC_FLAG2_EXPORT_MVS = $10000000; // (1 << 28)
+(**
+ * Do not skip samples and export skip information as frame side data
+ *)
+ AV_CODEC_FLAG2_SKIP_MANUAL = $20000000; // (1 << 29)
+(**
+ * Do not reset ASS ReadOrder field on flush (subtitles decoding)
+ *)
+ AV_CODEC_FLAG2_RO_FLUSH_NOOP = $40000000;
+
+(* Unsupported options :
+ * Syntax Arithmetic coding (SAC)
+ * Reference Picture Selection
+ * Independent Segment Decoding *)
+(* /Fx *)
+(* codec capabilities *)
+
+(**
+ * Decoder can use draw_horiz_band callback.
+ *)
+ AV_CODEC_CAP_DRAW_HORIZ_BAND = $0001; // (1 << 0)
+(**
+ * Codec uses get_buffer() for allocating buffers and supports custom allocators.
+ * If not set, it might not use get_buffer() at all or use operations that
+ * assume the buffer was allocated by avcodec_default_get_buffer.
+ *)
+ AV_CODEC_CAP_DR1 = $0002; // (1 << 1)
+ AV_CODEC_CAP_TRUNCATED = $0008; // (1 << 3)
+(**
+ * Encoder or decoder requires flushing with NULL input at the end in order to
+ * give the complete and correct output.
+ *
+ * NOTE: If this flag is not set, the codec is guaranteed to never be fed with
+ * with NULL data. The user can still send NULL data to the public encode
+ * or decode function, but libavcodec will not pass it along to the codec
+ * unless this flag is set.
+ *
+ * Decoders:
+ * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL,
+ * avpkt->size=0 at the end to get the delayed data until the decoder no longer
+ * returns frames.
+ *
+ * Encoders:
+ * The encoder needs to be fed with NULL data at the end of encoding until the
+ * encoder no longer returns data.
+ *
+ * NOTE: For encoders implementing the AVCodec.encode2() function, setting this
+ * flag also means that the encoder must set the pts and duration for
+ * each output packet. If this flag is not set, the pts and duration will
+ * be determined by libavcodec from the input frame.
+ *)
+ AV_CODEC_CAP_DELAY = $0020; // (1 << 5)
+(**
+ * Codec can be fed a final frame with a smaller size.
+ * This can be used to prevent truncation of the last audio samples.
+ *)
+ AV_CODEC_CAP_SMALL_LAST_FRAME = $0040; // (1 << 6)
+
+(**
+ * Codec can output multiple frames per AVPacket
+ * Normally demuxers return one frame at a time, demuxers which do not do
+ * are connected to a parser to split what they return into proper frames.
+ * This flag is reserved to the very rare category of codecs which have a
+ * bitstream that cannot be split into frames without timeconsuming
+ * operations like full decoding. Demuxers carrying such bitstreams thus
+ * may return multiple frames in a packet. This has many disadvantages like
+ * prohibiting stream copy in many cases thus it should only be considered
+ * as a last resort.
+ *)
+ AV_CODEC_CAP_SUBFRAMES = $0100; // (1 << 8)
+(**
+ * Codec is experimental and is thus avoided in favor of non experimental
+ * encoders
+ *)
+ AV_CODEC_CAP_EXPERIMENTAL = $0200; // (1 << 9)
+(**
+ * Codec should fill in channel configuration and samplerate instead of container
+ *)
+ AV_CODEC_CAP_CHANNEL_CONF = $0400; // (1 << 10)
+(**
+ * Codec supports frame-level multithreading.
+ *)
+ AV_CODEC_CAP_FRAME_THREADS = $1000; // (1 << 12)
+(**
+ * Codec supports slice-based (or partition-based) multithreading.
+ *)
+ AV_CODEC_CAP_SLICE_THREADS = $2000; // (1 << 13)
+(**
+ * Codec supports changed parameters at any point.
+ *)
+ AV_CODEC_CAP_PARAM_CHANGE = $4000; // (1 << 14)
+(**
+ * Codec supports avctx->thread_count == 0 (auto).
+ *)
+ AV_CODEC_CAP_AUTO_THREADS = $8000; // (1 << 15)
+(**
+ * Audio encoder supports receiving a different number of samples in each call.
+ *)
+ AV_CODEC_CAP_VARIABLE_FRAME_SIZE = $10000; // (1 << 16)
+(**
+ * Decoder is not a preferred choice for probing.
+ * This indicates that the decoder is not a good choice for probing.
+ * It could for example be an expensive to spin up hardware decoder,
+ * or it could simply not provide a lot of useful information about
+ * the stream.
+ * A decoder marked with this flag should only be used as last resort
+ * choice for probing.
+ *)
+ AV_CODEC_CAP_AVOID_PROBING = $20000; // (1 << 17)
+
+(**
+ * Codec is intra only.
+ *)
+ AV_CODEC_CAP_INTRA_ONLY = $40000000;
+(**
+ * Codec is lossless.
+ *)
+ AV_CODEC_CAP_LOSSLESS = $80000000;
+
+(**
+ * Codec is backed by a hardware implementation. Typically used to
+ * identify a non-hwaccel hardware decoder. For information about hwaccels, use
+ * avcodec_get_hw_config() instead.
+ *)
+ AV_CODEC_CAP_HARDWARE = $40000;
+
+(**
+ * Codec is potentially backed by a hardware implementation, but not
+ * necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the
+ * implementation provides some sort of internal fallback.
+ *)
+ AV_CODEC_CAP_HYBRID = $80000;
+
+(** Note bits 24-31 are reserved for codec specific use (H.264 ref0, MPEG-1 0mv, ...) *)
+
+(**
+ * The decoder will keep a reference to the frame and may reuse it later.
+ *)
+ AV_GET_BUFFER_FLAG_REF = 1 << 0;
+
+ FF_COMPRESSION_DEFAULT = -1;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ FF_PRED_LEFT = 0;
+ FF_PRED_PLANE = 1;
+ FF_PRED_MEDIAN = 2;
+{$ENDIF}
+
+ FF_CMP_SAD = 0;
+ FF_CMP_SSE = 1;
+ FF_CMP_SATD = 2;
+ FF_CMP_DCT = 3;
+ FF_CMP_PSNR = 4;
+ FF_CMP_BIT = 5;
+ FF_CMP_RD = 6;
+ FF_CMP_ZERO = 7;
+ FF_CMP_VSAD = 8;
+ FF_CMP_VSSE = 9;
+ FF_CMP_NSSE = 10;
+ FF_CMP_W53 = 11;
+ FF_CMP_W97 = 12;
+ FF_CMP_DCTMAX = 13;
+ FF_CMP_DCT264 = 14;
+ FF_CMP_MEDIAN_SAD = 15;
+ FF_CMP_CHROMA = 256;
+
+{$IFDEF FF_API_QUANT_BIAS}
+ FF_DEFAULT_QUANT_BIAS = 999999;
+{$ENDIF}
+
+ SLICE_FLAG_CODED_ORDER = $0001; ///< draw_horiz_band() is called in coded order instead of display
+ SLICE_FLAG_ALLOW_FIELD = $0002; ///< allow draw_horiz_band() with field slices (MPEG-2 field pics)
+ SLICE_FLAG_ALLOW_PLANE = $0004; ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
+
+ FF_MB_DECISION_SIMPLE = 0; ///< uses mb_cmp
+ FF_MB_DECISION_BITS = 1; ///< chooses the one which needs the fewest bits
+ FF_MB_DECISION_RD = 2; ///< rate distortion
+
+{$IFDEF FF_API_CODER_TYPE}
+ FF_CODER_TYPE_VLC = 0;
+ FF_CODER_TYPE_AC = 1;
+ FF_CODER_TYPE_RAW = 2;
+ FF_CODER_TYPE_RLE = 3;
+{$ENDIF}
+ FF_BUG_AUTODETECT = 1; ///< autodetection
+ FF_BUG_XVID_ILACE = 4;
+ FF_BUG_UMP4 = 8;
+ FF_BUG_NO_PADDING = 16;
+ FF_BUG_AMV = 32;
+ FF_BUG_QPEL_CHROMA = 64;
+ FF_BUG_STD_QPEL = 128;
+ FF_BUG_QPEL_CHROMA2 = 256;
+ FF_BUG_DIRECT_BLOCKSIZE = 512;
+ FF_BUG_EDGE = 1024;
+ FF_BUG_HPEL_CHROMA = 2048;
+ FF_BUG_DC_CLIP = 4096;
+ FF_BUG_MS = 8192; ///< workaround various bugs in microsofts broken decoders
+ FF_BUG_TRUNCATED = 16384;
+ FF_BUG_IEDGE = 32768;
+
+ FF_COMPLIANCE_VERY_STRICT = 2; ///< strictly conform to an older more strict version of the spec or reference software
+ FF_COMPLIANCE_STRICT = 1; ///< strictly conform to all the things in the spec no matter what consequences
+ FF_COMPLIANCE_NORMAL = 0;
+ FF_COMPLIANCE_UNOFFICIAL = -1; ///< Allow unofficial extensions
+ FF_COMPLIANCE_EXPERIMENTAL = -2; ///< Allow nonstandardized experimental things.
+
+ FF_EC_GUESS_MVS = 1;
+ FF_EC_DEBLOCK = 2;
+ FF_EC_FAVOR_INTER = 256;
+
+ FF_DEBUG_PICT_INFO = 1;
+ FF_DEBUG_RC = 2;
+ FF_DEBUG_BITSTREAM = 4;
+ FF_DEBUG_MB_TYPE = 8;
+ FF_DEBUG_QP = 16;
+{$IFDEF FF_API_DEBUG_MV}
+(**
+ * @deprecated this option does nothing
+ *)
+ FF_DEBUG_MV = 32;
+{$ENDIF}
+ FF_DEBUG_DCT_COEFF = $00000040;
+ FF_DEBUG_SKIP = $00000080;
+ FF_DEBUG_STARTCODE = $00000100;
+ FF_DEBUG_ER = $00000400;
+ FF_DEBUG_MMCO = $00000800;
+ FF_DEBUG_BUGS = $00001000;
+{$IFDEF FF_API_DEBUG_MV}
+ FF_DEBUG_VIS_QP = $00002000;
+ FF_DEBUG_VIS_MB_TYPE = $00004000;
+{$ENDIF}
+ FF_DEBUG_BUFFERS = $00008000;
+ FF_DEBUG_THREADS = $00010000;
+ FF_DEBUG_GREEN_MD = $00800000;
+ FF_DEBUG_NOMC = $01000000;
+
+ FF_DEBUG_VIS_MV_P_FOR = $00000001; // visualize forward predicted MVs of P-frames
+ FF_DEBUG_VIS_MV_B_FOR = $00000002; // visualize forward predicted MVs of B-frames
+ FF_DEBUG_VIS_MV_B_BACK = $00000004; // visualize backward predicted MVs of B-frames
+
+(**
+ * Verify checksums embedded in the bitstream (could be of either encoded or
+ * decoded data, depending on the codec) and print an error message on mismatch.
+ * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the
+ * decoder returning an error.
+ *)
+ AV_EF_CRCCHECK = 1;
+ AV_EF_BITSTREAM = 2; ///< detect bitstream specification deviations
+ AV_EF_BUFFER = 4; ///< detect improper bitstream length
+ AV_EF_EXPLODE = 8; ///< abort decoding on minor error detection
+
+ AV_EF_IGNORE_ERR = 32768; ///< ignore errors and continue
+ AV_EF_CAREFUL = 65536; ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors
+ AV_EF_COMPLIANT = 131072; ///< consider all spec non compliances as errors
+ AV_EF_AGGRESSIVE = 262144; ///< consider things that a sane encoder should not do as an error
+
+ FF_DCT_AUTO = 0;
+ FF_DCT_FASTINT = 1;
+ FF_DCT_INT = 2;
+ FF_DCT_MMX = 3;
+ FF_DCT_MLIB = 4;
+ FF_DCT_ALTIVEC = 5;
+ FF_DCT_FAAN = 6;
+
+ FF_IDCT_AUTO = 0;
+ FF_IDCT_INT = 1;
+ FF_IDCT_SIMPLE = 2;
+ FF_IDCT_SIMPLEMMX = 3;
+ FF_IDCT_ARM = 7;
+ FF_IDCT_ALTIVEC = 8;
+ FF_IDCT_SIMPLEARM = 10;
+ FF_IDCT_XVID = 14;
+ FF_IDCT_SIMPLEARMV5TE= 16;
+ FF_IDCT_SIMPLEARMV6 = 17;
+ FF_IDCT_FAAN = 20;
+ FF_IDCT_SIMPLENEON = 22;
+ FF_IDCT_NONE = 24; (* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE *)
+ FF_IDCT_SIMPLEAUTO = 128;
+
+ FF_THREAD_FRAME = 1; ///< Decode more than one frame at once
+ FF_THREAD_SLICE = 2; ///< Decode more than one part of a single frame at once
+
+ FF_PROFILE_UNKNOWN = -99;
+ FF_PROFILE_RESERVED = -100;
+
+ FF_PROFILE_AAC_MAIN = 0;
+ FF_PROFILE_AAC_LOW = 1;
+ FF_PROFILE_AAC_SSR = 2;
+ FF_PROFILE_AAC_LTP = 3;
+ FF_PROFILE_AAC_HE = 4;
+ FF_PROFILE_AAC_HE_V2 = 28;
+ FF_PROFILE_AAC_LD = 22;
+ FF_PROFILE_AAC_ELD = 38;
+ FF_PROFILE_MPEG2_AAC_LOW = 128;
+ FF_PROFILE_MPEG2_AAC_HE = 131;
+
+ FF_PROFILE_DNXHD = 0;
+ FF_PROFILE_DNXHR_LB = 1;
+ FF_PROFILE_DNXHR_SQ = 2;
+ FF_PROFILE_DNXHR_HQ = 3;
+ FF_PROFILE_DNXHR_HQX = 4;
+ FF_PROFILE_DNXHR_444 = 5;
+
+ FF_PROFILE_DTS = 20;
+ FF_PROFILE_DTS_ES = 30;
+ FF_PROFILE_DTS_96_24 = 40;
+ FF_PROFILE_DTS_HD_HRA = 50;
+ FF_PROFILE_DTS_HD_MA = 60;
+ FF_PROFILE_DTS_EXPRESS = 70;
+
+ FF_PROFILE_MPEG2_422 = 0;
+ FF_PROFILE_MPEG2_HIGH = 1;
+ FF_PROFILE_MPEG2_SS = 2;
+ FF_PROFILE_MPEG2_SNR_SCALABLE = 3;
+ FF_PROFILE_MPEG2_MAIN = 4;
+ FF_PROFILE_MPEG2_SIMPLE= 5;
+
+ FF_PROFILE_H264_CONSTRAINED = (1 shl 9); // 8+1; constraint_set1_flag
+ FF_PROFILE_H264_INTRA = (1 shl 11); // 8+3; constraint_set3_flag
+
+ FF_PROFILE_H264_BASELINE = 66;
+ FF_PROFILE_H264_CONSTRAINED_BASELINE = (66 or FF_PROFILE_H264_CONSTRAINED);
+ FF_PROFILE_H264_MAIN = 77;
+ FF_PROFILE_H264_EXTENDED = 88;
+ FF_PROFILE_H264_HIGH = 100;
+ FF_PROFILE_H264_HIGH_10 = 110;
+ FF_PROFILE_H264_HIGH_10_INTRA = (110 or FF_PROFILE_H264_INTRA);
+ FF_PROFILE_H264_MULTIVIEW_HIGH = 118;
+ FF_PROFILE_H264_HIGH_422 = 122;
+ FF_PROFILE_H264_HIGH_422_INTRA = (122 or FF_PROFILE_H264_INTRA);
+ FF_PROFILE_H264_STEREO_HIGH = 128;
+ FF_PROFILE_H264_HIGH_444 = 144;
+ FF_PROFILE_H264_HIGH_444_PREDICTIVE = 244;
+ FF_PROFILE_H264_HIGH_444_INTRA = (244 or FF_PROFILE_H264_INTRA);
+ FF_PROFILE_H264_CAVLC_444 = 44;
+
+ FF_PROFILE_VC1_SIMPLE = 0;
+ FF_PROFILE_VC1_MAIN = 1;
+ FF_PROFILE_VC1_COMPLEX = 2;
+ FF_PROFILE_VC1_ADVANCED = 3;
+
+ FF_PROFILE_MPEG4_SIMPLE = 0;
+ FF_PROFILE_MPEG4_SIMPLE_SCALABLE = 1;
+ FF_PROFILE_MPEG4_CORE = 2;
+ FF_PROFILE_MPEG4_MAIN = 3;
+ FF_PROFILE_MPEG4_N_BIT = 4;
+ FF_PROFILE_MPEG4_SCALABLE_TEXTURE = 5;
+ FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION = 6;
+ FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE = 7;
+ FF_PROFILE_MPEG4_HYBRID = 8;
+ FF_PROFILE_MPEG4_ADVANCED_REAL_TIME = 9;
+ FF_PROFILE_MPEG4_CORE_SCALABLE = 10;
+ FF_PROFILE_MPEG4_ADVANCED_CODING = 11;
+ FF_PROFILE_MPEG4_ADVANCED_CORE = 12;
+ FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE = 13;
+ FF_PROFILE_MPEG4_SIMPLE_STUDIO = 14;
+ FF_PROFILE_MPEG4_ADVANCED_SIMPLE = 15;
+
+ FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 = 1;
+ FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 = 2;
+ FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION = 32768;
+ FF_PROFILE_JPEG2000_DCINEMA_2K = 3;
+ FF_PROFILE_JPEG2000_DCINEMA_4K = 4;
+
+ FF_PROFILE_VP9_0 = 0;
+ FF_PROFILE_VP9_1 = 1;
+ FF_PROFILE_VP9_2 = 2;
+ FF_PROFILE_VP9_3 = 3;
+
+ FF_PROFILE_HEVC_MAIN = 1;
+ FF_PROFILE_HEVC_MAIN_10 = 2;
+ FF_PROFILE_HEVC_MAIN_STILL_PICTURE = 3;
+ FF_PROFILE_HEVC_REXT = 4;
+
+ FF_PROFILE_AV1_MAIN = 0;
+ FF_PROFILE_AV1_HIGH = 1;
+ FF_PROFILE_AV1_PROFESSIONAL = 2;
+
+ FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT = 192;
+ FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT = 193;
+ FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT = 194;
+ FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS = 195;
+ FF_PROFILE_MJPEG_JPEG_LS = 247;
+
+ FF_PROFILE_SBC_MSBC = 1;
+
+
+ FF_LEVEL_UNKNOWN = -99;
+
+type
+
+ (**
+ * This structure describes the bitrate properties of an encoded bitstream. It
+ * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
+ * parameters for H.264/HEVC.
+ *)
+ PAVCPBProperties = ^TAVCPBProperties;
+ TAVCPBProperties = record
+ (**
+ * Maximum bitrate of the stream, in bits per second.
+ * Zero if unknown or unspecified.
+ *)
+ max_bitrate: cint;
+ (**
+ * Minimum bitrate of the stream, in bits per second.
+ * Zero if unknown or unspecified.
+ *)
+ min_bitrate: cint;
+ (**
+ * Average bitrate of the stream, in bits per second.
+ * Zero if unknown or unspecified.
+ *)
+ avg_bitrate: cint;
+
+ (**
+ * The size of the buffer to which the ratecontrol is applied, in bits.
+ * Zero if unknown or unspecified.
+ *)
+ buffer_size: cint;
+
+ (**
+ * The delay between the time the packet this structure is associated with
+ * is received and the time when it should be decoded, in periods of a 27MHz
+ * clock.
+ *
+ * UINT64_MAX when unknown or unspecified.
+ *)
+ vbv_delay: cuint64;
+ end; {TAVCPBProperties}
+
+ TAVPacketSideDataType = (
+ (**
+ * An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE
+ * bytes worth of palette. This side data signals that a new palette is
+ * present.
+ *)
+ AV_PKT_DATA_PALETTE,
+
+ (**
+ * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format
+ * that the extradata buffer was changed and the receiving side should
+ * act upon it appropriately. The new extradata is embedded in the side
+ * data buffer and should be immediately used for processing the current
+ * frame or packet.
+ *)
+ AV_PKT_DATA_NEW_EXTRADATA,
+
+ (**
+ * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
+ * @code
+ * u32le param_flags
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT)
+ * s32le channel_count
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT)
+ * u64le channel_layout
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
+ * s32le sample_rate
+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
+ * s32le width
+ * s32le height
+ * @endcode
+ *)
+ AV_PKT_DATA_PARAM_CHANGE,
+
+ (**
+ * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of
+ * structures with info about macroblocks relevant to splitting the
+ * packet into smaller packets on macroblock edges (e.g. as for RFC 2190).
+ * That is, it does not necessarily contain info about all macroblocks,
+ * as long as the distance between macroblocks in the info is smaller
+ * than the target payload size.
+ * Each MB info structure is 12 bytes, and is laid out as follows:
+ * @code
+ * u32le bit offset from the start of the packet
+ * u8 current quantizer at the start of the macroblock
+ * u8 GOB number
+ * u16le macroblock address within the GOB
+ * u8 horizontal MV predictor
+ * u8 vertical MV predictor
+ * u8 horizontal MV predictor for block number 3
+ * u8 vertical MV predictor for block number 3
+ * @endcode
+ *)
+ AV_PKT_DATA_H263_MB_INFO,
+
+ (**
+ * This side data should be associated with an audio stream and contains
+ * ReplayGain information in form of the AVReplayGain struct.
+ *)
+ AV_PKT_DATA_REPLAYGAIN,
+
+ (**
+ * This side data contains a 3x3 transformation matrix describing an affine
+ * transformation that needs to be applied to the decoded video frames for
+ * correct presentation.
+ *
+ * See libavutil/display.h for a detailed description of the data.
+ *)
+ AV_PKT_DATA_DISPLAYMATRIX,
+
+ (**
+ * This side data should be associated with a video stream and contains
+ * Stereoscopic 3D information in form of the AVStereo3D struct.
+ *)
+ AV_PKT_DATA_STEREO3D,
+
+ (**
+ * This side data should be associated with an audio stream and corresponds
+ * to enum AVAudioServiceType.
+ *)
+ AV_PKT_DATA_AUDIO_SERVICE_TYPE,
+
+ (**
+ * This side data contains quality related information from the encoder.
+ * @code
+ * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).
+ * u8 picture type
+ * u8 error count
+ * u16 reserved
+ * u64le[error count] sum of squared differences between encoder in and output
+ * @endcode
+ *)
+ AV_PKT_DATA_QUALITY_STATS,
+
+ (**
+ * This side data contains an integer value representing the stream index
+ * of a "fallback" track. A fallback track indicates an alternate
+ * track to use when the current track can not be decoded for some reason.
+ * e.g. no decoder available for codec.
+ *)
+ AV_PKT_DATA_FALLBACK_TRACK,
+
+ (**
+ * This side data corresponds to the AVCPBProperties struct.
+ *)
+ AV_PKT_DATA_CPB_PROPERTIES,
+
+ (**
+ * Recommmends skipping the specified number of samples
+ * @code
+ * u32le number of samples to skip from start of this packet
+ * u32le number of samples to skip from end of this packet
+ * u8 reason for start skip
+ * u8 reason for end skip (0=padding silence, 1=convergence)
+ * @endcode
+ *)
+ AV_PKT_DATA_SKIP_SAMPLES,
+
+ (**
+ * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that
+ * the packet may contain "dual mono" audio specific to Japanese DTV
+ * and if it is true, recommends only the selected channel to be used.
+ * @code
+ * u8 selected channels (0=mail/left, 1=sub/right, 2=both)
+ * @endcode
+ *)
+ AV_PKT_DATA_JP_DUALMONO,
+
+ (**
+ * A list of zero terminated key/value strings. There is no end marker for
+ * the list, so it is required to rely on the side data size to stop.
+ *)
+ AV_PKT_DATA_STRINGS_METADATA,
+
+ (**
+ * Subtitle event position
+ * @code
+ * u32le x1
+ * u32le y1
+ * u32le x2
+ * u32le y2
+ * @endcode
+ *)
+ AV_PKT_DATA_SUBTITLE_POSITION,
+
+ (**
+ * Data found in BlockAdditional element of matroska container. There is
+ * no end marker for the data, so it is required to rely on the side data
+ * size to recognize the end. 8 byte id (as found in BlockAddId) followed
+ * by data.
+ *)
+ AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
+
+ (**
+ * The optional first identifier line of a WebVTT cue.
+ *)
+ AV_PKT_DATA_WEBVTT_IDENTIFIER,
+
+ (**
+ * The optional settings (rendering instructions) that immediately
+ * follow the timestamp specifier of a WebVTT cue.
+ *)
+ AV_PKT_DATA_WEBVTT_SETTINGS,
+
+ (**
+ * A list of zero terminated key/value strings. There is no end marker for
+ * the list, so it is required to rely on the side data size to stop. This
+ * side data includes updated metadata which appeared in the stream.
+ *)
+ AV_PKT_DATA_METADATA_UPDATE,
+
+ (**
+ * MPEGTS stream ID, this is required to pass the stream ID
+ * information from the demuxer to the corresponding muxer.
+ *)
+ AV_PKT_DATA_MPEGTS_STREAM_ID,
+
+ (**
+ * Mastering display metadata (based on SMPTE-2086:2014). This metadata
+ * should be associated with a video stream and contains data in the form
+ * of the AVMasteringDisplayMetadata struct.
+ *)
+ AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
+
+ (**
+ * This side data should be associated with a video stream and corresponds
+ * to the AVSphericalMapping structure.
+ *)
+ AV_PKT_DATA_SPHERICAL,
+
+ (**
+ * Content light level (based on CTA-861.3). This metadata should be
+ * associated with a video stream and contains data in the form of the
+ * AVContentLightMetadata struct.
+ *)
+ AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
+
+ (**
+ * ATSC A53 Part 4 Closed Captions. This metadata should be associated with
+ * a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data.
+ * The number of bytes of CC data is AVPacketSideData.size.
+ *)
+ AV_PKT_DATA_A53_CC,
+
+ (**
+ * This side data is encryption initialization data.
+ * The format is not part of ABI, use av_encryption_init_info_* methods to
+ * access.
+ */
+ AV_PKT_DATA_ENCRYPTION_INIT_INFO,
+
+ /**
+ * This side data contains encryption info for how to decrypt the packet.
+ * The format is not part of ABI, use av_encryption_info_* methods to access.
+ */
+ AV_PKT_DATA_ENCRYPTION_INFO,
+
+ /**
+ * The number of side data types.
+ * This is not part of the public API/ABI in the sense that it may
+ * change when new side data types are added.
+ * This must stay the last enum value.
+ * If its value becomes huge, some code using it
+ * needs to be updated as it assumes it to be smaller than other limits.
+ *)
+ AV_PKT_DATA_NB
+ );
+
+ PAVPacketSideData = ^TAVPacketSideData;
+ TAVPacketSideData = record
+ data: PByte;
+ size: cint;
+ type_: TAVPacketSideDataType;
+ end;
+
+(**
+ * This structure stores compressed data. It is typically exported by demuxers
+ * and then passed as input to decoders, or received as output from encoders and
+ * then passed to muxers.
+ *
+ * For video, it should typically contain one compressed frame. For audio it may
+ * contain several compressed frames. Encoders are allowed to output empty
+ * packets, with no compressed data, containing only side data
+ * (e.g. to update some stream parameters at the end of encoding).
+ *
+ * AVPacket is one of the few structs in FFmpeg, whose size is a part of public
+ * ABI. Thus it may be allocated on stack and no new fields can be added to it
+ * without libavcodec and libavformat major bump.
+ *
+ * The semantics of data ownership depends on the buf field.
+ * If it is set, the packet data is dynamically allocated and is
+ * valid indefinitely until a call to av_packet_unref() reduces the
+ * reference count to 0.
+ *
+ * If the buf field is not set av_packet_ref() would make a copy instead
+ * of increasing the reference count.
+ *
+ * The side data is always allocated with av_malloc(), copied by
+ * av_packet_ref() and freed by av_packet_unref().
+ *
+ * @see av_packet_ref
+ * @see av_packet_unref
+ *)
+ PPAVPacket= ^PAVPacket;
+ PAVPacket = ^TAVPacket;
+ TAVPacket = record
+ (**
+ * A reference to the reference-counted buffer where the packet data is
+ * stored.
+ * May be NULL, then the packet data is not reference-counted.
+ *)
+ buf: PAVBufferRef;
+ (*
+ * Presentation timestamp in AVStream->time_base units; the time at which
+ * the decompressed packet will be presented to the user.
+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
+ * pts MUST be larger or equal to dts as presentation cannot happen before
+ * decompression, unless one wants to view hex dumps. Some formats misuse
+ * the terms dts and pts/cts to mean something different. Such timestamps
+ * must be converted to true pts/dts before they are stored in AVPacket.
+ *)
+ pts: cint64;
+ (*
+ * Decompression timestamp in AVStream->time_base units; the time at which
+ * the packet is decompressed.
+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
+ *)
+ dts: cint64;
+ data: PByteArray;
+ size: cint;
+ stream_index: cint;
+ (**
+ * A combination of AV_PKT_FLAG values
+ *)
+ flags: cint;
+ (**
+ * Additional packet data that can be provided by the container.
+ * Packet can contain several types of side information.
+ *)
+ side_data: PAVPacketSideData;
+ side_data_elems: cint;
+
+ (*
+ * Duration of this packet in AVStream->time_base units, 0 if unknown.
+ * Equals next_pts - this_pts in presentation order.
+ *)
+ duration: cint64;
+
+ pos: cint64; // byte position in stream, -1 if unknown
+
+{$IFDEF FF_API_CONVERGENCE_DURATION}
+ (*
+ * @deprecated Same as the duration field, but as int64_t. This was required
+ * for Matroska subtitles, whose duration values could overflow when the
+ * duration field was still an int.
+ *)
+ convergence_duration: cint64; {deprecated}
+{$ENDIF}
+ end; {TAVPacket}
+
+const
+ AV_PKT_FLAG_KEY = $0001; ///< The packet contains a keyframe
+ AV_PKT_FLAG_CORRUPT = $0002; ///< The packet content is corrupted
+ (**
+ * Flag is used to discard packets which are required to maintain valid
+ * decoder state but are not required for output and should be dropped
+ * after decoding.
+ **)
+ AV_PKT_FLAG_DISCARD = $0004;
+ (**
+ * The packet comes from a trusted source.
+ *
+ * Otherwise-unsafe constructs such as arbitrary pointers to data
+ * outside the packet may be followed.
+ *)
+ AV_PKT_FLAG_TRUSTED = $0008;
+ (**
+ * Flag is used to indicate packets that contain frames that can
+ * be discarded by the decoder. I.e. Non-reference frames.
+ *)
+ AV_PKT_FLAG_DISPOSABLE = $0010;
+
+ AV_NUM_DATA_POINTERS = 8;
+
+ AV_PKT_DATA_QUALITY_FACTOR = AV_PKT_DATA_QUALITY_STATS; //DEPRECATED
+
+type
+ AVSideDataParamChangeFlags = (
+ AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = $0001,
+ AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = $0002,
+ AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = $0004,
+ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = $0008
+ );
+
+{ This is removed in avcodec.h. For the time being (2013) only commented
+const
+ FF_DECODE_ERROR_INVALID_BITSTREAM = 1;
+ FF_DECODE_ERROR_MISSING_REFERENCE = 2;
+}
+
+
+{ This is removed in avcodec.h. For the time being (2013) only commented
+(**
+ * This structure describes decoded (raw) audio or video data.
+ *
+ * AVFrame must be allocated using avcodec_alloc_frame() and freed with
+ * avcodec_free_frame(). Note that this allocates only the AVFrame itself. The
+ * buffers for the data must be managed through other means.
+ *
+ * AVFrame is typically allocated once and then reused multiple times to hold
+ * different data (e.g. a single AVFrame to hold frames received from a
+ * decoder). In such a case, avcodec_get_frame_defaults() should be used to
+ * reset the frame to its original clean state before it is reused again.
+ *
+ * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
+ * to the end with a minor bump.
+ * Similarly fields that are marked as to be only accessed by
+ * av_opt_ptr() can be reordered. This allows 2 forks to add fields
+ * without breaking compatibility with each other.
+ *)
+ PAVFrame = ^TAVFrame;
+ TAVFrame = record
+ (**
+ * pointer to the picture/channel planes.
+ * This might be different from the first allocated byte
+ * - encoding: Set by user
+ * - decoding: set by AVCodecContext.get_buffer()
+ *)
+ data: array [0..AV_NUM_DATA_POINTERS - 1] of pbyte;
+
+ (**
+ * Size, in bytes, of the data for each picture/channel plane.
+ *
+ * For audio, only linesize[0] may be set. For planar audio, each channel
+ * plane must be the same size.
+ *
+ * - encoding: Set by user
+ * - decoding: set by AVCodecContext.get_buffer()
+ *)
+ linesize: array [0..AV_NUM_DATA_POINTERS - 1] of cint;
+
+ (**
+ * pointers to the data planes/channels.
+ *
+ * For video, this should simply point to data[].
+ *
+ * For planar audio, each channel has a separate data pointer, and
+ * linesize[0] contains the size of each channel buffer.
+ * For packed audio, there is just one data pointer, and linesize[0]
+ * contains the total size of the buffer for all channels.
+ *
+ * Note: Both data and extended_data will always be set by get_buffer(),
+ * but for planar audio with more channels that can fit in data,
+ * extended_data must be used by the decoder in order to access all
+ * channels.
+ *
+ * encoding: set by user
+ * decoding: set by AVCodecContext.get_buffer()
+ *)
+ extended_data: pointer of pbyte;
+
+ (**
+ * width and height of the video frame
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ width, height: cint;
+
+ (**
+ * number of audio samples (per channel) described by this frame
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ nb_samples: cint;
+
+ (**
+ * format of the frame, -1 if unknown or unset
+ * Values correspond to enum AVPixelFormat for video frames,
+ * enum AVSampleFormat for audio)
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ format: cint;
+
+ (**
+ * 1 -> keyframe, 0-> not
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ key_frame: cint;
+
+ (**
+ * Picture type of the frame, see ?_TYPE below.
+ * - encoding: Set by libavcodec. for coded_picture (and set by user for input).
+ * - decoding: Set by libavcodec.
+ *)
+ pict_type: TAVPictureType;
+
+ (**
+ * pointer to the first allocated byte of the picture. Can be used in get_buffer/release_buffer.
+ * This isn't used by libavcodec unless the default get/release_buffer() is used.
+ * - encoding:
+ * - decoding:
+ *)
+ base: array [0..AV_NUM_DATA_POINTERS - 1] of pbyte;
+
+ (**
+ * sample aspect ratio for the video frame, 0/1 if unknown/unspecified
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ sample_aspect_ratio: TAVRational;
+
+ (**
+ * presentation timestamp in time_base units (time when frame should be shown to user)
+ * If AV_NOPTS_VALUE then frame_rate = 1/time_base will be assumed.
+ * - encoding: MUST be set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ pts: cint64;
+
+ (**
+ * pts copied from the AVPacket that was decoded to produce this frame
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_pts: cint64;
+
+ (**
+ * dts copied from the AVPacket that triggered returning this frame
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_dts: cint64;
+
+ (**
+ * picture number in bitstream order
+ * - encoding: set by
+ * - decoding: Set by libavcodec.
+ *)
+ coded_picture_number: cint;
+
+ (**
+ * picture number in display order
+ * - encoding: set by
+ * - decoding: Set by libavcodec.
+ *)
+ display_picture_number: cint;
+
+ (**
+ * quality (between 1 (good) and FF_LAMBDA_MAX (bad))
+ * - encoding: Set by libavcodec. for coded_picture (and set by user for input).
+ * - decoding: Set by libavcodec.
+ *)
+ quality: cint;
+
+ (**
+ * is this picture used as reference
+ * The values for this are the same as the MpegEncContext.picture_structure
+ * variable, that is 1->top field, 2->bottom field, 3->frame/both fields.
+ * Set to 4 for delayed, non-reference frames.
+ * - encoding: unused
+ * - decoding: Set by libavcodec. (before get_buffer() call)).
+ *)
+ reference: cint;
+
+ (**
+ * QP table
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ qscale_table: PShortint;
+
+ (**
+ * QP store stride
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ qstride: cint;
+
+ (**
+ *
+ *)
+ qscale_type: cint;
+
+ (**
+ * mbskip_table[mb]>=1 if MB didn't change
+ * stride= mb_width = (width+15)>>4
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ mbskip_table: pbyte;
+
+ (**
+ * motion vector table
+ * @code
+ * example:
+ * int mv_sample_log2= 4 - motion_subsample_log2;
+ * int mb_width= (width+15)>>4;
+ * int mv_stride= (mb_width << mv_sample_log2) + 1;
+ * motion_val[direction][x + y*mv_stride][0->mv_x, 1->mv_y];
+ * @endcode
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ //int16_t (*motion_val[2])[2];
+ motion_val: array [0..1] of pointer;
+
+ (**
+ * macroblock type table
+ * mb_type_base + mb_width + 2
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ mb_type: PCuint;
+
+ (**
+ * DCT coefficients
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ dct_coeff: PsmallInt;
+
+ (**
+ * motion reference frame index
+ * the order in which these are stored can depend on the codec.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ ref_index: array [0..1] of PShortint;
+
+ (**
+ * for some private data of the user
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ opaque: pointer;
+
+ (**
+ * error
+ * - encoding: Set by libavcodec. if flags&CODEC_FLAG_PSNR.
+ * - decoding: unused
+ *)
+ error: array [0..AV_NUM_DATA_POINTERS - 1] of cuint64;
+
+ (**
+ * type of the buffer (to keep track of who has to deallocate data[*])
+ * - encoding: Set by the one who allocates it.
+ * - decoding: Set by the one who allocates it.
+ * Note: User allocated (direct rendering) & internal buffers cannot coexist currently.
+ *)
+ type_: cint;
+
+ (**
+ * When decoding, this signals how much the picture must be delayed.
+ * extra_delay = repeat_pict / (2*fps)
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ repeat_pict: cint;
+
+ (**
+ * The content of the picture is interlaced.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec. (default 0)
+ *)
+ interlaced_frame: cint;
+
+ (**
+ * If the content is interlaced, is top field displayed first.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ top_field_first: cint;
+
+ (**
+ * Tell user application that palette has changed from previous frame.
+ * - encoding: ??? (no palette-enabled encoder yet)
+ * - decoding: Set by libavcodec. (default 0).
+ *)
+ palette_has_changed: cint;
+
+ (**
+ * codec suggestion on buffer type if != 0
+ * - encoding: unused
+ * - decoding: Set by libavcodec. (before get_buffer() call)).
+ *)
+ buffer_hints: cint;
+
+ (**
+ * Pan scan.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ pan_scan: PAVPanScan;
+
+ (**
+ * reordered opaque 64bit number (generally a PTS) from AVCodecContext.reordered_opaque
+ * PTS but can be anything).
+ * The user sets AVCodecContext.reordered_opaque to represent the input at
+ * that time,
+ * the decoder reorders values as needed and sets AVFrame.reordered_opaque
+ * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
+ * @deprecated in favor of pkt_pts
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ reordered_opaque: cint64;
+
+ (**
+ * hardware accelerator private data (FFmpeg allocated)
+ * - encoding: unused
+ * - decoding: Set by libavcodec
+ *)
+ hwaccel_picture_private: pointer;
+
+ (**
+ * the AVCodecContext which ff_thread_get_buffer() was last called on
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ owner: PAVCodecContext;
+
+ (**
+ * used by multithreading to store frame-specific info
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ thread_opaque: pointer;
+
+ (**
+ * log2 of the size of the block which a single vector in motion_val represents:
+ * (4->16x16, 3->8x8, 2-> 4x4, 1-> 2x2)
+ * - encoding: unused
+ * - decoding: Set by libavcodec.
+ *)
+ motion_subsample_log2: cuint8;
+
+ (**
+ * Sample rate of the audio data.
+ *
+ * - encoding: unused
+ * - decoding: read by user
+ *)
+ sample_rate: cint;
+
+ (**
+ * Channel layout of the audio data.
+ *
+ * - encoding: unused
+ * - decoding: read by user.
+ *)
+ channel_layout: cuint64;
+
+ (**
+ * frame timestamp estimated using various heuristics, in stream time base
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_best_effort_timestamp(frame)
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ best_effort_timestamp: cint64;
+
+ (**
+ * reordered pos from the last AVPacket that has been input into the decoder
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_pkt_pos(frame)
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_pos: cint64;
+
+ (**
+ * duration of the corresponding packet, expressed in
+ * AVStream->time_base units, 0 if unknown.
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_pkt_duration(frame)
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_duration: cint64;
+
+ (**
+ * metadata.
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_metadata(frame)
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ metadata: PAVDictionary;
+
+ (**
+ * decode error flags of the frame, set to a combination of
+ * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
+ * were errors during the decoding.
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_decode_error_flags(frame)
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ decode_error_flags: cint;
+
+ (**
+ * number of audio channels, only used for audio.
+ * Code outside libavcodec should access this field using:
+ * av_frame_get_channels(frame)
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ channels: cint;
+
+ (**
+ * size of the corresponding packet containing the compressed
+ * frame. It must be accessed using av_frame_get_pkt_size() and
+ * av_frame_set_pkt_size().
+ * It is set to a negative value if unknown.
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ pkt_size: cint;
+ end; (** TAVFrame **)
+
+(**
+ * Accessors for some AVFrame fields.
+ * The position of these field in the structure is not part of the ABI,
+ * they should not be accessed directly outside libavcodec.
+ *)
+function av_frame_get_best_effort_timestamp(frame: {const PAVFrame): cint64;
+ cdecl; external av__codec;
+procedure av_frame_set_best_effort_timestamp(frame: PAVFrame; val: cint64);
+ cdecl; external av__codec;
+function av_frame_get_pkt_duration (frame: {const PAVFrame): cint64;
+ cdecl; external av__codec;
+procedure av_frame_get_pkt_duration (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec;
+function av_frame_get_pkt_pos (frame: {const PAVFrame): cint64;
+ cdecl; external av__codec;
+procedure av_frame_get_pkt_pos (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec;
+function av_frame_get_channel_layout (frame: {const PAVFrame): cint64;
+ cdecl; external av__codec;
+procedure av_frame_get_channel_layout (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec;
+function av_frame_get_channels (frame: {const PAVFrame): cint;
+ cdecl; external av__codec;
+procedure av_frame_set_channels (frame: PAVFrame; val: cint);
+ cdecl; external av__codec;
+function av_frame_get_sample_rate (frame: {const PAVFrame): cint;
+ cdecl; external av__codec;
+procedure av_frame_set_sample_rate (frame: PAVFrame; val: cint);
+ cdecl; external av__codec;
+function av_frame_get_metadata (frame: {const PAVFrame): PAVDictionary;
+ cdecl; external av__codec;
+procedure av_frame_set_metadata (frame: PAVFrame; val: PAVDictionary);
+ cdecl; external av__codec;
+function av_frame_get_decode_error_flags (frame: {const PAVFrame): cint;
+ cdecl; external av__codec;
+procedure av_frame_set_decode_error_flags (frame: PAVFrame; val: cint);
+ cdecl; external av__codec;
+function av_frame_get_pkt_size(frame: {const PAVFrame): cint;
+ cdecl; external av__codec;
+procedure av_frame_set_pkt_size(frame: PAVFrame; val: cint);
+ cdecl; external av__codec;
+}
+
+type
+ TAVCodecInternal = record
+ end;
+
+ PAVCodecInternal = ^TAVCodecInternal;
+ PAVCodecContext = ^TAVCodecContext;
+
+ PAVClass = ^TAVClass;
+
+ PPAVCodec = ^PAVCodec;
+ PAVCodec = ^TAVCodec;
+
+ // int[4]
+ PAVNDPArray = ^TAVNDPArray;
+ TAVNDPArray = array [0..AV_NUM_DATA_POINTERS - 1] of cint;
+ // int (*func)(struct AVCodecContext *c2, void *arg)
+ TExecuteFunc = function(c2: PAVCodecContext; arg: Pointer): cint; cdecl;
+ // int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr)
+ TExecute2Func = function(c2: PAVCodecContext; arg: Pointer; jobnr: cint; threadnr: cint): cint; cdecl;
+
+ TAVFieldOrder = (
+ AV_FIELD_UNKNOWN,
+ AV_FIELD_PROGRESSIVE,
+ AV_FIELD_TT, //< Top coded_first, top displayed first
+ AV_FIELD_BB, //< Bottom coded first, bottom displayed first
+ AV_FIELD_TB, //< Top coded first, bottom displayed first
+ AV_FIELD_BT //< Bottom coded first, top displayed first
+ );
+
+ PMpegEncContext = ^TMpegEncContext;
+ // To be expanded if needed.
+ TMpegEncContext = record
+ end;
+
+(**
+ * @defgroup lavc_hwaccel AVHWAccel
+ *
+ * @note Nothing in this structure should be accessed by the user. At some
+ * point in future it will not be externally visible at all.
+ *
+ * @{
+ *)
+ PAVHWAccel = ^TAVHWAccel;
+ TAVHWAccel = record
+ (**
+ * Name of the hardware accelerated codec.
+ * The name is globally unique among encoders and among decoders (but an
+ * encoder and a decoder can share the same name).
+ *)
+ name: PAnsiChar;
+
+ (**
+ * Type of codec implemented by the hardware accelerator.
+ *
+ * See AVMediaType_xxx
+ *)
+ type_: TAVMediaType;
+
+ (**
+ * Codec implemented by the hardware accelerator.
+ *
+ * See AV_CODEC_ID_xxx
+ *)
+ id: TAVCodecID;
+
+ (**
+ * Supported pixel format.
+ *
+ * Only hardware accelerated formats are supported here.
+ *)
+ pix_fmt: PAVPixelFormat;
+
+ (**
+ * Hardware accelerated codec capabilities.
+ * see AV_HWACCEL_CODEC_CAP_*
+ *)
+ capabilities: cint;
+
+ (*****************************************************************
+ * No fields below this line are part of the public API. They
+ * may not be used outside of libavcodec and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+
+ (**
+ * Allocate a custom buffer
+ *)
+ alloc_frame: function (avctx: PAVCodecContext; frame: PAVFrame): cint; cdecl;
+
+ (**
+ * Called at the beginning of each frame or field picture.
+ *
+ * Meaningful frame information (codec specific) is guaranteed to
+ * be parsed at this point. This function is mandatory.
+ * The only exception is XvMC, that works on MB level.
+ *
+ * Note that buf can be NULL along with buf_size set to 0.
+ * Otherwise, this means the whole frame is available at this point.
+ *
+ * @param avctx the codec context
+ * @param buf the frame data buffer base
+ * @param buf_size the size of the frame in bytes
+ * @return zero if successful, a negative value otherwise
+ *)
+ start_frame: function (avctx: PAVCodecContext;
+ buf: {const} PByteArray;
+ buf_size: cuint): cint; cdecl;
+
+ (**
+ * Callback for parameter data (SPS/PPS/VPS etc).
+ *
+ * Useful for hardware decoders which keep persistent state about the
+ * video parameters, and need to receive any changes to update that state.
+ *
+ * @param avctx the codec context
+ * @param type the nal unit type
+ * @param buf the nal unit data buffer
+ * @param buf_size the size of the nal unit in bytes
+ * @return zero if successful, a negative value otherwise
+ *)
+ decode_params: function(avctx: PAVCodecContext; type_: cint; buf: Pcuint8 {const}; buf_size: cuint32): PCint;
+
+ (**
+ * Callback for each slice.
+ *
+ * Meaningful slice information (codec specific) is guaranteed to
+ * be parsed at this point. This function is mandatory.
+ *
+ * @param avctx the codec context
+ * @param buf the slice data buffer base
+ * @param buf_size the size of the slice in bytes
+ * @return zero if successful, a negative value otherwise
+ *)
+ decode_slice: function (avctx: PAVCodecContext;
+ buf: {const} PByteArray;
+ buf_size: cuint): cint; cdecl;
+
+ (**
+ * Called at the end of each frame or field picture.
+ *
+ * The whole picture is parsed at this point and can now be sent
+ * to the hardware accelerator. This function is mandatory.
+ *
+ * @param avctx the codec context
+ * @return zero if successful, a negative value otherwise
+ *)
+ end_frame: function (avctx: PAVCodecContext): cint; cdecl;
+
+ (**
+ * Size of per-frame hardware accelerator private data.
+ *
+ * Private data is allocated with av_mallocz() before
+ * AVCodecContext.get_buffer() and deallocated after
+ * AVCodecContext.release_buffer().
+ *)
+ frame_priv_data_size: cint;
+
+ (**
+ * Called for every Macroblock in a slice.
+ *
+ * XvMC uses it to replace the mpv_reconstruct_mb().
+ * Instead of decoding to raw picture, MB parameters are
+ * stored in an array provided by the video driver.
+ *
+ * @param s the mpeg context
+ *)
+ decode_mb: procedure(s: PMpegEncContext); cdecl;
+
+ (**
+ * Initialize the hwaccel private data.
+ *
+ * This will be called from ff_get_format(), after hwaccel and
+ * hwaccel_context are set and the hwaccel private data in AVCodecInternal
+ * is allocated.
+ *)
+ init: function (avctx: PAVCodecContext): cint; cdecl;
+
+ (**
+ * Uninitialize the hwaccel private data.
+ *
+ * This will be called from get_format() or avcodec_close(), after hwaccel
+ * and hwaccel_context are already uninitialized.
+ *)
+ uninit: function (avctx: PAVCodecContext): cint; cdecl;
+
+ (**
+ * Size of the private data to allocate in
+ * AVCodecInternal.hwaccel_priv_data.
+ *)
+ priv_data_size: cint;
+
+ (**
+ * Internal hwaccel capabilities.
+ *)
+ caps_internal: cint;
+
+ (**
+ * Fill the given hw_frames context with current codec parameters. Called
+ * from get_format. Refer to avcodec_get_hw_frames_parameters() for
+ * details.
+ *
+ * This CAN be called before AVHWAccel.init is called, and you must assume
+ * that avctx->hwaccel_priv_data is invalid.
+ *)
+ frame_params: function(avctx: PAVCodecContext; hw_frames_ctx: PAVBufferRef): Pcint;
+ end; {TAVHWAccel}
+
+(**
+ * main external API structure.
+ * New fields can be added to the end with minor version bumps.
+ * Removal, reordering and changes to existing fields require a major
+ * version bump.
+ * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
+ * applications.
+ * The name string for AVOptions options matches the associated command line
+ * parameter name and can be found in libavcodec/options_table.h
+ * The AVOption/command line parameter names differ in some cases from the C
+ * structure field names for historic reasons or brevity.
+ * sizeof(AVCodecContext) must not be used outside libav*.
+ *)
+ TAVCodecContext = record {720}
+ (**
+ * information on struct for av_log
+ * - set by avcodec_alloc_context3
+ *)
+ av_class: PAVClass;
+ log_level_offset: cint;
+
+ codec_type: TAVMediaType; (* see AVMEDIA_TYPE_xxx *)
+ codec: PAVCodec;
+ codec_id: TAVCodecID; (* see AV_CODEC_ID_xxx *)
+
+ (**
+ * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
+ * This is used to work around some encoder bugs.
+ * A demuxer should set this to what is stored in the field used to identify the codec.
+ * If there are multiple such fields in a container then the demuxer should choose the one
+ * which maximizes the information about the used codec.
+ * If the codec tag field in a container is larger than 32 bits then the demuxer should
+ * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
+ * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
+ * first.
+ * - encoding: Set by user, if not then the default based on codec_id will be used.
+ * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
+ *)
+ codec_tag: cuint;
+
+ priv_data: pointer;
+
+ (**
+ * Private context used for internal data.
+ *
+ * Unlike priv_data, this is not codec-specific. It is used in general
+ * libavcodec functions.
+ *)
+ internal: PAVCodecInternal;
+
+ (**
+ * Private data of the user, can be used to carry app specific stuff.
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ opaque: pointer;
+
+ (**
+ * the average bitrate
+ * - encoding: Set by user; unused for constant quantizer encoding.
+ * - decoding: Set by user, may be overwritten by libavcodec
+ * if this info is available in the stream
+ *)
+ bit_rate: cint64;
+
+ (**
+ * number of bits the bitstream is allowed to diverge from the reference.
+ * the reference can be CBR (for CBR pass1) or VBR (for pass2)
+ * - encoding: Set by user; unused for constant quantizer encoding.
+ * - decoding: unused
+ *)
+ bit_rate_tolerance: cint;
+
+ (**
+ * Global quality for codecs which cannot change it per frame.
+ * This should be proportional to MPEG-1/2/4 qscale.
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ global_quality: cint;
+
+ (**
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ compression_level: cint;
+
+ (**
+ * AV_CODEC_FLAG_*.
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ flags: cint;
+
+ (**
+ * AV_CODEC_FLAG2_*
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ flags2: cint;
+
+ (**
+ * some codecs need / can use extradata like Huffman tables.
+ * MJPEG: Huffman tables
+ * rv10: additional flags
+ * MPEG-4: global headers (they can be in the bitstream or here)
+ * The allocated memory should be AV_FF_INPUT_BUFFER_PADDING_SIZE bytes larger
+ * than extradata_size to avoid problems if it is read with the bitstream reader.
+ * The bytewise contents of extradata must not depend on the architecture or CPU endianness.
+ * - encoding: Set/allocated/freed by libavcodec.
+ * - decoding: Set/allocated/freed by user.
+ *)
+ extradata: pbyte;
+ extradata_size: cint;
+
+ (**
+ * This is the fundamental unit of time (in seconds) in terms
+ * of which frame timestamps are represented. For fixed-fps content,
+ * timebase should be 1/framerate and timestamp increments should be
+ * identically 1.
+ * This often, but not always is the inverse of the frame rate or field rate
+ * for video. 1/time_base is not the average frame rate if the frame rate is not
+ * constant.
+ *
+ * Like containers, elementary streams also can store timestamps, 1/time_base
+ * is the unit in which these timestamps are specified.
+ * As example of such codec time base see ISO/IEC 14496-2:2001(E)
+ * vop_time_increment_resolution and fixed_vop_rate
+ * (fixed_vop_rate == 0 implies that it is different from the framerate)
+ *
+ * - encoding: MUST be set by user.
+ * - decoding: the use of this field for decoding is deprecated.
+ * Use framerate instead.
+ *)
+ time_base: TAVRational;
+
+ (**
+ * For some codecs, the time base is closer to the field rate than the frame rate.
+ * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
+ * if no telecine is used ...
+ *
+ * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
+ *)
+ ticks_per_frame: cint;
+
+ (**
+ * Codec delay.
+ *
+ * Encoding: Number of frames delay there will be from the encoder input to
+ * the decoder output. (we assume the decoder matches the spec)
+ * Decoding: Number of frames delay in addition to what a standard decoder
+ * as specified in the spec would produce.
+ *
+ * Video:
+ * Number of frames the decoded output will be delayed relative to the
+ * encoded input.
+ *
+ * Audio:
+ * For encoding, this field is unused (see initial_padding).
+ *
+ * For decoding, this is the number of samples the decoder needs to
+ * output before the decoder's output is valid. When seeking, you should
+ * start decoding this many samples prior to your desired seek point.
+ *
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ delay: cint;
+
+ (* video only *)
+ (**
+ * picture width / height.
+ *
+ * @note Those fields may not match the values of the last
+ * AVFrame output by avcodec_decode_video2 due frame
+ * reordering.
+ *
+ * - encoding: MUST be set by user.
+ * - decoding: May be set by the user before opening the decoder if known e.g.
+ * from the container. Some decoders will require the dimensions
+ * to be set by the caller. During decoding, the decoder may
+ * overwrite those values as required while parsing the data.
+ *)
+ width, height: cint;
+
+ (**
+ * Bitstream width / height, may be different from width/height e.g. when
+ * the decoded frame is cropped before being output or lowres is enabled.
+ *
+ * @note Those field may not match the value of the last
+ * AVFrame output by avcodec_receive_frame() due frame
+ * reordering.
+ *
+ * - encoding: unused
+ * - decoding: May be set by the user before opening the decoder if known
+ * e.g. from the container. During decoding, the decoder may
+ * overwrite those values as required while parsing the data.
+ *)
+ coded_width, coded_height: cint;
+
+ (**
+ * the number of pictures in a group of pictures, or 0 for intra_only
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ gop_size: cint;
+
+ (**
+ * Pixel format, see AV_PIX_FMT_xxx.
+ * May be set by the demuxer if known from headers.
+ * May be overridden by the decoder if it knows better.
+ *
+ * @note This field may not match the value of the last
+ * AVFrame output by avcodec_receive_frame() due frame
+ * reordering.
+ *
+ * - encoding: Set by user.
+ * - decoding: Set by user if known, overridden by libavcodec while
+ * parsing the data.
+ *)
+ pix_fmt: TAVPixelFormat;
+
+ (**
+ * If non NULL, 'draw_horiz_band' is called by the libavcodec
+ * decoder to draw a horizontal band. It improves cache usage. Not
+ * all codecs can do that. You must check the codec capabilities
+ * beforehand.
+ * The function is also used by hardware acceleration APIs.
+ * It is called at least once during frame decoding to pass
+ * the data needed for hardware render.
+ * In that mode instead of pixel data, AVFrame points to
+ * a structure specific to the acceleration API. The application
+ * reads the structure and can change some fields to indicate progress
+ * or mark state.
+ * - encoding: unused
+ * - decoding: Set by user.
+ * @param height the height of the slice
+ * @param y the y position of the slice
+ * @param type 1->top field, 2->bottom field, 3->frame
+ * @param offset offset into the AVFrame.data from which the slice should be read
+ *)
+ draw_horiz_band: procedure (s: PAVCodecContext;
+ src: {const} PAVFrame; offset: PAVNDPArray;
+ y: cint; type_: cint; height: cint); cdecl;
+
+ (**
+ * callback to negotiate the pixelFormat
+ * @param fmt is the list of formats which are supported by the codec,
+ * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality.
+ * The first is always the native one.
+ * @note The callback may be called again immediately if initialization for
+ * the selected (hardware-accelerated) pixel format failed.
+ * @warning Behavior is undefined if the callback returns a value not
+ * in the fmt list of formats.
+ * @return the chosen format
+ * - encoding: unused
+ * - decoding: Set by user, if not set the native format will be chosen.
+ *)
+ get_format: function (s: PAVCodecContext; fmt: {const} PAVPixelFormat): TAVPixelFormat; cdecl;
+
+ (**
+ * maximum number of B-frames between non-B-frames
+ * Note: The output will be delayed by max_b_frames+1 relative to the input.
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ max_b_frames: cint;
+
+ (**
+ * qscale factor between IP and B-frames
+ * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
+ * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ b_quant_factor: cfloat;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ b_frame_strategy: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * qscale offset between IP and B-frames
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ b_quant_offset: cfloat;
+
+ (**
+ * Size of the frame reordering buffer in the decoder.
+ * For MPEG-2 it is 1 IPB or 0 low delay IP.
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ has_b_frames: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ mpeg_quant: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * qscale factor between P- and I-frames
+ * If > 0 then the last P- frame quantizer will be used (q = lastp_q * factor + offset).
+ * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ i_quant_factor: cfloat;
+
+ (**
+ * qscale offset between P and I-frames
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ i_quant_offset: cfloat;
+
+ (**
+ * luminance masking (0-> disabled)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ lumi_masking: cfloat;
+
+ (**
+ * temporary complexity masking (0-> disabled)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ temporal_cplx_masking: cfloat;
+
+ (**
+ * spatial complexity masking (0-> disabled)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ spatial_cplx_masking: cfloat;
+
+ (**
+ * p block masking (0-> disabled)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ p_masking: cfloat;
+
+ (**
+ * darkness masking (0-> disabled)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ dark_masking: cfloat;
+
+ (**
+ * slice count
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by user (or 0).
+ *)
+ slice_count: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ prediction_method: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * slice offsets in the frame in bytes
+ * - encoding: Set/allocated by libavcodec.
+ * - decoding: Set/allocated by user (or NULL).
+ *)
+ slice_offset: PCint;
+
+ (**
+ * sample aspect ratio (0 if unknown)
+ * That is the width of a pixel divided by the height of the pixel.
+ * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ sample_aspect_ratio: TAVRational;
+
+ (**
+ * motion estimation comparison function
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ me_cmp: cint;
+
+ (**
+ * subpixel motion estimation comparison function
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ me_sub_cmp: cint;
+ (**
+ * macroblock comparison function (not supported yet)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ mb_cmp: cint;
+ (**
+ * interlaced DCT comparison function
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ ildct_cmp: cint;
+
+ (**
+ * ME diamond size & shape
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ dia_size: cint;
+
+ (**
+ * amount of previous MV predictors (2a+1 x 2a+1 square)
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ last_predictor_count: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ pre_me: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * motion estimation prepass comparison function
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ me_pre_cmp: cint;
+
+ (**
+ * ME prepass diamond size & shape
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ pre_dia_size: cint;
+
+ (**
+ * subpel ME quality
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ me_subpel_quality: cint;
+
+{$IFDEF FF_API_AFD}
+ (**
+ * DTG active format information (additional aspect ratio
+ * information only used in DVB MPEG-2 transport streams)
+ * 0 if not set.
+ *
+ * - encoding: unused
+ * - decoding: Set by decoder.
+ * @deprecated Deprecated in favor of AVSideData
+ *)
+ {attribute_deprecated}
+ dtg_active_format: cint;
+{$IFEND}
+
+ (**
+ * maximum motion estimation search range in subpel units
+ * If 0 then no limit.
+ *
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ me_range: cint;
+
+ (**
+ * slice flags
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ slice_flags: cint;
+
+ (**
+ * macroblock decision mode
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ mb_decision: cint;
+
+ (**
+ * custom intra quantization matrix
+ * - encoding: Set by user, can be NULL.
+ * - decoding: Set by libavcodec.
+ *)
+ intra_matrix: PWord;
+
+ (**
+ * custom inter quantization matrix
+ * - encoding: Set by user, can be NULL.
+ * - decoding: Set by libavcodec.
+ *)
+ inter_matrix: PWord;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ scenechange_threshold: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ noise_reduction: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * precision of the intra DC coefficient - 8
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec
+ *)
+ intra_dc_precision: cint;
+
+ (**
+ * Number of macroblock rows at the top which are skipped.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ skip_top: cint;
+
+ (**
+ * Number of macroblock rows at the bottom which are skipped.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ skip_bottom: cint;
+
+ (**
+ * minimum MB Lagrange multiplier
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ mb_lmin: cint;
+
+ (**
+ * maximum MB Lagrange multiplier
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ mb_lmax: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (**
+ * @deprecated use encoder private options instead
+ *)
+ me_penalty_compensation: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ bidir_refine: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ brd_scale: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * minimum GOP size
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ keyint_min: cint;
+
+ (**
+ * number of reference frames
+ * - encoding: Set by user.
+ * - decoding: Set by lavc.
+ *)
+ refs: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ chromaoffset: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * Note: Value depends upon the compare function used for fullpel ME.
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ mv0_threshold: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ b_sensitivity: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * Chromaticity coordinates of the source primaries.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ color_primaries: TAVColorPrimaries;
+
+ (**
+ * Color Transfer Characteristic.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ color_trc: TAVColorTransferCharacteristic;
+
+ (**
+ * YUV colorspace type.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ colorspace: TAVColorSpace;
+
+ (**
+ * MPEG vs JPEG YUV range.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ color_range: TAVColorRange;
+
+ (**
+ * This defines the location of chroma samples.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ chroma_sample_location: TAVChromaLocation;
+
+ (**
+ * Number of slices.
+ * Indicates number of picture subdivisions. Used for parallelized
+ * decoding.
+ * - encoding: Set by user
+ * - decoding: unused
+ *)
+ slices: cint;
+
+ (** Field order
+ * - encoding: set by libavcodec
+ * - decoding: Set by user.
+ *)
+ field_order: TAVFieldOrder;
+
+ (* audio only *)
+ sample_rate: cint; ///< samples per second
+ channels: cint; ///< number of audio channels
+
+ (**
+ * audio sample format
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ sample_fmt: TAVSampleFormat; ///< sample format
+
+ (* The following data should not be initialized. *)
+ (**
+ * Number of samples per channel in an audio frame.
+ *
+ * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
+ * except the last must contain exactly frame_size samples per channel.
+ * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
+ * frame size is not restricted.
+ * - decoding: may be set by some decoders to indicate constant frame size
+ *)
+ frame_size: cint;
+
+ (**
+ * Frame counter, set by libavcodec.
+ *
+ * - decoding: total number of frames returned from the decoder so far.
+ * - encoding: total number of frames passed to the encoder so far.
+ *
+ * @note the counter is not incremented if encoding/decoding resulted in
+ * an error.
+ *)
+ frame_number: cint; ///< audio or video frame number
+
+ (**
+ * number of bytes per packet if constant and known or 0
+ * Used by some WAV based audio codecs.
+ *)
+ block_align: cint;
+
+ (**
+ * Audio cutoff bandwidth (0 means "automatic")
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ cutoff: cint;
+
+ (**
+ * Audio channel layout.
+ * - encoding: set by user.
+ * - decoding: set by user, may be overwritten by libavcodec.
+ *)
+ channel_layout: cuint64;
+
+ (**
+ * Request decoder to use this channel layout if it can (0 for default)
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ request_channel_layout: cuint64;
+
+ (**
+ * Type of service that the audio stream conveys.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ audio_service_type: TAVAudioServiceType;
+
+ (**
+ * desired sample format
+ * - encoding: Not used.
+ * - decoding: Set by user.
+ * Decoder will decode to this format if it can.
+ *)
+ request_sample_fmt: TAVSampleFormat;
+
+ (**
+ * This callback is called at the beginning of each frame to get data
+ * buffer(s) for it. There may be one contiguous buffer for all the data or
+ * there may be a buffer per each data plane or anything in between. What
+ * this means is, you may set however many entries in buf[] you feel necessary.
+ * Each buffer must be reference-counted using the AVBuffer API (see description
+ * of buf[] below).
+ *
+ * The following fields will be set in the frame before this callback is
+ * called:
+ * - format
+ * - width, height (video only)
+ * - sample_rate, channel_layout, nb_samples (audio only)
+ * Their values may differ from the corresponding values in
+ * AVCodecContext. This callback must use the frame values, not the codec
+ * context values, to calculate the required buffer size.
+ *
+ * This callback must fill the following fields in the frame:
+ * - data[]
+ * - linesize[]
+ * - extended_data:
+ * * if the data is planar audio with more than 8 channels, then this
+ * callback must allocate and fill extended_data to contain all pointers
+ * to all data planes. data[] must hold as many pointers as it can.
+ * extended_data must be allocated with av_malloc() and will be freed in
+ * av_frame_unref().
+ * * otherwise extended_data must point to data
+ * - buf[] must contain one or more pointers to AVBufferRef structures. Each of
+ * the frame's data and extended_data pointers must be contained in these. That
+ * is, one AVBufferRef for each allocated chunk of memory, not necessarily one
+ * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
+ * and av_buffer_ref().
+ * - extended_buf and nb_extended_buf must be allocated with av_malloc() by
+ * this callback and filled with the extra buffers if there are more
+ * buffers than buf[] can hold. extended_buf will be freed in
+ * av_frame_unref().
+ *
+ * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
+ * avcodec_default_get_buffer2() instead of providing buffers allocated by
+ * some other means.
+ *
+ * Each data plane must be aligned to the maximum required by the target
+ * CPU.
+ *
+ * @see avcodec_default_get_buffer2()
+ *
+ * Video:
+ *
+ * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
+ * (read and/or written to if it is writable) later by libavcodec.
+ *
+ * avcodec_align_dimensions2() should be used to find the required width and
+ * height, as they normally need to be rounded up to the next multiple of 16.
+ *
+ * Some decoders do not support linesizes changing between frames.
+ *
+ * If frame multithreading is used and thread_safe_callbacks is set,
+ * this callback may be called from a different thread, but not from more
+ * than one at once. Does not need to be reentrant.
+ *
+ * @see avcodec_align_dimensions2()
+ *
+ * Audio:
+ *
+ * Decoders request a buffer of a particular size by setting
+ * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
+ * however, utilize only part of the buffer by setting AVFrame.nb_samples
+ * to a smaller value in the output frame.
+ *
+ * As a convenience, av_samples_get_buffer_size() and
+ * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
+ * functions to find the required data size and to fill data pointers and
+ * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
+ * since all planes must be the same size.
+ *
+ * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
+ *
+ * - encoding: unused
+ * - decoding: Set by libavcodec, user can override.
+ *)
+ get_buffer2: function (s: PAVCodecContext; frame: PAVFrame; flags: cint): cint; cdecl;
+
+ (**
+ * If non-zero, the decoded audio and video frames returned from
+ * avcodec_decode_video2() and avcodec_decode_audio4() are reference-counted
+ * and are valid indefinitely. The caller must free them with
+ * av_frame_unref() when they are not needed anymore.
+ * Otherwise, the decoded frames must not be freed by the caller and are
+ * only valid until the next decode call.
+ *
+ * This is always automatically enabled if avcodec_receive_frame() is used.
+ *
+ * - encoding: unused
+ * - decoding: set by the caller before avcodec_open2().
+ *)
+ {attribute_deprecated}
+ refcounted_frames: cint;
+
+ (* - encoding parameters *)
+ qcompress: cfloat; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
+ qblur: cfloat; ///< amount of qscale smoothing over time (0.0-1.0)
+
+ (**
+ * minimum quantizer
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ qmin: cint;
+
+ (**
+ * maximum quantizer
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ qmax: cint;
+
+ (**
+ * maximum quantizer difference between frames
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ max_qdiff: cint;
+
+ (**
+ * decoder bitstream buffer size
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ rc_buffer_size: cint;
+ (**
+ * ratecontrol override, see RcOverride
+ * - encoding: Allocated/set/freed by user.
+ * - decoding: unused
+ *)
+ rc_override_count: cint;
+ rc_override: PRcOverride;
+
+ (**
+ * maximum bitrate
+ * - encoding: Set by user.
+ * - decoding: Set by user, may be overwritten by libavcodec.
+ *)
+ rc_max_rate: cint64;
+
+ (**
+ * minimum bitrate
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ rc_min_rate: cint64;
+
+ (**
+ * Ratecontrol attempt to use, at maximum, of what can be used without an underflow.
+ * - encoding: Set by user.
+ * - decoding: unused.
+ *)
+ rc_max_available_vbv_use: cfloat;
+
+ (**
+ * Ratecontrol attempt to use, at least, times the amount needed to prevent a vbv overflow.
+ * - encoding: Set by user.
+ * - decoding: unused.
+ *)
+ rc_min_vbv_overflow_use: cfloat;
+
+ (**
+ * Number of bits which should be loaded into the rc buffer before decoding starts.
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ rc_initial_buffer_occupancy: cint;
+
+{$IFDEF FF_API_CODER_TYPE}
+ (**
+ * @deprecated use encoder private options instead
+ *)
+ coder_type: cint; {deprecated}
+{$ENDIF}
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ context_model: cint; {deprecated}
+{$ENDIF}
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ frame_skip_threshold: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ frame_skip_factor: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ frame_skip_exp: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ frame_skip_cmp: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * trellis RD quantization
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ trellis: cint;
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ (** @deprecated use encoder private options instead *)
+ min_prediction_order: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ max_prediction_order: cint; {deprecated}
+
+ (** @deprecated use encoder private options instead *)
+ timecode_frame_start: cint64; {deprecated}
+{$ENDIF}
+
+{$IFDEF FF_API_RTP_CALLBACK}
+ (**
+ * @deprecated unused
+ *)
+ (* The RTP callback: This function is called *)
+ (* every time the encoder has a packet to send *)
+ (* Depends on the encoder if the data starts *)
+ (* with a Start Code (it should) H.263 does. *)
+ (* mb_nb contains the number of macroblocks *)
+ (* encoded in the RTP payload *)
+ rtp_callback: procedure (avctx: PAVCodecContext; data: pointer;
+ size: cint; mb_nb: cint); cdecl; {deprecated}
+{$ENDIF}
+
+{$IFDEF FF_API_PRIVATE_OPT}
+ rtp_payload_size: cint; {deprecated} (* The size of the RTP payload: the coder will *)
+ (* do it's best to deliver a chunk with size *)
+ (* below rtp_payload_size, the chunk will start *)
+ (* with a start code on some codecs like H.263 *)
+ (* This doesn't take account of any particular *)
+ (* headers inside the transmited RTP payload *)
+{$ENDIF}
+
+{$IFDEF FF_API_STAT_BITS}
+ (* statistics, used for 2-pass encoding *)
+ mv_bits: cint; {deprecated}
+ header_bits: cint; {deprecated}
+ i_tex_bits: cint; {deprecated}
+ p_tex_bits: cint; {deprecated}
+ i_count: cint; {deprecated}
+ p_count: cint; {deprecated}
+ skip_count: cint; {deprecated}
+ misc_bits: cint; {deprecated}
+
+ (** @deprecated this field is unused *)
+ frame_bits: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * pass1 encoding statistics output buffer
+ * - encoding: Set by libavcodec.
+ * - decoding: unused
+ *)
+ stats_out: PAnsiChar;
+
+ (**
+ * pass2 encoding statistics input buffer
+ * Concatenated stuff from stats_out of pass1 should be placed here.
+ * - encoding: Allocated/set/freed by user.
+ * - decoding: unused
+ *)
+ stats_in: PAnsiChar;
+
+ (**
+ * Work around bugs in encoders which sometimes cannot be detected automatically.
+ * - encoding: Set by user
+ * - decoding: Set by user
+ *)
+ workaround_bugs: cint;
+
+ (**
+ * strictly follow the standard (MPEG-4, ...).
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ * Setting this to STRICT or higher means the encoder and decoder will
+ * generally do stupid things, whereas setting it to unofficial or lower
+ * will mean the encoder might produce output that is not supported by all
+ * spec-compliant decoders. Decoders don't differentiate between normal,
+ * unofficial and experimental (that is, they always try to decode things
+ * when they can) unless they are explicitly asked to behave stupidly
+ * (=strictly conform to the specs)
+ *)
+ strict_std_compliance: cint;
+
+ (**
+ * error concealment flags
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ error_concealment: cint;
+
+ (**
+ * debug
+ * Code outside libavcodec should access this field using AVOptions
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ debug: cint;
+
+{$IFDEF FF_API_DEBUG_MV}
+ (**
+ * debug
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ debug_mv: cint;
+{$ENDIF}
+
+ (**
+ * Error recognition; may misdetect some more or less valid parts as errors.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ err_recognition: cint;
+
+ (**
+ * opaque 64-bit number (generally a PTS) that will be reordered and
+ * output in AVFrame.reordered_opaque
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ reordered_opaque: cint64;
+
+ (**
+ * Hardware accelerator in use
+ * - encoding: unused.
+ * - decoding: Set by libavcodec
+ *)
+ hwaccel: {const} PAVHWAccel;
+
+ (**
+ * Hardware accelerator context.
+ * For some hardware accelerators, a global context needs to be
+ * provided by the user. In that case, this holds display-dependent
+ * data FFmpeg cannot instantiate itself. Please refer to the
+ * FFmpeg HW accelerator documentation to know how to fill this
+ * is. e.g. for VA API, this is a struct vaapi_context.
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ hwaccel_context: pointer;
+
+ (**
+ * error
+ * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
+ * - decoding: unused
+ *)
+ error: array [0..AV_NUM_DATA_POINTERS - 1] of cuint64;
+
+ (**
+ * DCT algorithm, see FF_DCT_* below
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ dct_algo: cint;
+
+ (**
+ * IDCT algorithm, see FF_IDCT_* below.
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ idct_algo: cint;
+
+ (**
+ * bits per sample/pixel from the demuxer (needed for huffyuv).
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by user.
+ *)
+ bits_per_coded_sample: cint;
+
+ (**
+ * Bits per sample/pixel of internal libavcodec pixel/sample format.
+ * - encoding: set by user.
+ * - decoding: set by libavcodec.
+ *)
+ bits_per_raw_sample: cint;
+
+{$IFDEF FF_API_LOWRES}
+ (**
+ * low resolution decoding, 1-> 1/2 size, 2->1/4 size
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ lowres: cint;
+{$ENDIF}
+
+{$IFDEF FF_API_CODED_FRAME}
+ (**
+ * the picture in the bitstream
+ * - encoding: Set by libavcodec.
+ * - decoding: unused
+ *
+ * @deprecated use the quality factor packet side data instead
+ *)
+ {attribute_deprecated}
+ coded_frame: PAVFrame;
+{$ENDIF}
+
+ (**
+ * thread count
+ * is used to decide how many independent tasks should be passed to execute()
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ thread_count: cint;
+
+ (**
+ * Which multithreading methods to use.
+ * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
+ * so clients which cannot provide future frames should not use it.
+ *
+ * - encoding: Set by user, otherwise the default is used.
+ * - decoding: Set by user, otherwise the default is used.
+ *)
+ thread_type: cint;
+
+ (**
+ * Which multithreading methods are in use by the codec.
+ * - encoding: Set by libavcodec.
+ * - decoding: Set by libavcodec.
+ *)
+ active_thread_type: cint;
+
+ (**
+ * Set by the client if its custom get_buffer() callback can be called
+ * from another thread, which allows faster multithreaded decoding.
+ * draw_horiz_band() will be called from other threads regardless of this setting.
+ * Ignored if the default get_buffer() is used.
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ thread_safe_callbacks: cint;
+
+ (**
+ * The codec may call this to execute several independent things.
+ * It will return only after finishing all tasks.
+ * The user may replace this with some multithreaded implementation,
+ * the default implementation will execute the parts serially.
+ * @param count the number of things to execute
+ * - encoding: Set by libavcodec, user can override.
+ * - decoding: Set by libavcodec, user can override.
+ *)
+ execute: function (c: PAVCodecContext; func: TExecuteFunc; arg: Pointer; ret: PCint; count: cint; size: cint): cint; cdecl;
+
+ (**
+ * The codec may call this to execute several independent things.
+ * It will return only after finishing all tasks.
+ * The user may replace this with some multithreaded implementation,
+ * the default implementation will execute the parts serially.
+ * Also see avcodec_thread_init and e.g. the --enable-pthread configure option.
+ * @param c context passed also to func
+ * @param count the number of things to execute
+ * @param arg2 argument passed unchanged to func
+ * @param ret return values of executed functions, must have space for "count" values. May be NULL.
+ * @param func function that will be called count times, with jobnr from 0 to count-1.
+ * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
+ * two instances of func executing at the same time will have the same threadnr.
+ * @return always 0 currently, but code should handle a future improvement where when any call to func
+ * returns < 0 no further calls to func may be done and < 0 is returned.
+ * - encoding: Set by libavcodec, user can override.
+ * - decoding: Set by libavcodec, user can override.
+ *)
+ execute2: function (c: PAVCodecContext; func: TExecute2Func; arg2: Pointer; ret: Pcint; count: cint): cint; cdecl;
+
+ (**
+ * noise vs. sse weight for the nsse comparison function
+ * - encoding: Set by user.
+ * - decoding: unused
+ *)
+ nsse_weight: cint;
+
+ (**
+ * profile
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ profile: cint;
+
+ (**
+ * level
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ level: cint;
+
+ (**
+ * Skip loop filtering for selected frames.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ skip_loop_filter: TAVDiscard;
+
+ (**
+ * Skip IDCT/dequantization for selected frames.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ skip_idct: TAVDiscard;
+
+ (**
+ * Skip decoding for selected frames.
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ skip_frame: TAVDiscard;
+
+ (**
+ * Header containing style information for text subtitles.
+ * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
+ * [Script Info] and [V4+ Styles] section, plus the [Events] line and
+ * the Format line following. It shouldn't include any Dialogue line.
+ * - encoding: Set/allocated/freed by user (before avcodec_open2())
+ * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
+ *)
+ subtitle_header: Pcuint8;
+ subtitle_header_size: cint;
+
+{$IFDEF FF_API_VBV_DELAY}
+ (**
+ * VBV delay coded in the last frame (in periods of a 27 MHz clock).
+ * Used for compliant TS muxing.
+ * - encoding: Set by libavcodec.
+ * - decoding: unused.
+ * @deprecated this value is now exported as a part of
+ * AV_PKT_DATA_CPB_PROPERTIES packet side data
+ *)
+ vbv_delay: cuint64; {deprecated}
+{$ENDIF}
+
+{$IFDEF FF_API_SIDEDATA_ONLY_PKT}
+ (**
+ * Encoding only and set by default. Allow encoders to output packets
+ * that do not contain any encoded data, only side data.
+ *
+ * Some encoders need to output such packets, e.g. to update some stream
+ * parameters at the end of encoding.
+ *
+ * @deprecated this field disables the default behaviour and
+ * it is kept only for compatibility.
+ *)
+ side_data_only_packets: cint; {deprecated}
+{$ENDIF}
+
+ (**
+ * Audio only. The number of "priming" samples (padding) inserted by the
+ * encoder at the beginning of the audio. I.e. this number of leading
+ * decoded samples must be discarded by the caller to get the original audio
+ * without leading padding.
+ *
+ * - decoding: unused
+ * - encoding: Set by libavcodec. The timestamps on the output packets are
+ * adjusted by the encoder so that they always refer to the
+ * first sample of the data actually contained in the packet,
+ * including any added padding. E.g. if the timebase is
+ * 1/samplerate and the timestamp of the first input sample is
+ * 0, the timestamp of the first output packet will be
+ * -initial_padding.
+ *)
+ initial_padding: cint;
+
+ (**
+ * - decoding: For codecs that store a framerate value in the compressed
+ * bitstream, the decoder may export it here. { 0, 1} when
+ * unknown.
+ * - encoding: May be used to signal the framerate of CFR content to an
+ * encoder.
+ *)
+ framerate: TAVRational;
+
+ (**
+ * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
+ * - encoding: unused.
+ * - decoding: Set by libavcodec before calling get_format()
+ *)
+ sw_pix_fmt: TAVPixelFormat;
+
+ (**
+ * Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
+ * - encoding unused.
+ * - decoding set by user
+ *)
+ pkt_timebase: TAVRational;
+
+ (**
+ * AVCodecDescriptor
+ * - encoding: unused.
+ * - decoding: set by libavcodec.
+ *)
+ codec_descriptor: PAVCodecDescriptor;
+
+{$IFNDEF FF_API_LOWRES}
+ (**
+ * low resolution decoding, 1-> 1/2 size, 2->1/4 size
+ * - encoding: unused
+ * - decoding: Set by user.
+ *)
+ lowres: cint;
+{$ENDIF}
+
+ (**
+ * Current statistics for PTS correction.
+ * - decoding: maintained and used by libavcodec, not intended to be used by user apps
+ * - encoding: unused
+ *)
+ pts_correction_num_faulty_pts: cint64; /// Number of incorrect PTS values so far
+ pts_correction_num_faulty_dts: cint64; /// Number of incorrect DTS values so far
+ pts_correction_last_pts: cint64; /// PTS of the last frame
+ pts_correction_last_dts: cint64; /// DTS of the last frame
+
+ (**
+ * Character encoding of the input subtitles file.
+ * - decoding: set by user
+ * - encoding: unused
+ *)
+ sub_charenc: PAnsiChar;
+
+ (**
+ * Subtitles character encoding mode. Formats or codecs might be adjusting
+ * this setting (if they are doing the conversion themselves for instance).
+ * - decoding: set by libavcodec
+ * - encoding: unused
+ *)
+ sub_charenc_mode: cint;
+
+ (**
+ * Skip processing alpha if supported by codec.
+ * Note that if the format uses pre-multiplied alpha (common with VP6,
+ * and recommended due to better video quality/compression)
+ * the image will look as if alpha-blended onto a black background.
+ * However for formats that do not use pre-multiplied alpha
+ * there might be serious artefacts (though e.g. libswscale currently
+ * assumes pre-multiplied alpha anyway).
+ *
+ * - decoding: set by user
+ * - encoding: unused
+ *)
+ skip_alpha: cint;
+
+ (**
+ * Number of samples to skip after a discontinuity
+ * - decoding: unused
+ * - encoding: set by libavcodec
+ *)
+ seek_preroll: cint;
+
+{$IFNDEF FF_API_DEBUG_MV}
+ (**
+ * debug motion vectors
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ debug_mv: cint;
+{$ENDIF}
+
+ (**
+ * custom intra quantization matrix
+ * - encoding: Set by user, can be NULL.
+ * - decoding: unused.
+ *)
+ chroma_intra_matrix: PWord;
+
+ (**
+ * dump format separator.
+ * can be ", " or "\n " or anything else
+ * - encoding: Set by user.
+ * - decoding: Set by user.
+ *)
+ dump_separator: Pcuint8;
+
+ (**
+ * ',' separated list of allowed decoders.
+ * If NULL then all are allowed
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ codec_whitelist: PAnsiChar;
+
+ (**
+ * Properties of the stream that gets decoded
+ * - encoding: unused
+ * - decoding: set by libavcodec
+ *)
+ properties: cuint;
+
+ (**
+ * Additional data associated with the entire coded stream.
+ *
+ * - decoding: unused
+ * - encoding: may be set by libavcodec after avcodec_open2().
+ *)
+ coded_side_data: PAVPacketSideData;
+ nb_coded_side_data: cint;
+
+ (**
+ * A reference to the AVHWFramesContext describing the input (for encoding)
+ * or output (decoding) frames. The reference is set by the caller and
+ * afterwards owned (and freed) by libavcodec - it should never be read by
+ * the caller after being set.
+ *
+ * - decoding: This field should be set by the caller from the get_format()
+ * callback. The previous reference (if any) will always be
+ * unreffed by libavcodec before the get_format() call.
+ *
+ * If the default get_buffer2() is used with a hwaccel pixel
+ * format, then this AVHWFramesContext will be used for
+ * allocating the frame buffers.
+ *
+ * - encoding: For hardware encoders configured to use a hwaccel pixel
+ * format, this field should be set by the caller to a reference
+ * to the AVHWFramesContext describing input frames.
+ * AVHWFramesContext.format must be equal to
+ * AVCodecContext.pix_fmt.
+ *
+ * This field should be set before avcodec_open2() is called.
+ *)
+ hw_frames_ctx: PAVBufferRef;
+
+ (**
+ * Control the form of AVSubtitle.rects[N]->ass
+ * - decoding: set by user
+ * - encoding: unused
+ *)
+ sub_text_format: cint;
+
+ (**
+ * Audio only. The amount of padding (in samples) appended by the encoder to
+ * the end of the audio. I.e. this number of decoded samples must be
+ * discarded by the caller from the end of the stream to get the original
+ * audio without any trailing padding.
+ *
+ * - decoding: unused
+ * - encoding: unused
+ *)
+ trailing_padding: cint;
+
+ (**
+ * The number of pixels per image to maximally accept.
+ *
+ * - decoding: set by user
+ * - encoding: set by user
+ *)
+ max_pixels: cint64;
+
+ (**
+ * A reference to the AVHWDeviceContext describing the device which will
+ * be used by a hardware encoder/decoder. The reference is set by the
+ * caller and afterwards owned (and freed) by libavcodec.
+ *
+ * This should be used if either the codec device does not require
+ * hardware frames or any that are used are to be allocated internally by
+ * libavcodec. If the user wishes to supply any of the frames used as
+ * encoder input or decoder output then hw_frames_ctx should be used
+ * instead. When hw_frames_ctx is set in get_format() for a decoder, this
+ * field will be ignored while decoding the associated stream segment, but
+ * may again be used on a following one after another get_format() call.
+ *
+ * For both encoders and decoders this field should be set before
+ * avcodec_open2() is called and must not be written to thereafter.
+ *
+ * Note that some decoders may require this field to be set initially in
+ * order to support hw_frames_ctx at all - in that case, all frames
+ * contexts used must be created on the same device.
+ *)
+ hw_device_ctx: PAVBufferRef;
+
+ (**
+ * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
+ * decoding (if active).
+ * - encoding: unused
+ * - decoding: Set by user (either before avcodec_open2(), or in the
+ * AVCodecContext.get_format callback)
+ *)
+ hwaccel_flags: cint;
+
+ (**
+ * Video decoding only. Certain video codecs support cropping, meaning that
+ * only a sub-rectangle of the decoded frame is intended for display. This
+ * option controls how cropping is handled by libavcodec.
+ *
+ * When set to 1 (the default), libavcodec will apply cropping internally.
+ * I.e. it will modify the output frame width/height fields and offset the
+ * data pointers (only by as much as possible while preserving alignment, or
+ * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
+ * the frames output by the decoder refer only to the cropped area. The
+ * crop_* fields of the output frames will be zero.
+ *
+ * When set to 0, the width/height fields of the output frames will be set
+ * to the coded dimensions and the crop_* fields will describe the cropping
+ * rectangle. Applying the cropping is left to the caller.
+ *
+ * @warning When hardware acceleration with opaque output frames is used,
+ * libavcodec is unable to apply cropping from the top/left border.
+ *
+ * @note when this option is set to zero, the width/height fields of the
+ * AVCodecContext and output AVFrames have different meanings. The codec
+ * context fields store display dimensions (with the coded dimensions in
+ * coded_width/height), while the frame fields store the coded dimensions
+ * (with the display dimensions being determined by the crop_* fields).
+ *)
+ apply_cropping: cint;
+
+ (*
+ * Video decoding only. Sets the number of extra hardware frames which
+ * the decoder will allocate for use by the caller. This must be set
+ * before avcodec_open2() is called.
+ *
+ * Some hardware decoders require all frames that they will use for
+ * output to be defined in advance before decoding starts. For such
+ * decoders, the hardware frame pool must therefore be of a fixed size.
+ * The extra frames set here are on top of any number that the decoder
+ * needs internally in order to operate normally (for example, frames
+ * used as reference pictures).
+ *)
+ extra_hw_frames: cint;
+ end; {TAVCodecContext}
+
+ TAVSubtitleType = (
+ SUBTITLE_NONE,
+
+ SUBTITLE_BITMAP, ///< A bitmap, pict will be set
+
+ (**
+ * Plain text, the text field must be set by the decoder and is
+ * authoritative. ass and pict fields may contain approximations.
+ *)
+ SUBTITLE_TEXT,
+
+ (**
+ * Formatted text, the ass field must be set by the decoder and is
+ * authoritative. pict and text fields may contain approximations.
+ *)
+ SUBTITLE_ASS
+ ); {TAVSubtitleType}
+
+{$IFDEF FF_API_AVPICTURE}
+ (**
+ * @defgroup lavc_picture AVPicture
+ *
+ * Functions for working with AVPicture
+ * @{
+ *)
+
+ (**
+ * Picture data structure.
+ *
+ * Up to four components can be stored into it, the last component is
+ * alpha.
+ * @deprecated use AVFrame or imgutils functions instead
+ *)
+ PAVPicture = ^TAVPicture;
+ TAVPicture = record
+ data: array [0..AV_NUM_DATA_POINTERS - 1] of PByteArray; {deprecated}
+ linesize: array [0..AV_NUM_DATA_POINTERS - 1] of cint; {deprecated} ///< number of bytes per line
+ end; {TAVPicture}
+{$ENDIF}
+
+ PPAVSubtitleRect = ^PAVSubtitleRect;
+ PAVSubtitleRect = ^TAVSubtitleRect;
+ TAVSubtitleRect = record
+ x: cint; ///< top left corner of pict, undefined when pict is not set
+ y: cint; ///< top left corner of pict, undefined when pict is not set
+ w: cint; ///< width of pict, undefined when pict is not set
+ h: cint; ///< height of pict, undefined when pict is not set
+ nb_colors: cint; ///< number of colors in pict, undefined when pict is not set
+
+{$IFDEF FF_API_AVPICTURE}
+ (**
+ * @deprecated unused
+ *)
+ pict: TAVPicture; {deprecated}
+{$ENDIF}
+ (**
+ * data+linesize for the bitmap of this subtitle.
+ * Can be set for text/ass as well once they are rendered.
+ *)
+ data: Array [0..4] of PByte;
+ linesize: Array [0..4] of cint;
+
+ type_: TAVSubtitleType;
+
+ text: PAnsiChar; ///< 0 terminated plain UTF-8 text
+
+ (**
+ * 0 terminated ASS/SSA compatible event line.
+ * The presentation of this is unaffected by the other values in this
+ * struct.
+ *)
+ ass: PAnsiChar;
+
+ flags: cint;
+ end; {TAVSubtitleRect}
+
+ PPAVSubtitle = ^PAVSubtitle;
+ PAVSubtitle = ^TAVSubtitle;
+ TAVSubtitle = record
+ format: cuint16; (* 0 = graphics *)
+ start_display_time: cuint32; (* relative to packet pts, in ms *)
+ end_display_time: cuint32; (* relative to packet pts, in ms *)
+ num_rects: cuint;
+ rects: PPAVSubtitleRect;
+ pts: cint64; ///< Same as packet pts, in AV_TIME_BASE
+ end; {TAVSubtitle}
+
+ (**
+ * This struct describes the properties of an encoded stream.
+ *
+ * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must
+ * be allocated with avcodec_parameters_alloc() and freed with
+ * avcodec_parameters_free().
+ *)
+ PPAVCodecParameters = ^PAVCodecParameters;
+ PAVCodecParameters = ^TAVCodecParameters;
+ TAVCodecParameters = record
+ (**
+ * General type of the encoded data.
+ *)
+ codec_type: TAVMediaType;
+ (**
+ * Specific type of the encoded data (the codec used).
+ *)
+ codec_id: TAVCodecID;
+ (**
+ * Additional information about the codec (corresponds to the AVI FOURCC).
+ *)
+ codec_tag: cuint32;
+
+ (**
+ * Extra binary data needed for initializing the decoder, codec-dependent.
+ *
+ * Must be allocated with av_malloc() and will be freed by
+ * avcodec_parameters_free(). The allocated size of extradata must be at
+ * least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding
+ * bytes zeroed.
+ *)
+ extradata: Pcuint8;
+ (**
+ * Size of the extradata content in bytes.
+ *)
+ extradata_size: cint;
+
+ (**
+ * - video: the pixel format, the value corresponds to enum AVPixelFormat.
+ * - audio: the sample format, the value corresponds to enum AVSampleFormat.
+ *)
+ format: cint;
+
+ (**
+ * The average bitrate of the encoded data (in bits per second).
+ *)
+ bit_rate: cint64;
+
+ (**
+ * The number of bits per sample in the codedwords.
+ *
+ * This is basically the bitrate per sample. It is mandatory for a bunch of
+ * formats to actually decode them. It's the number of bits for one sample in
+ * the actual coded bitstream.
+ *
+ * This could be for example 4 for ADPCM
+ * For PCM formats this matches bits_per_raw_sample
+ * Can be 0
+ *)
+ bits_per_coded_sample: cint;
+
+ (**
+ * This is the number of valid bits in each output sample. If the
+ * sample format has more bits, the least significant bits are additional
+ * padding bits, which are always 0. Use right shifts to reduce the sample
+ * to its actual size. For example, audio formats with 24 bit samples will
+ * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32.
+ * To get the original sample use "(int32_t)sample >> 8"."
+ *
+ * For ADPCM this might be 12 or 16 or similar
+ * Can be 0
+ *)
+ bits_per_raw_sample: cint;
+
+ (**
+ * Codec-specific bitstream restrictions that the stream conforms to.
+ *)
+ profile: cint;
+ level: cint;
+
+ (**
+ * Video only. The dimensions of the video frame in pixels.
+ *)
+ width: cint;
+ height: cint;
+
+ (**
+ * Video only. The aspect ratio (width / height) which a single pixel
+ * should have when displayed.
+ *
+ * When the aspect ratio is unknown / undefined, the numerator should be
+ * set to 0 (the denominator may have any value).
+ *)
+ sample_aspect_ratio: TAVRational;
+
+ (**
+ * Video only. The order of the fields in interlaced video.
+ *)
+ field_order: TAVFieldOrder;
+
+ (**
+ * Video only. Additional colorspace characteristics.
+ *)
+ color_range: TAVColorRange;
+ color_primaries: TAVColorPrimaries;
+ color_trc: TAVColorTransferCharacteristic;
+ color_space: TAVColorSpace;
+ chroma_location: TAVChromaLocation;
+
+ (**
+ * Video only. Number of delayed frames.
+ *)
+ video_delay: cint;
+
+ (**
+ * Audio only. The channel layout bitmask. May be 0 if the channel layout is
+ * unknown or unspecified, otherwise the number of bits set must be equal to
+ * the channels field.
+ *)
+ channel_layout: cuint64;
+ (**
+ * Audio only. The number of audio channels.
+ *)
+ channels: cint;
+ (**
+ * Audio only. The number of audio samples per second.
+ *)
+ sample_rate: cint;
+ (**
+ * Audio only. The number of bytes per coded audio frame, required by some
+ * formats.
+ *
+ * Corresponds to nBlockAlign in WAVEFORMATEX.
+ *)
+ block_align: cint;
+ (**
+ * Audio only. Audio frame size, if known. Required by some formats to be static.
+ *)
+ frame_size: cint;
+
+ (**
+ * Audio only. The amount of padding (in samples) inserted by the encoder at
+ * the beginning of the audio. I.e. this number of leading decoded samples
+ * must be discarded by the caller to get the original audio without leading
+ * padding.
+ *)
+ initial_padding: cint;
+ (**
+ * Audio only. The amount of padding (in samples) appended by the encoder to
+ * the end of the audio. I.e. this number of decoded samples must be
+ * discarded by the caller from the end of the stream to get the original
+ * audio without any trailing padding.
+ *)
+ trailing_padding: cint;
+ (**
+ * Audio only. Number of samples to skip after a discontinuity.
+ *)
+ seek_preroll: cint;
+ end; {TAVCodecParameters}
+
+(**
+ * AVCodec.
+ *)
+ TAVCodec = record
+ (**
+ * Name of the codec implementation.
+ * The name is globally unique among encoders and among decoders (but an
+ * encoder and a decoder can share the same name).
+ * This is the primary way to find a codec from the user perspective.
+ *)
+ name: PAnsiChar;
+ (**
+ * Descriptive name for the codec, meant to be more human readable than name.
+ * You should use the NULL_IF_CONFIG_SMALL() macro to define it.
+ *)
+ long_name: {const} PAnsiChar;
+ type_: TAVMediaType;
+ id: TAVCodecID;
+ (**
+ * Codec capabilities.
+ * see AV_CODEC_CAP_*
+ *)
+ capabilities: cint;
+ supported_framerates: {const} PAVRational; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
+ pix_fmts: {const} PAVPixelFormat; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
+ supported_samplerates: {const} PCint; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
+ sample_fmts: {const} PAVSampleFormatArray; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
+ channel_layouts: {const} PCuint64; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
+ max_lowres: byte; ///< maximum value for lowres supported by the decoder
+ priv_class: {const} PAVClass; ///< AVClass for the private context
+ profiles: {const} PAVProfile; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
+
+ (**
+ * Group name of the codec implementation.
+ * This is a short symbolic name of the wrapper backing this codec. A
+ * wrapper uses some kind of external implementation for the codec, such
+ * as an external library, or a codec implementation provided by the OS or
+ * the hardware.
+ * If this field is NULL, this is a builtin, libavcodec native codec.
+ * If non-NULL, this will be the suffix in AVCodec.name in most cases
+ * (usually AVCodec.name will be of the form "_").
+ *)
+ wrapper_name: PAnsiChar {const};
+
+ (*****************************************************************
+ * No fields below this line are part of the public API. They
+ * may not be used outside of libavcodec and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+ priv_data_size: cint;
+ next: PAVCodec;
+ (**
+ * @name Frame-level threading support functions
+ * @{
+ *)
+ (**
+ * If defined, called on thread contexts when they are created.
+ * If the codec allocates writable tables in init(), re-allocate them here.
+ * priv_data will be set to a copy of the original.
+ *)
+ init_thread_copy: function (avctx: PAVCodecContext): Pcint; cdecl;
+ (**
+ * Copy necessary context variables from a previous thread context to the current one.
+ * If not defined, the next thread will start automatically; otherwise, the codec
+ * must call ff_thread_finish_setup().
+ *
+ * dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
+ *)
+ update_thread_context: function (dst: PAVCodecContext; src: {const} PAVCodecContext): cint; cdecl;
+ (** @} *)
+
+ (**
+ * Private codec-specific defaults.
+ *)
+ defaults: {const} pointer;
+
+ (**
+ * Initialize codec static data, called from avcodec_register().
+ *
+ * This is not intended for time consuming operations as it is
+ * run for every codec regardless of that codec being used.
+ *)
+ init_static_data: procedure (codec: PAVCodec); cdecl;
+
+ init: function (avctx: PAVCodecContext): cint; cdecl;
+ encode_sub: function (avctx: PAVCodecContext; buf: PByteArray; buf_size: cint;
+ sub: {const} PAVSubtitle): cint; cdecl;
+ (**
+ * Encode data to an AVPacket.
+ *
+ * @param avctx codec context
+ * @param avpkt output AVPacket (may contain a user-provided buffer)
+ * @param[in] frame AVFrame containing the raw data to be encoded
+ * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
+ * non-empty packet was returned in avpkt.
+ * @return 0 on success, negative error code on failure
+ *)
+ encode2: function (avctx: PAVCodecContext; avpkt: PAVPacket; frame: {const} PAVFrame;
+ got_packet_ptr: Pcint): cint; cdecl;
+ decode: function (avctx: PAVCodecContext; outdata: pointer; var outdata_size: cint; avpkt: PAVPacket): cint; cdecl;
+ close: function (avctx: PAVCodecContext): cint; cdecl;
+ (**
+ * Encode API with decoupled packet/frame dataflow. The API is the
+ * same as the avcodec_ prefixed APIs (avcodec_send_frame() etc.), except
+ * that:
+ * - never called if the codec is closed or the wrong type,
+ * - if AV_CODEC_CAP_DELAY is not set, drain frames are never sent,
+ * - only one drain frame is ever passed down,
+ *)
+ send_frame: function(avctx: PAVCodecContext; frame: {const} PAVFrame): cint; cdecl;
+ receive_packet: function(avctx: PAVCodecContext; avpkt: PAVPacket): cint; cdecl;
+
+ (**
+ * Decode API with decoupled packet/frame dataflow. This function is called
+ * to get one output frame. It should call ff_decode_get_packet() to obtain
+ * input data.
+ *)
+ receive_frame: function(avctx: PAVCodecContext; frame: PAVFrame): cint; cdecl;
+ (**
+ * Flush buffers.
+ * Will be called when seeking
+ *)
+ flush: procedure (avctx: PAVCodecContext); cdecl;
+ (**
+ * Internal codec capabilities.
+ * See FF_CODEC_CAP_* in internal.h
+ *)
+ caps_internal: cint;
+
+ (**
+ * Decoding only, a comma-separated list of bitstream filters to apply to
+ * packets before decoding.
+ *)
+ bsfs: {const} PAnsiChar;
+
+ (**
+ * Array of pointers to hardware configurations supported by the codec,
+ * or NULL if no hardware supported. The array is terminated by a NULL
+ * pointer.
+ *
+ * The user can only access this field via avcodec_get_hw_config().
+ *)
+ //const struct AVCodecHWConfigInternal **hw_configs;
+ hw_configs: Ppointer {const};
+ end; {TAVCodec}
+
+(**
+ * Retrieve supported hardware configurations for a codec.
+ *
+ * Values of index from zero to some maximum return the indexed configuration
+ * descriptor; all other values return NULL. If the codec does not support
+ * any hardware configurations then it will always return NULL.
+ *)
+ function avcodec_get_hw_config(codec: PAVCodec {const}; index: cint): PAVCodecHWConfig;
+ cdecl; external av__codec; deprecated; {const}
+
+const
+ (**
+ * HWAccel is experimental and is thus avoided in favor of non experimental
+ * codecs
+ *)
+ AV_HWACCEL_CODEC_CAP_EXPERIMENTAL = $0200;
+
+ (**
+ * Hardware acceleration should be used for decoding even if the codec level
+ * used is unknown or higher than the maximum supported level reported by the
+ * hardware driver.
+ *
+ * It's generally a good idea to pass this flag unless you have a specific
+ * reason not to, as hardware tends to under-report supported levels.
+ *)
+ AV_HWACCEL_FLAG_IGNORE_LEVEL = (1 << 0);
+
+ (**
+ * Hardware acceleration can output YUV pixel formats with a different chroma
+ * sampling than 4:2:0 and/or other than 8 bits per component.
+ *)
+ AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH = (1 << 1);
+
+ (**
+ * Hardware acceleration should still be attempted for decoding when the
+ * codec profile does not match the reported capabilities of the hardware.
+ *
+ * For example, this can be used to try to decode baseline profile H.264
+ * streams in hardware - it will often succeed, because many streams marked
+ * as baseline profile actually conform to constrained baseline profile.
+ *
+ * @warning If the stream is actually not supported then the behaviour is
+ * undefined, and may include returning entirely incorrect output
+ * while indicating success.
+ *)
+ AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH = (1 << 2);
+
+ FF_SUB_CHARENC_MODE_DO_NOTHING = -1; ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance)
+ FF_SUB_CHARENC_MODE_AUTOMATIC = 0; ///< libavcodec will select the mode itself
+ FF_SUB_CHARENC_MODE_PRE_DECODER = 1; ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv
+ FF_SUB_CHARENC_MODE_IGNORE = 2; ///< neither convert the subtitles, nor check them for valid UTF-8
+
+ FF_CODEC_PROPERTY_LOSSLESS = $00000001;
+ FF_CODEC_PROPERTY_CLOSED_CAPTIONS = $00000002;
+ FF_SUB_TEXT_FMT_ASS = 0;
+{$IFDEF FF_API_ASS_TIMING}
+ FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS = 1;
+{$ENDIF}
+
+{$IFDEF FF_API_CODEC_GET_SET}
+ (**
+ * Accessors for some AVCodecContext fields. These used to be provided for ABI
+ * compatibility, and do not need to be used anymore.
+ *)
+ function av_codec_get_pkt_timebase(avctx: {const} PAVCodecContext): TAVRational;
+ cdecl; external av__codec; deprecated;
+ procedure av_codec_set_pkt_timebase(avctx: {const} PAVCodecContext; val: TAVRational);
+ cdecl; external av__codec; deprecated;
+
+ function av_codec_get_codec_descriptor(avctx: {const} PAVCodecContext): PAVCodecDescriptor;
+ cdecl; external av__codec; deprecated;
+ procedure av_codec_set_codec_descriptor(avctx: {const} PAVCodecContext; desc: {const} PAVCodecDescriptor);
+ cdecl; external av__codec; deprecated;
+
+ function av_codec_get_codec_properties(avctx: {const} PAVCodecContext): cuint;
+ cdecl; external av__codec; deprecated;
+
+{$IFDEF FF_API_LOWRES}
+ function av_codec_get_lowres(avctx: {const} PAVCodecContext): cint;
+ cdecl; external av__codec; deprecated;
+ procedure av_codec_set_lowres(avctx: PAVCodecContext; val: cint);
+ cdecl; external av__codec; deprecated;
+{$ENDIF} {FF_API_LOWRES}
+
+ function av_codec_get_seek_preroll(avctx: {const} PAVCodecContext): cint;
+ cdecl; external av__codec; deprecated;
+ procedure av_codec_set_seek_preroll(avctx: PAVCodecContext; val: cint);
+ cdecl; external av__codec; deprecated;
+
+{$IFDEF FF_API_CODEC_GET_SET}
+ function av_codec_get_max_lowres(codec: {const} PAVCodec): cint;
+ cdecl; external av__codec; deprecated;
+{$ENDIF} {FF_API_CODEC_GET_SET}
+
+ function av_codec_get_chroma_intra_matrix(avctx: {const} PAVCodecContext): PWord;
+ cdecl; external av__codec; deprecated;
+ procedure av_codec_set_chroma_intra_matrix(avctx: PAVCodecContext; val: PWord);
+ cdecl; external av__codec; deprecated;
+{$ENDIF} {FF_API_CODEC_GET_SET}
+
+(**
+ * @
+ *)
+
+const
+ AV_SUBTITLE_FLAG_FORCED = $00000001;
+
+(**
+ * Iterate over all registered codecs.
+ *
+ * @param opaque a pointer where libavcodec will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered codec or NULL when the iteration is
+ * finished
+ *)
+function av_codec_iterate(opaque: pointer): PAVCodec;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_NEXT}
+(**
+ * If c is NULL, returns the first registered codec,
+ * if c is non-NULL, returns the next registered codec after c,
+ * or NULL if c is the last one.
+ *)
+function av_codec_next(c: {const} PAVCodec): PAVCodec;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Return the LIBAVCODEC_VERSION_INT constant.
+ *)
+function avcodec_version(): cuint;
+ cdecl; external av__codec;
+
+(**
+ * Return the libavcodec build-time configuration.
+ *)
+function avcodec_configuration(): PAnsiChar;
+ cdecl; external av__codec;
+
+(**
+ * Return the libavcodec license.
+ *)
+function avcodec_license(): PAnsiChar;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_NEXT}
+(**
+ * Register the codec codec and initialize libavcodec.
+ *
+ * @warning either this function or avcodec_register_all() must be called
+ * before any other libavcodec functions.
+ *
+ * @see avcodec_register_all()
+ *)
+procedure avcodec_register(codec: PAVCodec);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * Register all the codecs, parsers and bitstream filters which were enabled at
+ * configuration time. If you do not call this function you can select exactly
+ * which formats you want to support, by using the individual registration
+ * functions.
+ *
+ * @see register_avcodec
+ * @see avcodec_register
+ * @see av_register_codec_parser
+ * @see av_register_bitstream_filter
+ *)
+procedure avcodec_register_all();
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Allocate an AVCodecContext and set its fields to default values. The
+ * resulting struct should be freed with avcodec_free_context().
+ *
+ * @param codec if non-NULL, allocate private data and initialize defaults
+ * for the given codec. It is illegal to then call avcodec_open2()
+ * with a different codec.
+ *
+ * @return An AVCodecContext filled with default values or NULL on failure.
+ *)
+function avcodec_alloc_context3(codec: {const} PAVCodec): PAVCodecContext;
+ cdecl; external av__codec;
+
+(**
+ * Free the codec context and everything associated with it and write NULL to
+ * the provided pointer.
+ *)
+procedure avcodec_free_context(var avctx: PAVCodecContext);
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_GET_CONTEXT_DEFAULTS}
+(**
+ * @deprecated This function should not be used, as closing and opening a codec
+ * context multiple time is not supported. A new codec context should be
+ * allocated for each new use.
+ *)
+procedure avcodec_get_context_defaults3(s: PAVCodecContext; codec: {const} PAVCodec);
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Get the AVClass for AVCodecContext. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function avcodec_get_class(): {const} PAVClass;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_COPY_CONTEXT}
+(**
+ * Get the AVClass for AVFrame. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function avcodec_get_frame_class(): {const} PAVClass;
+ cdecl; external av__codec;
+
+(**
+ * Get the AVClass for AVSubtitleRect. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function avcodec_get_subtitle_rect_class(): {const} PAVClass;
+ cdecl; external av__codec;
+
+(**
+ * Copy the settings of the source AVCodecContext into the destination
+ * AVCodecContext. The resulting destination codec context will be
+ * unopened, i.e. you are required to call avcodec_open2() before you
+ * can use this AVCodecContext to decode/encode video/audio data.
+ *
+ * @param dest target codec context, should be initialized with
+ * avcodec_alloc_context3(), but otherwise uninitialized
+ * @param src source codec context
+ * @return AVERROR() on error (e.g. memory allocation error), 0 on success
+ *
+ * @deprecated The semantics of this function are ill-defined and it should not
+ * be used. If you need to transfer the stream parameters from one codec context
+ * to another, use an intermediate AVCodecParameters instance and the
+ * avcodec_parameters_from_context() / avcodec_parameters_to_context()
+ * functions.
+ *)
+function avcodec_copy_context(dest: PAVCodecContext; src: {const} PAVCodecContext): cint;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Allocate a new AVCodecParameters and set its fields to default values
+ * (unknown/invalid/0). The returned struct must be freed with
+ * avcodec_parameters_free().
+ *)
+function avcodec_parameters_alloc(): PAVCodecParameters;
+ cdecl; external av__codec;
+
+(**
+ * Free an AVCodecParameters instance and everything associated with it and
+ * write NULL to the supplied pointer.
+ *)
+procedure avcodec_parameters_free(par: PPAVCodecParameters);
+ cdecl; external av__codec;
+
+(**
+ * Copy the contents of src to dst. Any allocated fields in dst are freed and
+ * replaced with newly allocated duplicates of the corresponding fields in src.
+ *
+ * @return >= 0 on success, a negative AVERROR code on failure.
+ *)
+function avcodec_parameters_copy(dst: PAVCodecParameters; src: {const} PAVCodecParameters): cint;
+ cdecl; external av__codec;
+
+(**
+ * Fill the parameters struct based on the values from the supplied codec
+ * context. Any allocated fields in par are freed and replaced with duplicates
+ * of the corresponding fields in codec.
+ *
+ * @return >= 0 on success, a negative AVERROR code on failure
+ *)
+function avcodec_parameters_from_context(par: PAVCodecParameters;
+ codec: {const} PAVCodecContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Fill the codec context based on the values from the supplied codec
+ * parameters. Any allocated fields in codec that have a corresponding field in
+ * par are freed and replaced with duplicates of the corresponding field in par.
+ * Fields in codec that do not have a counterpart in par are not touched.
+ *
+ * @return >= 0 on success, a negative AVERROR code on failure.
+ *)
+function avcodec_parameters_to_context(codec: PAVCodecContext;
+ par: {const} PAVCodecParameters): cint;
+ cdecl; external av__codec;
+
+(**
+ * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
+ * function the context has to be allocated with avcodec_alloc_context3().
+ *
+ * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
+ * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
+ * retrieving a codec.
+ *
+ * @warning This function is not thread safe!
+ *
+ * @note Always call this function before using decoding routines (such as
+ * @ref avcodec_receive_frame()).
+ *
+ * @code
+ * avcodec_register_all();
+ * av_dict_set(&opts, "b", "2.5M", 0);
+ * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
+ * if (!codec)
+ * exit(1);
+ *
+ * context = avcodec_alloc_context3(codec);
+ *
+ * if (avcodec_open2(context, codec, opts) < 0)
+ * exit(1);
+ * @endcode
+ *
+ * @param avctx The context to initialize.
+ * @param codec The codec to open this context for. If a non-NULL codec has been
+ * previously passed to avcodec_alloc_context3() or
+ * for this context, then this parameter MUST be either NULL or
+ * equal to the previously passed codec.
+ * @param options A dictionary filled with AVCodecContext and codec-private options.
+ * On return this object will be filled with options that were not found.
+ *
+ * @return zero on success, a negative value on error
+ * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
+ * av_dict_set(), av_opt_find().
+ *)
+function avcodec_open2(avctx: PAVCodecContext; codec: {const} PAVCodec; options: PPAVDictionary): cint;
+ cdecl; external av__codec;
+
+(**
+ * Close a given AVCodecContext and free all the data associated with it
+ * (but not the AVCodecContext itself).
+ *
+ * Calling this function on an AVCodecContext that hasn't been opened will free
+ * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
+ * codec. Subsequent calls will do nothing.
+ *
+ * @note Do not use this function. Use avcodec_free_context() to destroy a
+ * codec context (either open or closed). Opening and closing a codec context
+ * multiple times is not supported anymore -- use multiple codec contexts
+ * instead.
+ *)
+function avcodec_close(avctx: PAVCodecContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Free all allocated data in the given subtitle struct.
+ *
+ * @param sub AVSubtitle to free.
+ *)
+procedure avsubtitle_free(sub: PAVSubtitle);
+ cdecl; external av__codec;
+
+(**
+ * @}
+ *)
+
+(**
+ * @addtogroup lavc_packet
+ * @{
+ *)
+
+(**
+ * Allocate an AVPacket and set its fields to default values. The resulting
+ * struct must be freed using av_packet_free().
+ *
+ * @return An AVPacket filled with default values or NULL on failure.
+ *
+ * @note this only allocates the AVPacket itself, not the data buffers. Those
+ * must be allocated through other means such as av_new_packet.
+ *
+ * @see av_new_packet
+ *)
+function av_packet_alloc(): PAVPacket;
+ cdecl; external av__codec;
+
+(**
+ * Create a new packet that references the same data as src.
+ *
+ * This is a shortcut for av_packet_alloc()+av_packet_ref().
+ *
+ * @return newly created AVPacket on success, NULL on error.
+ *
+ * @see av_packet_alloc
+ * @see av_packet_ref
+ *)
+function av_packet_clone(src: {const} PAVPacket): PAVPacket;
+ cdecl; external av__codec;
+
+(**
+ * Free the packet, if the packet is reference counted, it will be
+ * unreferenced first.
+ *
+ * @param pkt packet to be freed. The pointer will be set to NULL.
+ * @note passing NULL is a no-op.
+ *)
+procedure av_packet_free(pkt: PPAVPacket);
+ cdecl; external av__codec;
+
+(*
+ * Initialize optional fields of a packet with default values.
+ *
+ * Note, this does not touch the data and size members, which have to be
+ * initialized separately.
+ *
+ * @param pkt packet
+ *)
+procedure av_init_packet(var pkt: TAVPacket);
+ cdecl; external av__codec;
+
+(*
+ * Allocate the payload of a packet and initialize its fields with
+ * default values.
+ *
+ * @param pkt packet
+ * @param size wanted payload size
+ * @return 0 if OK, AVERROR_xxx otherwise
+ *)
+function av_new_packet(pkt: PAVPacket; size: cint): cint;
+ cdecl; external av__codec;
+
+(*
+ * Reduce packet size, correctly zeroing padding
+ *
+ * @param pkt packet
+ * @param size new size
+ *)
+procedure av_shrink_packet(pkt: PAVPacket; size: cint);
+ cdecl; external av__codec;
+
+(**
+ * Increase packet size, correctly zeroing padding
+ *
+ * @param pkt packet
+ * @param grow_by number of bytes by which to increase the size of the packet
+ *)
+function av_grow_packet(pkt: PAVPacket; grow_by: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Initialize a reference-counted packet from av_malloc()ed data.
+ *
+ * @param pkt packet to be initialized. This function will set the data, size,
+ * buf and destruct fields, all others are left untouched.
+ * @param data Data allocated by av_malloc() to be used as packet data. If this
+ * function returns successfully, the data is owned by the underlying AVBuffer.
+ * The caller may not access the data through other means.
+ * @param size size of data in bytes, without the padding. I.e. the full buffer
+ * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE.
+ *
+ * @return 0 on success, a negative AVERROR on error
+ *)
+function av_packet_from_data(pkt: PAVPacket; data: PByte; size: cint): cint;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_AVPACKET_OLD_API}
+(*
+ * @warning This is a hack - the packet memory allocation stuff is broken. The
+ * packet is allocated if it was not really allocated.
+ *
+ * @deprecated Use av_packet_ref or av_packet_make_refcounted
+ *)
+function av_dup_packet(pkt: PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Copy packet, including contents
+ *
+ * @return 0 on success, negative AVERROR on fail
+ *
+ * @deprecated Use av_packet_ref
+ *)
+function av_copy_packet(dst: PAVPacket; src: {const} PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * Copy packet side data
+ *
+ * @return 0 on success, negative AVERROR on fail
+ *
+ * @deprecated Use av_packet_copy_props
+ *)
+function av_copy_packet_side_data(dst: PAVPacket; src: {const} PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+
+(*
+ * Free a packet.
+ *
+ * @deprecated Use av_packet_unref
+ *
+ * @param pkt packet to free
+ *)
+procedure av_free_packet(pkt: PAVPacket);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * Allocate new information of a packet.
+ *
+ * @param pkt packet
+ * @param type side information type
+ * @param size side information size
+ * @return pointer to fresh allocated data or NULL otherwise
+ *)
+function av_packet_new_side_data(pkt: PAVPacket; type_: TAVPacketSideDataType;
+ size: cint): PByte;
+ cdecl; external av__codec;
+
+(**
+ * Wrap an existing array as a packet side data.
+ *
+ * @param pkt packet
+ * @param type side information type
+ * @param data the side data array. It must be allocated with the av_malloc()
+ * family of functions. The ownership of the data is transferred to
+ * pkt.
+ * @param size side information size
+ * @return a non-negative number on success, a negative AVERROR code on
+ * failure. On failure, the packet is unchanged and the data remains
+ * owned by the caller.
+ *)
+function av_packet_add_side_data(pkt: PAVPacket; type_: TAVPacketSideDataType;
+ data: Pcuint8; size: size_t): cint;
+ cdecl; external av__codec;
+
+(**
+ * Shrink the already allocated side data buffer
+ *
+ * @param pkt packet
+ * @param type side information type
+ * @param size new side information size
+ * @return 0 on success, < 0 on failure
+ *)
+function av_packet_shrink_side_data(pkt: PAVPacket; type_: TAVPacketSideDataType;
+ size: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Get side information from packet.
+ *
+ * @param pkt packet
+ * @param type desired side information type
+ * @param size pointer for side information size to store (optional)
+ * @return pointer to data if present or NULL otherwise
+ *)
+function av_packet_get_side_data(pkt: {const} PAVPacket; type_: TAVPacketSideDataType;
+ size: Pcint): PByte;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_MERGE_SD_API}
+function av_packet_merge_side_data(pkt: PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+
+function av_packet_split_side_data(pkt: PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+function av_packet_side_data_name(type_: TAVPacketSideDataType): PAnsiChar;
+ cdecl; external av__codec;
+
+(**
+ * Pack a dictionary for use in side_data.
+ *
+ * @param dict The dictionary to pack.
+ * @param size pointer to store the size of the returned data
+ * @return pointer to data if successful, NULL otherwise
+ *)
+function av_packet_pack_dictionary(dict: PAVDictionary; size: PCuint): PByte;
+ cdecl; external av__codec;
+
+(**
+ * Unpack a dictionary from side_data.
+ *
+ * @param data data from side_data
+ * @param size size of the data
+ * @param dict the metadata storage dictionary
+ * @return 0 on success, < 0 on failure
+ *)
+function av_packet_unpack_dictionary(data: {const} PByte; size: cint; dict: PPAVDictionary): cint;
+ cdecl; external av__codec;
+
+(**
+ * Convenience function to free all the side data stored.
+ * All the other fields stay untouched.
+ *
+ * @param pkt packet
+ *)
+procedure av_packet_free_side_data(pkt: PAVPacket);
+ cdecl; external av__codec;
+
+(**
+ * Setup a new reference to the data described by a given packet
+ *
+ * If src is reference-counted, setup dst as a new reference to the
+ * buffer in src. Otherwise allocate a new buffer in dst and copy the
+ * data from src into it.
+ *
+ * All the other fields are copied from src.
+ *
+ * @see av_packet_unref
+ *
+ * @param dst Destination packet
+ * @param src Source packet
+ *
+ * @return 0 on success, a negative AVERROR on error.
+ *)
+function av_packet_ref(dst: PAVPacket; src: {const} PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Wipe the packet.
+ *
+ * Unreference the buffer referenced by the packet and reset the
+ * remaining packet fields to their default values.
+ *
+ * @param pkt The packet to be unreferenced.
+ *)
+procedure av_packet_unref(pkt: PAVPacket);
+ cdecl; external av__codec;
+
+(**
+ * Move every field in src to dst and reset src.
+ *
+ * @see av_packet_unref
+ *
+ * @param src Source packet, will be reset
+ * @param dst Destination packet
+ *)
+procedure av_packet_move_ref(dst: PAVPacket; src: PAVPacket);
+ cdecl; external av__codec;
+
+(**
+ * Copy only "properties" fields from src to dst.
+ *
+ * Properties for the purpose of this function are all the fields
+ * beside those related to the packet data (buf, data, size)
+ *
+ * @param dst Destination packet
+ * @param src Source packet
+ *
+ * @return 0 on success AVERROR on failure.
+ *
+ *)
+function av_packet_copy_props(dst: PAVPacket; src: {const} PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Ensure the data described by a given packet is reference counted.
+ *
+ * @note This function does not ensure that the reference will be writable.
+ * Use av_packet_make_writable instead for that purpose.
+ *
+ * @see av_packet_ref
+ * @see av_packet_make_writable
+ *
+ * @param pkt packet whose data should be made reference counted.
+ *
+ * @return 0 on success, a negative AVERROR on error. On failure, the
+ * packet is unchanged.
+ *)
+function av_packet_make_refcounted(pkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Create a writable reference for the data described by a given packet,
+ * avoiding data copy if possible.
+ *
+ * @param pkt Packet whose data should be made writable.
+ *
+ * @return 0 on success, a negative AVERROR on failure. On failure, the
+ * packet is unchanged.
+ *)
+function av_packet_make_writable(pkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Convert valid timing fields (timestamps / durations) in a packet from one
+ * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
+ * ignored.
+ *
+ * @param pkt packet on which the conversion will be performed
+ * @param tb_src source timebase, in which the timing fields in pkt are
+ * expressed
+ * @param tb_dst destination timebase, to which the timing fields will be
+ * converted
+ *)
+procedure av_packet_rescale_ts(pkt: PAVPacket; tb_src, tb_dst: TAVRational);
+ cdecl; external av__codec;
+
+(**
+ * @
+ *)
+
+(**
+ * @addtogroup lavc_decoding
+ * @
+ *)
+
+(**
+ * Find a registered decoder with a matching codec ID.
+ *
+ * @param id CodecID of the requested decoder
+ * @return A decoder if one was found, NULL otherwise.
+ *)
+function avcodec_find_decoder(id: TAVCodecID): PAVCodec;
+ cdecl; external av__codec;
+
+(**
+ * Find a registered decoder with the specified name.
+ *
+ * @param name name of the requested decoder
+ * @return A decoder if one was found, NULL otherwise.
+ *)
+function avcodec_find_decoder_by_name(name: PAnsiChar): PAVCodec;
+ cdecl; external av__codec;
+
+(**
+ * The default callback for AVCodecContext.get_buffer2(). It is made public so
+ * it can be called by custom get_buffer2() implementations for decoders without
+ * AV_CODEC_CAP_DR1 set.
+ *)
+function avcodec_default_get_buffer2(s: PAVCodecContext; frame: PAVFrame; flags: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Modify width and height values so that they will result in a memory
+ * buffer that is acceptable for the codec if you do not use any horizontal
+ * padding.
+ *
+ * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
+ *)
+procedure avcodec_align_dimensions(s: PAVCodecContext; width: PCint; height: PCint);
+ cdecl; external av__codec;
+
+(**
+ * Modifiy width and height values so that they will result in a memory
+ * buffer that is acceptable for the codec if you also ensure that all
+ * line sizes are a multiple of the respective linesize_align[i].
+ *
+ * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
+ *)
+procedure avcodec_align_dimensions2(s: PAVCodecContext; width: PCint; height: PCint;
+ linesize_align: PAVNDPArray);
+ cdecl; external av__codec;
+
+(**
+ * Decode the audio frame of size avpkt->size from avpkt->data into frame.
+ *
+ * Some decoders may support multiple frames in a single AVPacket. Such
+ * decoders would then just decode the first frame and the return value would be
+ * less than the packet size. In this case, avcodec_decode_audio4 has to be
+ * called again with an AVPacket containing the remaining data in order to
+ * decode the second frame, etc... Even if no frames are returned, the packet
+ * needs to be fed to the decoder with remaining data until it is completely
+ * consumed or an error occurs.
+ *
+ * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
+ * and output. This means that for some packets they will not immediately
+ * produce decoded output and need to be flushed at the end of decoding to get
+ * all the decoded data. Flushing is done by calling this function with packets
+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
+ * returning samples. It is safe to flush even those decoders that are not
+ * marked with AV_CODEC_CAP_DELAY, then no samples will be returned.
+ *
+ * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
+ * larger than the actual read bytes because some optimized bitstream
+ * readers read 32 or 64 bits at once and could read over the end.
+ *
+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
+ * before packets may be fed to the decoder.
+ *
+ * @param avctx the codec context
+ * @param[out] frame The AVFrame in which to store decoded audio samples.
+ * The decoder will allocate a buffer for the decoded frame by
+ * calling the AVCodecContext.get_buffer2() callback.
+ * When AVCodecContext.refcounted_frames is set to 1, the frame is
+ * reference counted and the returned reference belongs to the
+ * caller. The caller must release the frame using av_frame_unref()
+ * when the frame is no longer needed. The caller may safely write
+ * to the frame if av_frame_is_writable() returns 1.
+ * When AVCodecContext.refcounted_frames is set to 0, the returned
+ * reference belongs to the decoder and is valid only until the
+ * next call to this function or until closing or flushing the
+ * decoder. The caller may not write to it.
+ * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is
+ * non-zero. Note that this field being set to zero
+ * does not mean that an error has occurred. For
+ * decoders with AV_CODEC_CAP_DELAY set, no given decode
+ * call is guaranteed to produce a frame.
+ * @param[in] avpkt The input AVPacket containing the input buffer.
+ * At least avpkt->data and avpkt->size should be set. Some
+ * decoders might also require additional fields to be set.
+ * @return A negative error code is returned if an error occurred during
+ * decoding, otherwise the number of bytes consumed from the input
+ * AVPacket is returned.
+ *
+ * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
+ *)
+function avcodec_decode_audio4(avctx: PAVCodecContext; frame: PAVFrame;
+ got_frame_ptr: Pcint; avpkt: PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * Decode the video frame of size avpkt->size from avpkt->data into picture.
+ * Some decoders may support multiple frames in a single AVPacket, such
+ * decoders would then just decode the first frame.
+ *
+ * @warning The input buffer must be AV_INPUT_BUFFER_PADDING_SIZE larger than
+ * the actual read bytes because some optimized bitstream readers read 32 or 64
+ * bits at once and could read over the end.
+ *
+ * @warning The end of the input buffer buf should be set to 0 to ensure that
+ * no overreading happens for damaged MPEG streams.
+ *
+ * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a delay
+ * between input and output, these need to be fed with avpkt->data=NULL,
+ * avpkt->size=0 at the end to return the remaining frames.
+ *
+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
+ * before packets may be fed to the decoder.
+ *
+ * @param avctx the codec context
+ * @param[out] picture The AVFrame in which the decoded video frame will be stored.
+ * Use av_frame_alloc() to get an AVFrame. The codec will
+ * allocate memory for the actual bitmap by calling the
+ * AVCodecContext.get_buffer2() callback.
+ * When AVCodecContext.refcounted_frames is set to 1, the frame is
+ * reference counted and the returned reference belongs to the
+ * caller. The caller must release the frame using av_frame_unref()
+ * when the frame is no longer needed. The caller may safely write
+ * to the frame if av_frame_is_writable() returns 1.
+ * When AVCodecContext.refcounted_frames is set to 0, the returned
+ * reference belongs to the decoder and is valid only until the
+ * next call to this function or until closing or flushing the
+ * decoder. The caller may not write to it.
+ *
+ * @param[in] avpkt The input AVPacket containing the input buffer.
+ * You can create such packet with av_init_packet() and by then setting
+ * data and size, some decoders might in addition need other fields like
+ * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least
+ * fields possible.
+ * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero.
+ * @return On error a negative value is returned, otherwise the number of bytes
+ * used or zero if no frame could be decompressed.
+ *
+ * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
+ *)
+function avcodec_decode_video2(avctx: PAVCodecContext; picture: PAVFrame;
+ var got_picture_ptr: cint;
+ avpkt: {const} PAVPacket): cint;
+ cdecl; external av__codec; deprecated;
+
+(*
+ * Decode a subtitle message.
+ * Return a negative value on error, otherwise return the number of bytes used.
+ * If no subtitle could be decompressed, got_sub_ptr is zero.
+ * Otherwise, the subtitle is stored in *sub.
+ * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
+ * simplicity, because the performance difference is expect to be negligible
+ * and reusing a get_buffer written for video codecs would probably perform badly
+ * due to a potentially very different allocation pattern.
+ *
+ * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
+ * and output. This means that for some packets they will not immediately
+ * produce decoded output and need to be flushed at the end of decoding to get
+ * all the decoded data. Flushing is done by calling this function with packets
+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
+ * returning subtitles. It is safe to flush even those decoders that are not
+ * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
+ *
+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
+ * before packets may be fed to the decoder.
+ *
+ * @param avctx the codec context
+ * @param[out] sub The Preallocated AVSubtitle in which the decoded subtitle will be stored,
+ * must be freed with avsubtitle_free if *got_sub_ptr is set.
+ * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
+ * @param[in] avpkt The input AVPacket containing the input buffer.
+ *)
+function avcodec_decode_subtitle2(avctx: PAVCodecContext; sub: PAVSubtitle;
+ var got_sub_ptr: cint;
+ avpkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Supply raw packet data as input to a decoder.
+ *
+ * Internally, this call will copy relevant AVCodecContext fields, which can
+ * influence decoding per-packet, and apply them when the packet is actually
+ * decoded. (For example AVCodecContext.skip_frame, which might direct the
+ * decoder to drop the frame contained by the packet sent with this function.)
+ *
+ * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
+ * larger than the actual read bytes because some optimized bitstream
+ * readers read 32 or 64 bits at once and could read over the end.
+ *
+ * @warning Do not mix this API with the legacy API (like avcodec_decode_video2())
+ * on the same AVCodecContext. It will return unexpected results now
+ * or in future libavcodec versions.
+ *
+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
+ * before packets may be fed to the decoder.
+ *
+ * @param avctx codec context
+ * @param[in] avpkt The input AVPacket. Usually, this will be a single video
+ * frame, or several complete audio frames.
+ * Ownership of the packet remains with the caller, and the
+ * decoder will not write to the packet. The decoder may create
+ * a reference to the packet data (or copy it if the packet is
+ * not reference-counted).
+ * Unlike with older APIs, the packet is always fully consumed,
+ * and if it contains multiple frames (e.g. some audio codecs),
+ * will require you to call avcodec_receive_frame() multiple
+ * times afterwards before you can send a new packet.
+ * It can be NULL (or an AVPacket with data set to NULL and
+ * size set to 0); in this case, it is considered a flush
+ * packet, which signals the end of the stream. Sending the
+ * first flush packet will return success. Subsequent ones are
+ * unnecessary and will return AVERROR_EOF. If the decoder
+ * still has frames buffered, it will return them after sending
+ * a flush packet.
+ *
+ * @return 0 on success, otherwise negative error code:
+ * AVERROR(EAGAIN): input is not accepted in the current state - user
+ * must read output with avcodec_receive_frame() (once
+ * all output is read, the packet should be resent, and
+ * the call will not fail with EAGAIN).
+ * AVERROR_EOF: the decoder has been flushed, and no new packets can
+ * be sent to it (also returned if more than 1 flush
+ * packet is sent)
+ * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush
+ * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
+ * other errors: legitimate decoding errors
+ *)
+function avcodec_send_packet(avctx: PAVCodecContext; avpkt: {const} PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Return decoded output data from a decoder.
+ *
+ * @param avctx codec context
+ * @param frame This will be set to a reference-counted video or audio
+ * frame (depending on the decoder type) allocated by the
+ * decoder. Note that the function will always call
+ * av_frame_unref(frame) before doing anything else.
+ *
+ * @return
+ * 0: success, a frame was returned
+ * AVERROR(EAGAIN): output is not available in this state - user must try
+ * to send new input
+ * AVERROR_EOF: the decoder has been fully flushed, and there will be
+ * no more output frames
+ * AVERROR(EINVAL): codec not opened, or it is an encoder
+ * other negative values: legitimate decoding errors
+ *)
+function avcodec_receive_frame(avctx: PAVCodecContext; frame: PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
+ * to retrieve buffered output packets.
+ *
+ * @param avctx codec context
+ * @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
+ * Ownership of the frame remains with the caller, and the
+ * encoder will not write to the frame. The encoder may create
+ * a reference to the frame data (or copy it if the frame is
+ * not reference-counted).
+ * It can be NULL, in which case it is considered a flush
+ * packet. This signals the end of the stream. If the encoder
+ * still has packets buffered, it will return them after this
+ * call. Once flushing mode has been entered, additional flush
+ * packets are ignored, and sending frames will return
+ * AVERROR_EOF.
+ *
+ * For audio:
+ * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
+ * can have any number of samples.
+ * If it is not set, frame->nb_samples must be equal to
+ * avctx->frame_size for all frames except the last.
+ * The final frame may be smaller than avctx->frame_size.
+ * @return 0 on success, otherwise negative error code:
+ * AVERROR(EAGAIN): input is not accepted in the current state - user
+ * must read output with avcodec_receive_packet() (once
+ * all output is read, the packet should be resent, and
+ * the call will not fail with EAGAIN).
+ * AVERROR_EOF: the encoder has been flushed, and no new frames can
+ * be sent to it
+ * AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a
+ * decoder, or requires flush
+ * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
+ * other errors: legitimate decoding errors
+ *)
+function avcodec_send_frame(avctx: PAVCodecContext; frame: {const} PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Read encoded data from the encoder.
+ *
+ * @param avctx codec context
+ * @param avpkt This will be set to a reference-counted packet allocated by the
+ * encoder. Note that the function will always call
+ * av_frame_unref(frame) before doing anything else.
+ * @return 0 on success, otherwise negative error code:
+ * AVERROR(EAGAIN): output is not available in the current state - user
+ * must try to send input
+ * AVERROR_EOF: the encoder has been fully flushed, and there will be
+ * no more output packets
+ * AVERROR(EINVAL): codec not opened, or it is an encoder
+ * other errors: legitimate decoding errors
+ *)
+function avcodec_receive_packet(avctx: PAVCodecContext; avpkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Create and return a AVHWFramesContext with values adequate for hardware
+ * decoding. This is meant to get called from the get_format callback, and is
+ * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
+ * This API is for decoding with certain hardware acceleration modes/APIs only.
+ *
+ * The returned AVHWFramesContext is not initialized. The caller must do this
+ * with av_hwframe_ctx_init().
+ *
+ * Calling this function is not a requirement, but makes it simpler to avoid
+ * codec or hardware API specific details when manually allocating frames.
+ *
+ * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
+ * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
+ * it unnecessary to call this function or having to care about
+ * AVHWFramesContext initialization at all.
+ *
+ * There are a number of requirements for calling this function:
+ *
+ * - It must be called from get_format with the same avctx parameter that was
+ * passed to get_format. Calling it outside of get_format is not allowed, and
+ * can trigger undefined behavior.
+ * - The function is not always supported (see description of return values).
+ * Even if this function returns successfully, hwaccel initialization could
+ * fail later. (The degree to which implementations check whether the stream
+ * is actually supported varies. Some do this check only after the user's
+ * get_format callback returns.)
+ * - The hw_pix_fmt must be one of the choices suggested by get_format. If the
+ * user decides to use a AVHWFramesContext prepared with this API function,
+ * the user must return the same hw_pix_fmt from get_format.
+ * - The device_ref passed to this function must support the given hw_pix_fmt.
+ * - After calling this API function, it is the user's responsibility to
+ * initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
+ * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
+ * before returning from get_format (this is implied by the normal
+ * AVCodecContext.hw_frames_ctx API rules).
+ * - The AVHWFramesContext parameters may change every time time get_format is
+ * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
+ * you are inherently required to go through this process again on every
+ * get_format call.
+ * - It is perfectly possible to call this function without actually using
+ * the resulting AVHWFramesContext. One use-case might be trying to reuse a
+ * previously initialized AVHWFramesContext, and calling this API function
+ * only to test whether the required frame parameters have changed.
+ * - Fields that use dynamically allocated values of any kind must not be set
+ * by the user unless setting them is explicitly allowed by the documentation.
+ * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
+ * the new free callback must call the potentially set previous free callback.
+ * This API call may set any dynamically allocated fields, including the free
+ * callback.
+ *
+ * The function will set at least the following fields on AVHWFramesContext
+ * (potentially more, depending on hwaccel API):
+ *
+ * - All fields set by av_hwframe_ctx_alloc().
+ * - Set the format field to hw_pix_fmt.
+ * - Set the sw_format field to the most suited and most versatile format. (An
+ * implication is that this will prefer generic formats over opaque formats
+ * with arbitrary restrictions, if possible.)
+ * - Set the width/height fields to the coded frame size, rounded up to the
+ * API-specific minimum alignment.
+ * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
+ * field to the number of maximum reference surfaces possible with the codec,
+ * plus 1 surface for the user to work (meaning the user can safely reference
+ * at most 1 decoded surface at a time), plus additional buffering introduced
+ * by frame threading. If the hwaccel does not require pre-allocation, the
+ * field is left to 0, and the decoder will allocate new surfaces on demand
+ * during decoding.
+ * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
+ * hardware API.
+ *
+ * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
+ * with basic frame parameters set.
+ *
+ * The function is stateless, and does not change the AVCodecContext or the
+ * device_ref AVHWDeviceContext.
+ *
+ * @param avctx The context which is currently calling get_format, and which
+ * implicitly contains all state needed for filling the returned
+ * AVHWFramesContext properly.
+ * @param device_ref A reference to the AVHWDeviceContext describing the device
+ * which will be used by the hardware decoder.
+ * @param hw_pix_fmt The hwaccel format you are going to return from get_format.
+ * @param out_frames_ref On success, set to a reference to an _uninitialized_
+ * AVHWFramesContext, created from the given device_ref.
+ * Fields will be set to values required for decoding.
+ * Not changed if an error is returned.
+ * @return zero on success, a negative value on error. The following error codes
+ * have special semantics:
+ * AVERROR(ENOENT): the decoder does not support this functionality. Setup
+ * is always manual, or it is a decoder which does not
+ * support setting AVCodecContext.hw_frames_ctx at all,
+ * or it is a software format.
+ * AVERROR(EINVAL): it is known that hardware decoding is not supported for
+ * this configuration, or the device_ref is not supported
+ * for the hwaccel referenced by hw_pix_fmt.
+ *)
+function avcodec_get_hw_frames_parameters(avctx: PAVCodecContext;
+ device_ref: PAVBufferRef;
+ hw_pix_fmt: TAVPixelFormat;
+ out_frames_ref: PPAVBufferRef): cint;
+cdecl; external av__codec;
+
+
+(**
+ * @defgroup lavc_parsing Frame parsing
+ * @
+ *)
+
+type
+ TAVPictureStructure = (
+ AV_PICTURE_STRUCTURE_UNKNOWN, //< unknown
+ AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field
+ AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field
+ AV_PICTURE_STRUCTURE_FRAME //< coded as frame
+ );
+
+const
+ AV_PARSER_PTS_NB = 4;
+ PARSER_FLAG_COMPLETE_FRAMES = $0001;
+ PARSER_FLAG_ONCE = $0002;
+/// Set if the parser has a valid file offset
+ PARSER_FLAG_FETCHED_OFFSET = $0004;
+ PARSER_FLAG_USE_CODEC_TS = $1000;
+
+type
+ (* frame parsing *)
+ PAVCodecParserContext = ^TAVCodecParserContext;
+ PAVCodecParser = ^TAVCodecParser;
+
+ TAVCodecParserContext = record
+ priv_data: pointer;
+ parser: PAVCodecParser;
+ frame_offset: cint64; (* offset of the current frame *)
+ cur_offset: cint64; (* current offset (incremented by each av_parser_parse()) *)
+ next_frame_offset: cint64; (* offset of the next frame *)
+ (* video info *)
+ pict_type: cint; (* XXX: put it back in AVCodecContext *)
+ (**
+ * This field is used for proper frame duration computation in lavf.
+ * It signals, how much longer the frame duration of the current frame
+ * is compared to normal frame duration.
+ *
+ * frame_duration = (1 + repeat_pict) * time_base
+ *
+ * It is used by codecs like H.264 to display telecined material.
+ *)
+ repeat_pict: cint; (* XXX: put it back in AVCodecContext *)
+ pts: cint64; (* pts of the current frame *)
+ dts: cint64; (* dts of the current frame *)
+
+ (* private data *)
+ last_pts: cint64;
+ last_dts: cint64;
+ fetch_timestamp: cint;
+
+ cur_frame_start_index: cint;
+ cur_frame_offset: array [0..AV_PARSER_PTS_NB - 1] of cint64;
+ cur_frame_pts: array [0..AV_PARSER_PTS_NB - 1] of cint64;
+ cur_frame_dts: array [0..AV_PARSER_PTS_NB - 1] of cint64;
+
+ flags: cint;
+
+ offset: cint64; ///< byte offset from starting packet start
+ cur_frame_end: array [0..AV_PARSER_PTS_NB - 1] of cint64;
+
+ (**
+ * Set by parser to 1 for key frames and 0 for non-key frames.
+ * It is initialized to -1, so if the parser doesn't set this flag,
+ * old-style fallback using FF_I_TYPE picture type as key frames
+ * will be used.
+ *)
+ key_frame: cint;
+
+{$IFDEF FF_API_CONVERGENCE_DURATION}
+ (**
+ * @deprecated unused
+ *)
+ convergence_duration: cint64; {deprecated}
+{$ENDIF}
+
+ // Timestamp generation support:
+ (**
+ * Synchronization point for start of timestamp generation.
+ *
+ * Set to >0 for sync point, 0 for no sync point and <0 for undefined
+ * (default).
+ *
+ * For example, this corresponds to presence of H.264 buffering period
+ * SEI message.
+ *)
+ dts_sync_point: cint;
+
+ (**
+ * Offset of the current timestamp against last timestamp sync point in
+ * units of AVCodecContext.time_base.
+ *
+ * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
+ * contain a valid timestamp offset.
+ *
+ * Note that the timestamp of sync point has usually a nonzero
+ * dts_ref_dts_delta, which refers to the previous sync point. Offset of
+ * the next frame after timestamp sync point will be usually 1.
+ *
+ * For example, this corresponds to H.264 cpb_removal_delay.
+ *)
+ dts_ref_dts_delta: cint;
+
+ (**
+ * Presentation delay of current frame in units of AVCodecContext.time_base.
+ *
+ * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
+ * contain valid non-negative timestamp delta (presentation time of a frame
+ * must not lie in the past).
+ *
+ * This delay represents the difference between decoding and presentation
+ * time of the frame.
+ *
+ * For example, this corresponds to H.264 dpb_output_delay.
+ *)
+ pts_dts_delta: cint;
+
+ (**
+ * Position of the packet in file.
+ *
+ * Analogous to cur_frame_pts/dts
+ *)
+ cur_frame_pos: array [0..AV_PARSER_PTS_NB - 1] of cint64;
+
+ (**
+ * Byte position of currently parsed frame in stream.
+ *)
+ pos: cint64;
+
+ (**
+ * Previous frame byte position.
+ *)
+ last_pos: cint64;
+
+ (**
+ * Duration of the current frame.
+ * For audio, this is in units of 1 / AVCodecContext.sample_rate.
+ * For all other types, this is in units of AVCodecContext.time_base.
+ *)
+ duration: cint;
+
+ field_order: TAVFieldOrder;
+
+ (**
+ * Indicate whether a picture is coded as a frame, top field or bottom field.
+ *
+ * For example, H.264 field_pic_flag equal to 0 corresponds to
+ * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
+ * equal to 1 and bottom_field_flag equal to 0 corresponds to
+ * AV_PICTURE_STRUCTURE_TOP_FIELD.
+ *)
+ picture_structure: TAVPictureStructure;
+
+ (**
+ * Picture number incremented in presentation or output order.
+ * This field may be reinitialized at the first picture of a new sequence.
+ *
+ * For example, this corresponds to H.264 PicOrderCnt.
+ *)
+ output_picture_number: cint;
+
+ (**
+ * Dimensions of the decoded video intended for presentation.
+ *)
+ width: cint;
+ height: cint;
+
+ (**
+ * Dimensions of the coded video.
+ *)
+ coded_width: cint;
+ coded_height: cint;
+
+ (**
+ * The format of the coded data, corresponds to enum AVPixelFormat for video
+ * and for enum AVSampleFormat for audio.
+ *
+ * Note that a decoder can have considerable freedom in how exactly it
+ * decodes the data, so the format reported here might be different from the
+ * one returned by a decoder.
+ *)
+ format: cint;
+ end; {AVCodecParserContext}
+
+ TAVCodecParser = record
+ codec_ids: array [0..4] of cint; (* several codec IDs are permitted *)
+ priv_data_size: cint;
+ parser_init: function(s: PAVCodecParserContext): cint; cdecl;
+ (* This callback never returns an error, a negative value means that
+ * the frame start was in a previous packet. *)
+ parser_parse: function(s: PAVCodecParserContext;
+ avctx: PAVCodecContext;
+ poutbuf: {const} PPointer; poutbuf_size: PCint;
+ buf: {const} PByteArray; buf_size: cint): cint; cdecl;
+ parser_close: procedure(s: PAVCodecParserContext); cdecl;
+ split: function(avctx: PAVCodecContext; buf: {const} PByteArray;
+ buf_size: cint): cint; cdecl;
+ next: PAVCodecParser;
+ end; {AVCodecParser}
+
+(**
+ * Iterate over all registered codec parsers.
+ *
+ * @param opaque a pointer where libavcodec will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered codec parser or NULL when the iteration is
+ * finished
+ *)
+function av_parser_iterate(opaque: pointer): PAVCodecParser;
+ cdecl; external av__codec; {const}
+
+function av_parser_next(c: {const} PAVCodecParser): PAVCodecParser;
+ cdecl; external av__codec; deprecated;
+
+procedure av_register_codec_parser(parser: PAVCodecParser);
+ cdecl; external av__codec; deprecated;
+
+function av_parser_init(codec_id: cint): PAVCodecParserContext;
+ cdecl; external av__codec;
+
+(**
+ * Parse a packet.
+ *
+ * @param s parser context.
+ * @param avctx codec context.
+ * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
+ * @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
+ * @param buf input buffer.
+ * @param buf_size buffer size in bytes without the padding. I.e. the full buffer
+ size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
+ To signal EOF, this should be 0 (so that the last frame
+ can be output).
+ * @param pts input presentation timestamp.
+ * @param dts input decoding timestamp.
+ * @param pos input byte position in stream.
+ * @return the number of bytes of the input bitstream used.
+ *
+ * Example:
+ * @code
+ * while (in_len) do
+ * begin
+ * len := av_parser_parse2(myparser, AVCodecContext, data, size,
+ * in_data, in_len,
+ * pts, dts, pos);
+ * in_data := in_data + len;
+ * in_len := in_len - len;
+ *
+ * if (size) then
+ * decode_frame(data, size);
+ * end;
+ * @endcode
+ *)
+function av_parser_parse2(s: PAVCodecParserContext;
+ avctx: PAVCodecContext;
+ poutbuf: PPointer;
+ poutbuf_size: PCint;
+ buf: {const} PByteArray;
+ buf_size: cint;
+ pts: cint64;
+ dts: cint64;
+ pos: cint64): cint;
+ cdecl; external av__codec;
+
+(**
+ * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed
+ * @deprecated use AVBitStreamFilter
+ *)
+function av_parser_change(s: PAVCodecParserContext;
+ avctx: PAVCodecContext;
+ poutbuf: PPointer; poutbuf_size: PCint;
+ buf: {const} PByteArray; buf_size: cint; keyframe: cint): cint;
+ cdecl; external av__codec;
+
+procedure av_parser_close(s: PAVCodecParserContext);
+ cdecl; external av__codec;
+
+(**
+ * @}
+ * @}
+ *)
+
+(**
+ * @addtogroup lavc_encoding
+ * @{
+ *)
+
+(**
+ * Find a registered encoder with a matching codec ID.
+ *
+ * @param id AVCodecID of the requested encoder
+ * @return An encoder if one was found, NULL otherwise.
+ *)
+function avcodec_find_encoder(id: TAVCodecID): PAVCodec;
+ cdecl; external av__codec;
+
+(**
+ * Find a registered encoder with the specified name.
+ *
+ * @param name name of the requested encoder
+ * @return An encoder if one was found, NULL otherwise.
+ *)
+function avcodec_find_encoder_by_name(name: PAnsiChar): PAVCodec;
+ cdecl; external av__codec;
+
+(**
+ * Encode a frame of audio.
+ *
+ * Takes input samples from frame and writes the next output packet, if
+ * available, to avpkt. The output packet does not necessarily contain data for
+ * the most recent frame, as encoders can delay, split, and combine input frames
+ * internally as needed.
+ *
+ * @param avctx codec context
+ * @param avpkt output AVPacket.
+ * The user can supply an output buffer by setting
+ * avpkt->data and avpkt->size prior to calling the
+ * function, but if the size of the user-provided data is not
+ * large enough, encoding will fail. If avpkt->data and
+ * avpkt->size are set, avpkt->destruct must also be set. All
+ * other AVPacket fields will be reset by the encoder using
+ * av_init_packet(). If avpkt->data is NULL, the encoder will
+ * allocate it. The encoder will set avpkt->size to the size
+ * of the output packet.
+ *
+ * If this function fails or produces no output, avpkt will be
+ * freed using av_packet_unref().
+ * @param[in] frame AVFrame containing the raw audio data to be encoded.
+ * May be NULL when flushing an encoder that has the
+ * AV_CODEC_CAP_DELAY capability set.
+ * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
+ * can have any number of samples.
+ * If it is not set, frame->nb_samples must be equal to
+ * avctx->frame_size for all frames except the last.
+ * The final frame may be smaller than avctx->frame_size.
+ * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
+ * output packet is non-empty, and to 0 if it is
+ * empty. If the function returns an error, the
+ * packet can be assumed to be invalid, and the
+ * value of got_packet_ptr is undefined and should
+ * not be used.
+ * @return 0 on success, negative error code on failure
+ *
+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
+ *)
+function avcodec_encode_audio2(avctx: PAVCodecContext; avpkt: PAVPacket;
+ frame: {const} PAVFrame; got_packet_ptr: Pcint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * Encode a frame of video.
+ *
+ * Takes input raw video data from frame and writes the next output packet, if
+ * available, to avpkt. The output packet does not necessarily contain data for
+ * the most recent frame, as encoders can delay and reorder input frames
+ * internally as needed.
+ *
+ * @param avctx codec context
+ * @param avpkt output AVPacket.
+ * The user can supply an output buffer by setting
+ * avpkt->data and avpkt->size prior to calling the
+ * function, but if the size of the user-provided data is not
+ * large enough, encoding will fail. All other AVPacket fields
+ * will be reset by the encoder using av_init_packet(). If
+ * avpkt->data is NULL, the encoder will allocate it.
+ * The encoder will set avpkt->size to the size of the
+ * output packet. The returned data (if any) belongs to the
+ * caller, he is responsible for freeing it.
+ *
+ * If this function fails or produces no output, avpkt will be
+ * freed using av_packet_unref().
+ * @param[in] frame AVFrame containing the raw video data to be encoded.
+ * May be NULL when flushing an encoder that has the
+ * AV_CODEC_CAP_DELAY capability set.
+ * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
+ * output packet is non-empty, and to 0 if it is
+ * empty. If the function returns an error, the
+ * packet can be assumed to be invalid, and the
+ * value of got_packet_ptr is undefined and should
+ * not be used.
+ * @return 0 on success, negative error code on failure
+ *
+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
+ *)
+function avcodec_encode_video2(avctx: PAVCodecContext; avpkt: PAVPacket;
+ frame: {const} PAVFrame; got_packet_ptr: Pcint): cint;
+ cdecl; external av__codec; deprecated;
+
+function avcodec_encode_subtitle(avctx: PAVCodecContext; buf: PByteArray;
+ buf_size: cint; sub: {const} PAVSubtitle): cint;
+ cdecl; external av__codec;
+
+(**
+ * @}
+ *)
+
+{$IFDEF FF_API_AVPICTURE}
+(**
+ * @addtogroup lavc_picture
+ * @{
+ *)
+
+(**
+ * @deprecated unused
+ *)
+function avpicture_alloc (picture: PAVPicture; pix_fmt: TAVPixelFormat;
+ width: cint; height: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated unused
+ *)
+procedure avpicture_free (picture: PAVPicture);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated use av_image_fill_arrays() instead.
+ *)
+function avpicture_fill (picture: PAVPicture; ptr: pcuint8;
+ pix_fmt: TAVPixelFormat; width: cint; height: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated use av_image_copy_to_buffer() instead.
+ *)
+function avpicture_layout (src: {const} PAVPicture; pix_fmt: TAVPixelFormat;
+ width: cint; height: cint;
+ dest: PByteArray; dest_size: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated use av_image_get_buffer_size() instead.
+ *)
+function avpicture_get_size (pix_fmt: TAVPixelFormat; width: cint; height: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated av_image_copy() instead.
+ *)
+procedure av_picture_copy(dst: PAVPicture; src: {const} PAVPicture;
+ pix_fmt: TAVPixelFormat; width: cint; height: cint);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated unused
+ *)
+function av_picture_crop(dst: PAVPicture; src: {const} PAVPicture;
+ pix_fmt: TAVPixelFormat; top_band: cint; left_band: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated unused
+ *)
+function av_picture_pad(dst: PAVPicture; src: {const} PAVPicture;
+ height: cint; width: cint; pix_fmt: TAVPixelFormat;
+ padtop: cint; padbottom: cint; padleft: cint;
+ padright: cint; color: PCint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @}
+ *)
+{$ENDIF}
+
+(**
+ * @defgroup lavc_misc Utility functions
+ * @ingroup libavc
+ *
+ * Miscellaneous utility functions related to both encoding and decoding
+ * (or neither).
+ * @
+ *)
+
+(**
+ * @defgroup lavc_misc_pixfmt Pixel formats
+ *
+ * Functions for working with pixel formats.
+ * @
+ *)
+
+{$IFDEF FF_API_GETCHROMA}
+(**
+ * @deprecated Use av_pix_fmt_get_chroma_sub_sample
+ *)
+
+procedure avcodec_get_chroma_sub_sample (pix_fmt: TAVPixelFormat; var h_shift: cint; var v_shift: cint);
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Return a value representing the fourCC code associated to the
+ * pixel format pix_fmt, or 0 if no associated fourCC code can be
+ * found.
+ *)
+function avcodec_pix_fmt_to_codec_tag(pix_fmt: TAVPixelFormat): cuint;
+ cdecl; external av__codec;
+
+(**
+ * @deprecated see av_get_pix_fmt_loss()
+ *)
+function avcodec_get_pix_fmt_loss (dst_pix_fmt: TAVPixelFormat; src_pix_fmt: TAVPixelFormat;
+ has_alpha: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Find the best pixel format to convert to given a certain source pixel
+ * format. When converting from one pixel format to another, information loss
+ * may occur. For example, when converting from RGB24 to GRAY, the color
+ * information will be lost. Similarly, other losses occur when converting from
+ * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
+ * the given pixel formats should be used to suffer the least amount of loss.
+ * The pixel formats from which it chooses one, are determined by the
+ * pix_fmt_list parameter.
+ *
+ *
+ * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
+ * @param[in] src_pix_fmt source pixel format
+ * @param[in] has_alpha Whether the source pixel format alpha channel is used.
+ * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
+ * @return The best pixel format to convert to or -1 if none was found.
+ *)
+function avcodec_find_best_pix_fmt_of_list(pix_fmt_list: PAVPixelFormat;
+ src_pix_fmt: TAVPixelFormat;
+ has_alpha: cint; loss_ptr: Pcint): TAVPixelFormat;
+ cdecl; external av__codec;
+
+(**
+ * @deprecated see av_find_best_pix_fmt_of_2()
+ *)
+function avcodec_find_best_pix_fmt_of_2(dst_pix_fmt1: TAVPixelFormat; dst_pix_fmt2: TAVPixelFormat;
+ src_pix_fmt: TAVPixelFormat; has_alpha: cint; loss_ptr: Pcint): TAVPixelFormat;
+ cdecl; external av__codec;
+
+function avcodec_find_best_pix_fmt2(dst_pix_fmt1: TAVPixelFormat; dst_pix_fmt2: TAVPixelFormat;
+ src_pix_fmt: TAVPixelFormat; has_alpha: cint; loss_ptr: Pcint): TAVPixelFormat;
+ cdecl; external av__codec; deprecated;
+
+function avcodec_default_get_format(s: PAVCodecContext; fmt: {const} PAVPixelFormat): TAVPixelFormat;
+ cdecl; external av__codec;
+
+(**
+ * @}
+ *)
+
+{$IFDEF FF_API_TAG_STRING}
+(* Put a string representing the codec tag codec_tag in buf.
+ *
+ * @param buf buffer to place codec tag in
+ * @param buf_size size in bytes of buf
+ * @param codec_tag codec tag to assign
+ * @return the length of the string that would have been generated if
+ * enough space had been available, excluding the trailing null
+ *
+ * @deprecated see av_fourcc_make_string() and av_fourcc2str().
+ *)
+function av_get_codec_tag_string(buf: PAnsiChar; buf_size: size_t; codec_tag: cuint): size_t;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+procedure avcodec_string(buf: PAnsiChar; buf_size: cint; enc: PAVCodecContext; encode: cint);
+ cdecl; external av__codec;
+
+(**
+ * Return a name for the specified profile, if available.
+ *
+ * @param codec the codec that is searched for the given profile
+ * @param profile the profile value for which a name is requested
+ * @return A name for the profile if found, NULL otherwise.
+ *)
+function av_get_profile_name(codec: {const} PAVCodec; profile: cint): {const} PAnsiChar;
+ cdecl; external av__codec;
+
+(**
+ * Return a name for the specified profile, if available.
+ *
+ * @param codec_id the ID of the codec to which the requested profile belongs
+ * @param profile the profile value for which a name is requested
+ * @return A name for the profile if found, NULL otherwise.
+ *
+ * @note unlike av_get_profile_name(), which searches a list of profiles
+ * supported by a specific decoder or encoder implementation, this
+ * function searches the list of profiles from the AVCodecDescriptor
+ *)
+function avcodec_profile_name(codec_id: TAVCodecID; profile: cint): {const} PChar;
+ cdecl; external av__codec;
+
+function avcodec_default_execute(s: PAVCodecContext; func: TExecuteFunc; arg: Pointer; var ret: cint; count: cint; size: cint): cint;
+ cdecl; external av__codec;
+
+function avcodec_default_execute2(s: PAVCodecContext; func: TExecuteFunc; arg: Pointer; var ret: cint; count: cint): cint;
+ cdecl; external av__codec;
+//FIXME func typedef
+
+(**
+ * Fill AVFrame audio data and linesize pointers.
+ *
+ * The buffer buf must be a preallocated buffer with a size big enough
+ * to contain the specified samples amount. The filled AVFrame data
+ * pointers will point to this buffer.
+ *
+ * AVFrame extended_data channel pointers are allocated if necessary for
+ * planar audio.
+ *
+ * @param frame the AVFrame
+ * frame->nb_samples must be set prior to calling the
+ * function. This function fills in frame->data,
+ * frame->extended_data, frame->linesize[0].
+ * @param nb_channels channel count
+ * @param sample_fmt sample format
+ * @param buf buffer to use for frame data
+ * @param buf_size size of buffer
+ * @param align plane size sample alignment
+ * @return >=0 on success, negative error code on failure
+ * @todo return the size in bytes required to store the samples in
+ * case of success, at the next libavutil bump
+ *)
+function avcodec_fill_audio_frame(frame: PAVFrame; nb_channels: cint;
+ sample_fmt: TAVSampleFormat; buf: {const} PByte;
+ buf_size: cint; align: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Flush buffers, should be called when seeking or when switching to a different stream.
+ *)
+procedure avcodec_flush_buffers(avctx: PAVCodecContext);
+ cdecl; external av__codec;
+
+(**
+ * Return codec bits per sample.
+ *
+ * @param[in] codec_id the codec
+ * @return Number of bits per sample or zero if unknown for the given codec.
+ *)
+function av_get_bits_per_sample(codec_id: TAVCodecID): cint;
+ cdecl; external av__codec;
+
+(**
+ * Return the PCM codec associated with a sample format.
+ * @param be endianness, 0 for little, 1 for big,
+ * -1 (or anything else) for native
+ * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
+ *)
+function av_get_pcm_codec(fmt: TAVSampleFormat; be: cint): TAVCodecID;
+ cdecl; external av__codec;
+
+(**
+ * Return codec bits per sample.
+ * Only return non-zero if the bits per sample is exactly correct, not an
+ * approximation.
+ *
+ * @param[in] codec_id the codec
+ * @return Number of bits per sample or zero if unknown for the given codec.
+ *)
+function av_get_exact_bits_per_sample(codec_id: TAVCodecID): cint;
+ cdecl; external av__codec;
+
+(**
+ * Return audio frame duration.
+ *
+ * @param avctx codec context
+ * @param frame_bytes size of the frame, or 0 if unknown
+ * @return frame duration, in samples, if known. 0 if not able to
+ * determine.
+ *)
+function av_get_audio_frame_duration(avctx: PAVCodecContext; frame_bytes: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * This function is the same as av_get_audio_frame_duration(), except it works
+ * with AVCodecParameters instead of an AVCodecContext.
+ *)
+function av_get_audio_frame_duration2(par: PAVCodecParameters; frame_bytes: cint): cint;
+ cdecl; external av__codec;
+
+type
+{$IFDEF FF_API_OLD_BSF}
+ PAVBitStreamFilterContext = ^TAVBitStreamFilterContext;
+ PAVBitStreamFilter = ^TAVBitStreamFilter;
+
+ TAVBitStreamFilterContext = record
+ priv_data: pointer;
+ filter: {const} PAVBitStreamFilter;
+ parser: PAVCodecParserContext;
+ next: PAVBitStreamFilterContext;
+ (**
+ * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter().
+ * Not for access by library users.
+ *)
+ args: PChar;
+ end;
+{$ENDIF}
+
+ PAVBSFInternal = ^TAVBSFInternal;
+ TAVBSFInternal = record
+ end;
+
+ (**
+ * The bitstream filter state.
+ *
+ * This struct must be allocated with av_bsf_alloc() and freed with
+ * av_bsf_free().
+ *
+ * The fields in the struct will only be changed (by the caller or by the
+ * filter) as described in their documentation, and are to be considered
+ * immutable otherwise.
+ *)
+ PPAVBSFContext = ^PAVBSFContext;
+ PAVBSFContext = ^TAVBSFContext;
+ TAVBSFContext = record
+ (**
+ * A class for logging and AVOptions
+ *)
+ av_class: {const} PAVClass;
+
+ (**
+ * The bitstream filter this context is an instance of.
+ *)
+ filter: {const} PAVBitStreamFilter;
+
+ (**
+ * Opaque libavcodec internal data. Must not be touched by the caller in any
+ * way.
+ *)
+ internal: PAVBSFInternal;
+
+ (**
+ * Opaque filter-specific private data. If filter->priv_class is non-NULL,
+ * this is an AVOptions-enabled struct.
+ *)
+ priv_data: pointer;
+
+ (**
+ * Parameters of the input stream. This field is allocated in
+ * av_bsf_alloc(), it needs to be filled by the caller before
+ * av_bsf_init().
+ *)
+ par_in: PAVCodecParameters;
+
+ (**
+ * Parameters of the output stream. This field is allocated in
+ * av_bsf_alloc(), it is set by the filter in av_bsf_init().
+ *)
+ par_out: PAVCodecParameters;
+
+ (**
+ * The timebase used for the timestamps of the input packets. Set by the
+ * caller before av_bsf_init().
+ *)
+ time_base_in: TAVRational;
+
+ (**
+ * The timebase used for the timestamps of the output packets. Set by the
+ * filter in av_bsf_init().
+ *)
+ time_base_out: TAVRational;
+ end; {TAVBSFContext}
+
+ TAVBitStreamFilter = record
+ name: PAnsiChar;
+
+ (**
+ * A list of codec ids supported by the filter, terminated by
+ * AV_CODEC_ID_NONE.
+ * May be NULL, in that case the bitstream filter works with any codec id.
+ *)
+ codec_ids: PAVCodecID;
+
+ (**
+ * A class for the private data, used to declare bitstream filter private
+ * AVOptions. This field is NULL for bitstream filters that do not declare
+ * any options.
+ *
+ * If this field is non-NULL, the first member of the filter private data
+ * must be a pointer to AVClass, which will be set by libavcodec generic
+ * code to this class.
+ *)
+ priv_class: PAVClass;
+
+ (*****************************************************************
+ * No fields below this line are part of the public API. They
+ * may not be used outside of libavcodec and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+
+ priv_data_size: cint;
+ init: function(ctx: PAVBSFContext): cint; cdecl;
+ filter: function(ctx: PAVBSFContext; pkt: PAVPacket): cint; cdecl;
+ close: procedure(ctx: PAVBSFContext); cdecl;
+ end;
+
+ PPAVBSFList = ^PAVBSFList;
+ PAVBSFList = ^TAVBSFList;
+ TAVBSFList = record
+ end;
+
+{$IFDEF FF_API_OLD_BSF}
+(**
+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
+ * is deprecated. Use the new bitstream filtering API (using AVBSFContext).
+ *)
+procedure av_register_bitstream_filter(bsf: PAVBitStreamFilter);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
+ * is deprecated. Use av_bsf_get_by_name(), av_bsf_alloc(), and av_bsf_init()
+ * from the new bitstream filtering API (using AVBSFContext).
+ *)
+function av_bitstream_filter_init(name: {const} PAnsiChar): PAVBitStreamFilterContext;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
+ * is deprecated. Use av_bsf_send_packet() and av_bsf_receive_packet() from the
+ * new bitstream filtering API (using AVBSFContext).
+ *)
+function av_bitstream_filter_filter(bsfc: PAVBitStreamFilterContext;
+ avctx: PAVCodecContext; args: {const} PAnsiChar;
+ poutbuf: PPointer; poutbuf_size: PCint;
+ buf: {const} PByte; buf_size: cint; keyframe: cint): cint;
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
+ * is deprecated. Use av_bsf_free() from the new bitstream filtering API (using
+ * AVBSFContext).
+ *)
+procedure av_bitstream_filter_close(bsf: PAVBitStreamFilterContext);
+ cdecl; external av__codec; deprecated;
+
+(**
+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
+ * is deprecated. Use av_bsf_iterate() from the new bitstream filtering API (using
+ * AVBSFContext).
+ *)
+function av_bitstream_filter_next(f: {const} PAVBitStreamFilter): PAVBitStreamFilter;
+ cdecl; external av__codec; deprecated; {const}
+{$ENDIF}
+
+(**
+ * @return a bitstream filter with the specified name or NULL if no such
+ * bitstream filter exists.
+ *)
+function av_bsf_get_by_name(name: {const} PAnsiChar): {const} PAVBitStreamFilter;
+ cdecl; external av__codec;
+
+(**
+ * Iterate over all registered bitstream filters.
+ *
+ * @param opaque a pointer where libavcodec will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered bitstream filter or NULL when the iteration is
+ * finished
+ *)
+function av_bsf_iterate(opaque: pointer): PAVBitStreamFilter;
+ cdecl; external av__codec; {const}
+{$IFDEF FF_API_NEXT}
+function av_bsf_next(opaque: pointer): {const} PAVBitStreamFilter;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Allocate a context for a given bitstream filter. The caller must fill in the
+ * context parameters as described in the documentation and then call
+ * av_bsf_init() before sending any data to the filter.
+ *
+ * @param filter the filter for which to allocate an instance.
+ * @param ctx a pointer into which the pointer to the newly-allocated context
+ * will be written. It must be freed with av_bsf_free() after the
+ * filtering is done.
+ *
+ * @return 0 on success, a negative AVERROR code on failure
+ *)
+function av_bsf_alloc(filter: {const} PAVBitStreamFilter; ctx: PPAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Prepare the filter for use, after all the parameters and options have been
+ * set.
+ *)
+function av_bsf_init(ctx: PAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Submit a packet for filtering.
+ *
+ * After sending each packet, the filter must be completely drained by calling
+ * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or
+ * AVERROR_EOF.
+ *
+ * @param pkt the packet to filter. The bitstream filter will take ownership of
+ * the packet and reset the contents of pkt. pkt is not touched if an error occurs.
+ * This parameter may be NULL, which signals the end of the stream (i.e. no more
+ * packets will be sent). That will cause the filter to output any packets it
+ * may have buffered internally.
+ *
+ * @return 0 on success, a negative AVERROR on error.
+ *)
+function av_bsf_send_packet(ctx: PAVBSFContext; pkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Retrieve a filtered packet.
+ *
+ * @param[out] pkt this struct will be filled with the contents of the filtered
+ * packet. It is owned by the caller and must be freed using
+ * av_packet_unref() when it is no longer needed.
+ * This parameter should be "clean" (i.e. freshly allocated
+ * with av_packet_alloc() or unreffed with av_packet_unref())
+ * when this function is called. If this function returns
+ * successfully, the contents of pkt will be completely
+ * overwritten by the returned data. On failure, pkt is not
+ * touched.
+ *
+ * @return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the
+ * filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there
+ * will be no further output from the filter. Another negative AVERROR value if
+ * an error occurs.
+ *
+ * @note one input packet may result in several output packets, so after sending
+ * a packet with av_bsf_send_packet(), this function needs to be called
+ * repeatedly until it stops returning 0. It is also possible for a filter to
+ * output fewer packets than were sent to it, so this function may return
+ * AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call.
+ *)
+function av_bsf_receive_packet(ctx: PAVBSFContext; pkt: PAVPacket): cint;
+ cdecl; external av__codec;
+
+(**
+ * Free a bitstream filter context and everything associated with it; write NULL
+ * into the supplied pointer.
+ *)
+procedure av_bsf_free(ctx: PPAVBSFContext);
+ cdecl; external av__codec;
+
+(**
+ * Get the AVClass for AVBSFContext. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function av_bsf_get_class(): {const} PAVClass;
+ cdecl; external av__codec;
+
+(**
+ * Allocate empty list of bitstream filters.
+ * The list must be later freed by av_bsf_list_free()
+ * or finalized by av_bsf_list_finalize().
+ *
+ * @return Pointer to @ref AVBSFList on success, NULL in case of failure
+ *)
+function av_bsf_list_alloc(): PAVBSFList;
+ cdecl; external av__codec;
+
+(**
+ * Free list of bitstream filters.
+ *
+ * @param lst Pointer to pointer returned by av_bsf_list_alloc()
+ *)
+procedure av_bsf_list_free(lst: PPAVBSFList);
+ cdecl; external av__codec;
+
+(**
+ * Append bitstream filter to the list of bitstream filters.
+ *
+ * @param lst List to append to
+ * @param bsf Filter context to be appended
+ *
+ * @return >=0 on success, negative AVERROR in case of failure
+ *)
+function av_bsf_list_append(lst: PAVBSFList; bsf: PAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Construct new bitstream filter context given it's name and options
+ * and append it to the list of bitstream filters.
+ *
+ * @param lst List to append to
+ * @param bsf_name Name of the bitstream filter
+ * @param options Options for the bitstream filter, can be set to NULL
+ *
+ * @return >=0 on success, negative AVERROR in case of failure
+ *)
+function av_bsf_list_append2(lst: PAVBSFList; bsf_name: {const} Pcchar; options: PPAVDictionary): cint;
+ cdecl; external av__codec;
+
+(**
+ * Finalize list of bitstream filters.
+ *
+ * This function will transform @ref AVBSFList to single @ref AVBSFContext,
+ * so the whole chain of bitstream filters can be treated as single filter
+ * freshly allocated by av_bsf_alloc().
+ * If the call is successful, @ref AVBSFList structure is freed and lst
+ * will be set to NULL. In case of failure, caller is responsible for
+ * freeing the structure by av_bsf_list_free()
+ *
+ * @param lst Filter list structure to be transformed
+ * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
+ * representing the chain of bitstream filters
+ *
+ * @return >=0 on success, negative AVERROR in case of failure
+ *)
+function av_bsf_list_finalize(lst: PPAVBSFList; bsf: PPAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Parse string describing list of bitstream filters and create single
+ * @ref AVBSFContext describing the whole chain of bitstream filters.
+ * Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly
+ * allocated by av_bsf_alloc().
+ *
+ * @param str String describing chain of bitstream filters in format
+ * `bsf1[=opt1=val1:opt2=val2][,bsf2]`
+ * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
+ * representing the chain of bitstream filters
+ *
+ * @return >=0 on success, negative AVERROR in case of failure
+ *)
+function av_bsf_list_parse_str(str: {const} Pcchar; bsf: PPAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * Get null/pass-through bitstream filter.
+ *
+ * @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter
+ *
+ * @return
+ *)
+function av_bsf_get_null_filter(bsf: PPAVBSFContext): cint;
+ cdecl; external av__codec;
+
+(* memory *)
+
+(**
+ * Same behaviour av_fast_malloc but the buffer has additional
+ * FF_INPUT_BUFFER_PADDING_SIZE at the end which will will always be 0.
+ *
+ * In addition the whole buffer will initially and after resizes
+ * be 0-initialized so that no uninitialized data will ever appear.
+ *)
+procedure av_fast_padded_malloc(ptr: pointer; size: Pcuint; min_size: size_t);
+ cdecl; external av__codec;
+
+(**
+ * Same behaviour av_fast_padded_malloc except that buffer will always
+ * be 0-initialized after call.
+ *)
+procedure av_fast_padded_mallocz(ptr: pointer; size: Pcuint; min_size: size_t);
+ cdecl; external av__codec;
+
+(**
+ * Encode extradata length to a buffer. Used by xiph codecs.
+ *
+ * @param s buffer to write to; must be at least (v/255+1) bytes long
+ * @param v size of extradata in bytes
+ * @return number of bytes written to the buffer.
+ *)
+function av_xiphlacing(s: PByte; v: cuint): cuint;
+ cdecl; external av__codec;
+
+{$IFDEF FF_API_USER_VISIBLE_AVHWACCEL}
+(**
+ * Register the hardware accelerator hwaccel.
+ *
+ * @deprecated This function doesn't do anything.
+ *)
+procedure av_register_hwaccel (hwaccel: PAVHWAccel)
+ cdecl; external av__codec; deprecated;
+
+(**
+ * If hwaccel is NULL, returns the first registered hardware accelerator,
+ * if hwaccel is non-NULL, returns the next registered hardware accelerator
+ * after hwaccel, or NULL if hwaccel is the last one.
+ *
+ * @deprecated AVHWaccel structures contain no user-serviceable parts, so
+ * this function should not be used.
+ *)
+function av_hwaccel_next (hwaccel: {const} PAVHWAccel): PAVHWAccel;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+{$IFDEF FF_API_LOCKMGR}
+(**
+ * Lock operation used by lockmgr
+ *
+ * @deprecated Deprecated together with av_lockmgr_register().
+ *)
+type
+ TAVLockOp = (
+ AV_LOCK_CREATE, ///< Create a mutex
+ AV_LOCK_OBTAIN, ///< Lock the mutex
+ AV_LOCK_RELEASE, ///< Unlock the mutex
+ AV_LOCK_DESTROY ///< Free mutex resources
+ );
+
+(**
+ * Register a user provided lock manager supporting the operations
+ * specified by AVLockOp. The "mutex" argument to the function points
+ * to a (void * ) where the lockmgr should store/get a pointer to a user
+ * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the
+ * value left by the last call for all other ops. If the lock manager is
+ * unable to perform the op then it should leave the mutex in the same
+ * state as when it was called and return a non-zero value. However,
+ * when called with AV_LOCK_DESTROY the mutex will always be assumed to
+ * have been successfully destroyed. If av_lockmgr_register succeeds
+ * it will return a non-negative value, if it fails it will return a
+ * negative value and destroy all mutex and unregister all callbacks.
+ * av_lockmgr_register is not thread-safe, it must be called from a
+ * single thread before any calls which make use of locking are used.
+ *
+ * @param cb User defined callback. av_lockmgr_register invokes calls
+ * to this callback and the previously registered callback.
+ * The callback will be used to create more than one mutex
+ * each of which must be backed by its own underlying locking
+ * mechanism (i.e. do not use a single static object to
+ * implement your lock manager). If cb is set to NULL the
+ * lockmgr will be unregistered.
+ *
+ * @deprecated This function does nothing, and always returns 0. Be sure to
+ * build with thread support to get basic thread safety.
+ *)
+// ToDo: Implement and test this
+//function av_lockmgr_register(cb: function (mutex: Ppointer; op: TAVLockOp)): cint;
+// cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Get the type of the given codec.
+ *)
+function avcodec_get_type(codec_id: TAVCodecID): TAVMediaType;
+ cdecl; external av__codec;
+
+(**
+ * Get the name of a codec.
+ * @return a static string identifying the codec; never NULL
+ *)
+function avcodec_get_name(id: TAVCodecID): PAnsiChar;
+ cdecl; external av__codec;
+
+(**
+ * @return a positive value if s is open (i.e. avcodec_open2() was called on it
+ * with no corresponding avcodec_close()), 0 otherwise.
+ *)
+function avcodec_is_open(s: PAVCodecContext): cint;
+ cdecl; external av__codec;
+
+(**
+ * @return a non-zero number if codec is an encoder, zero otherwise
+ *)
+function av_codec_is_encoder(codec: {const} PAVCodec): cint;
+ cdecl; external av__codec;
+
+(**
+ * @return a non-zero number if codec is a decoder, zero otherwise
+ *)
+function av_codec_is_decoder(codec: {const} PAVCodec): cint;
+ cdecl; external av__codec;
+
+(**
+ * @return descriptor for given codec ID or NULL if no descriptor exists.
+ *)
+function avcodec_descriptor_get(id: TAVCodecID): PAVCodecDescriptor;
+ cdecl; external av__codec;
+
+(**
+ * Iterate over all codec descriptors known to libavcodec.
+ *
+ * @param prev previous descriptor. NULL to get the first descriptor.
+ *
+ * @return next descriptor or NULL after the last descriptor
+ *)
+function avcodec_descriptor_next(prev: {const} PAVCodecDescriptor): PAVCodecDescriptor;
+ cdecl; external av__codec;
+
+(**
+ * @return codec descriptor with the given name or NULL if no such descriptor
+ * exists.
+ *)
+function avcodec_descriptor_get_by_name(name: {const} PAnsiChar): PAVCodecDescriptor;
+ cdecl; external av__codec;
+
+(**
+ * Allocate a CPB properties structure and initialize its fields to default
+ * values.
+ *
+ * @param size if non-NULL, the size of the allocated struct will be written
+ * here. This is useful for embedding it in side data.
+ *
+ * @return the newly allocated struct or NULL on failure
+ *)
+function av_cpb_properties_alloc(size: Psize_t): PAVCPBProperties;
+ cdecl; external av__codec;
+
+(**
+ * @}
+ *)
+
+implementation
+
+end.
diff --git a/src/lib/ffmpeg-4.0/avformat.pas b/src/lib/ffmpeg-4.0/avformat.pas
new file mode 100644
index 00000000..b1fcea54
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/avformat.pas
@@ -0,0 +1,3280 @@
+(*
+ * copyright (c) 2001 Fabrice Bellard
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of version 2.0 libavformat/avformat.h
+ * Version: 56.4.101
+ *)
+
+unit avformat;
+
+{$IFDEF FPC}
+ {$MODE DELPHI }
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I switches.inc} (* for the HasInline define *)
+{$I ff_api-defines.inc} (* FF_API_* defines *)
+
+{$IFDEF DARWIN}
+ {$linklib libavformat}
+{$ENDIF}
+
+interface
+
+uses
+ ctypes,
+ avcodec,
+ avio,
+ avutil,
+ rational,
+ {$IFDEF UNIX}
+ BaseUnix,
+ {$ENDIF}
+ SysUtils,
+ UConfig;
+
+const
+ (*
+ * IMPORTANT: This headers are valid for all minor revisions of ffmpeg
+ * version 2.4.*
+ *)
+ (* Max. supported version by this header *)
+ LIBAVFORMAT_MAX_VERSION_MAJOR = 58;
+ LIBAVFORMAT_MAX_VERSION_MINOR = 20;
+ LIBAVFORMAT_MAX_VERSION_RELEASE = 100;
+ LIBAVFORMAT_MAX_VERSION = (LIBAVFORMAT_MAX_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVFORMAT_MAX_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVFORMAT_MAX_VERSION_RELEASE * VERSION_RELEASE);
+
+ (* Min. supported version by this header *)
+ LIBAVFORMAT_MIN_VERSION_MAJOR = 58;
+ LIBAVFORMAT_MIN_VERSION_MINOR = 12;
+ LIBAVFORMAT_MIN_VERSION_RELEASE = 100;
+ LIBAVFORMAT_MIN_VERSION = (LIBAVFORMAT_MIN_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVFORMAT_MIN_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVFORMAT_MIN_VERSION_RELEASE * VERSION_RELEASE);
+
+(* Check if linked versions are supported *)
+{$IF (LIBAVFORMAT_VERSION < LIBAVFORMAT_MIN_VERSION)}
+ {$MESSAGE Error 'Linked version of libavformat is too old!'}
+{$IFEND}
+
+(* Check if linked versions are supported *)
+{$IF (LIBAVFORMAT_VERSION > LIBAVFORMAT_MAX_VERSION)}
+ {$MESSAGE Error 'Linked version of libavformat is not yet supported!'}
+{$IFEND}
+
+{
+const
+ LIBAVFORMAT_BUILD = LIBAVFORMAT_VERSION_INT;
+ LIBAVFORMAT_IDENT = 'Lavf' AV_STRINGIFY(LIBAVFORMAT_VERSION);
+}
+
+(**
+ * @defgroup libavf libavformat
+ * I/O and Muxing/Demuxing Library
+ *
+ * Libavformat (lavf) is a library for dealing with various media container
+ * formats. Its main two purposes are demuxing - i.e. splitting a media file
+ * into component streams, and the reverse process of muxing - writing supplied
+ * data in a specified container format. It also has an @ref lavf_io
+ * "I/O module" which supports a number of protocols for accessing the data (e.g.
+ * file, tcp, http and others). Before using lavf, you need to call
+ * av_register_all() to register all compiled muxers, demuxers and protocols.
+ * Unless you are absolutely sure you won't use libavformat's network
+ * capabilities, you should also call avformat_network_init().
+ *
+ * A supported input format is described by an AVInputFormat struct, conversely
+ * an output format is described by AVOutputFormat. You can iterate over all
+ * registered input/output formats using the av_iformat_next() /
+ * av_oformat_next() functions. The protocols layer is not part of the public
+ * API, so you can only get the names of supported protocols with the
+ * avio_enum_protocols() function.
+ *
+ * Main lavf structure used for both muxing and demuxing is AVFormatContext,
+ * which exports all information about the file being read or written. As with
+ * most Libavformat structures, its size is not part of public ABI, so it cannot be
+ * allocated on stack or directly with av_malloc(). To create an
+ * AVFormatContext, use avformat_alloc_context() (some functions, like
+ * avformat_open_input() might do that for you).
+ *
+ * Most importantly an AVFormatContext contains:
+ * @li the @ref AVFormatContext.iformat "input" or @ref AVFormatContext.oformat
+ * "output" format. It is either autodetected or set by user for input;
+ * always set by user for output.
+ * @li an @ref AVFormatContext.streams "array" of AVStreams, which describe all
+ * elementary streams stored in the file. AVStreams are typically referred to
+ * using their index in this array.
+ * @li an @ref AVFormatContext.pb "I/O context". It is either opened by lavf or
+ * set by user for input, always set by user for output (unless you are dealing
+ * with an AVFMT_NOFILE format).
+ *
+ * @section lavf_options Passing options to (de)muxers
+ * It is possible to configure lavf muxers and demuxers using the @ref avoptions
+ * mechanism. Generic (format-independent) libavformat options are provided by
+ * AVFormatContext, they can be examined from a user program by calling
+ * av_opt_next() / av_opt_find() on an allocated AVFormatContext (or its AVClass
+ * from avformat_get_class()). Private (format-specific) options are provided by
+ * AVFormatContext.priv_data if and only if AVInputFormat.priv_class /
+ * AVOutputFormat.priv_class of the corresponding format struct is non-NULL.
+ * Further options may be provided by the @ref AVFormatContext.pb "I/O context",
+ * if its AVClass is non-NULL, and the protocols layer. See the discussion on
+ * nesting in @ref avoptions documentation to learn how to access those.
+ *
+ * @section urls
+ * URL strings in libavformat are made of a scheme/protocol, a ':', and a
+ * scheme specific string. URLs without a scheme and ':' used for local files
+ * are supported but deprecated. "file:" should be used for local files.
+ *
+ * It is important that the scheme string is not taken from untrusted
+ * sources without checks.
+ *
+ * Note that some schemes/protocols are quite powerful, allowing access to
+ * both local and remote files, parts of them, concatenations of them, local
+ * audio and video devices and so on.
+ *
+ * @{
+ *
+ * @defgroup lavf_decoding Demuxing
+ * @defgroup lavf_decoding Demuxing
+ * @
+ * Demuxers read a media file and split it into chunks of data (@em packets). A
+ * @ref AVPacket "packet" contains one or more encoded frames which belongs to a
+ * single elementary stream. In the lavf API this process is represented by the
+ * avformat_open_input() function for opening a file, av_read_frame() for
+ * reading a single packet and finally avformat_close_input(), which does the
+ * cleanup.
+ *
+ * @section lavf_decoding_open Opening a media file
+ * The minimum information required to open a file is its URL, which
+ * is passed to avformat_open_input(), as in the following code:
+ * @code
+ * const char *url = "file:in.mp3";
+ * AVFormatContext *s = NULL;
+ * int ret = avformat_open_input(&s, url, NULL, NULL);
+ * if (ret < 0)
+ * abort();
+ * @endcode
+ * The above code attempts to allocate an AVFormatContext, open the
+ * specified file (autodetecting the format) and read the header, exporting the
+ * information stored there into s. Some formats do not have a header or do not
+ * store enough information there, so it is recommended that you call the
+ * avformat_find_stream_info() function which tries to read and decode a few
+ * frames to find missing information.
+ *
+ * In some cases you might want to preallocate an AVFormatContext yourself with
+ * avformat_alloc_context() and do some tweaking on it before passing it to
+ * avformat_open_input(). One such case is when you want to use custom functions
+ * for reading input data instead of lavf internal I/O layer.
+ * To do that, create your own AVIOContext with avio_alloc_context(), passing
+ * your reading callbacks to it. Then set the @em pb field of your
+ * AVFormatContext to newly created AVIOContext.
+ *
+ * Since the format of the opened file is in general not known until after
+ * avformat_open_input() has returned, it is not possible to set demuxer private
+ * options on a preallocated context. Instead, the options should be passed to
+ * avformat_open_input() wrapped in an AVDictionary:
+ * @code
+ * AVDictionary *options = NULL;
+ * av_dict_set(&options, "video_size", "640x480", 0);
+ * av_dict_set(&options, "pixel_format", "rgb24", 0);
+ *
+ * if (avformat_open_input(&s, url, NULL, &options) < 0)
+ * abort();
+ * av_dict_free(&options);
+ * @endcode
+ * This code passes the private options 'video_size' and 'pixel_format' to the
+ * demuxer. They would be necessary for e.g. the rawvideo demuxer, since it
+ * cannot know how to interpret raw video data otherwise. If the format turns
+ * out to be something different than raw video, those options will not be
+ * recognized by the demuxer and therefore will not be applied. Such unrecognized
+ * options are then returned in the options dictionary (recognized options are
+ * consumed). The calling program can handle such unrecognized options as it
+ * wishes, e.g.
+ * @code
+ * AVDictionaryEntry *e;
+ * if (e = av_dict_get(options, "", NULL, AV_DICT_IGNORE_SUFFIX)) {
+ * fprintf(stderr, "Option %s not recognized by the demuxer.\n", e->key);
+ * abort();
+ * }
+ * @endcode
+ *
+ * After you have finished reading the file, you must close it with
+ * avformat_close_input(). It will free everything associated with the file.
+ *
+ * @section lavf_decoding_read Reading from an opened file
+ * Reading data from an opened AVFormatContext is done by repeatedly calling
+ * av_read_frame() on it. Each call, if successful, will return an AVPacket
+ * containing encoded data for one AVStream, identified by
+ * AVPacket.stream_index. This packet may be passed straight into the libavcodec
+ * decoding functions avcodec_send_packet() or avcodec_decode_subtitle2() if the
+ * caller wishes to decode the data.
+ *
+ * AVPacket.pts, AVPacket.dts and AVPacket.duration timing information will be
+ * set if known. They may also be unset (i.e. AV_NOPTS_VALUE for
+ * pts/dts, 0 for duration) if the stream does not provide them. The timing
+ * information will be in AVStream.time_base units, i.e. it has to be
+ * multiplied by the timebase to convert them to seconds.
+ *
+ * If AVPacket.buf is set on the returned packet, then the packet is
+ * allocated dynamically and the user may keep it indefinitely.
+ * Otherwise, if AVPacket.buf is NULL, the packet data is backed by a
+ * static storage somewhere inside the demuxer and the packet is only valid
+ * until the next av_read_frame() call or closing the file. If the caller
+ * requires a longer lifetime, av_dup_packet() will make an av_malloc()ed copy
+ * of it.
+ * In both cases, the packet must be freed with av_packet_unref() when it is no
+ * longer needed.
+ *
+ * @section lavf_decoding_seek Seeking
+ * @
+ *
+ * @defgroup lavf_encoding Muxing
+ * @
+ * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write
+ * it into files or other output bytestreams in the specified container format.
+ *
+ * The main API functions for muxing are avformat_write_header() for writing the
+ * file header, av_write_frame() / av_interleaved_write_frame() for writing the
+ * packets and av_write_trailer() for finalizing the file.
+ *
+ * At the beginning of the muxing process, the caller must first call
+ * avformat_alloc_context() to create a muxing context. The caller then sets up
+ * the muxer by filling the various fields in this context:
+ *
+ * - The @ref AVFormatContext.oformat "oformat" field must be set to select the
+ * muxer that will be used.
+ * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb
+ * "pb" field must be set to an opened IO context, either returned from
+ * avio_open2() or a custom one.
+ * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must
+ * be created with the avformat_new_stream() function. The caller should fill
+ * the @ref AVStream.codecpar "stream codec parameters" information, such as the
+ * codec @ref AVCodecParameters.codec_type "type", @ref AVCodecParameters.codec_id
+ * "id" and other parameters (e.g. width / height, the pixel or sample format,
+ * etc.) as known. The @ref AVStream.time_base "stream timebase" should
+ * be set to the timebase that the caller desires to use for this stream (note
+ * that the timebase actually used by the muxer can be different, as will be
+ * described later).
+ * - It is advised to manually initialize only the relevant fields in
+ * AVCodecParameters, rather than using @ref avcodec_parameters_copy() during
+ * remuxing: there is no guarantee that the codec context values remain valid
+ * for both input and output format contexts.
+ * - The caller may fill in additional information, such as @ref
+ * AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream"
+ * metadata, @ref AVFormatContext.chapters "chapters", @ref
+ * AVFormatContext.programs "programs", etc. as described in the
+ * AVFormatContext documentation. Whether such information will actually be
+ * stored in the output depends on what the container format and the muxer
+ * support.
+ *
+ * When the muxing context is fully set up, the caller must call
+ * avformat_write_header() to initialize the muxer internals and write the file
+ * header. Whether anything actually is written to the IO context at this step
+ * depends on the muxer, but this function must always be called. Any muxer
+ * private options must be passed in the options parameter to this function.
+ *
+ * The data is then sent to the muxer by repeatedly calling av_write_frame() or
+ * av_interleaved_write_frame() (consult those functions' documentation for
+ * discussion on the difference between them; only one of them may be used with
+ * a single muxing context, they should not be mixed). Do note that the timing
+ * information on the packets sent to the muxer must be in the corresponding
+ * AVStream's timebase. That timebase is set by the muxer (in the
+ * avformat_write_header() step) and may be different from the timebase
+ * requested by the caller.
+ *
+ * Once all the data has been written, the caller must call av_write_trailer()
+ * to flush any buffered packets and finalize the output file, then close the IO
+ * context (if any) and finally free the muxing context with
+ * avformat_free_context().
+ * @}
+ *
+ * @defgroup lavf_io I/O Read/Write
+ * @{
+ * @section lavf_io_dirlist Directory listing
+ * The directory listing API makes it possible to list files on remote servers.
+ *
+ * Some of possible use cases:
+ * - an "open file" dialog to choose files from a remote location,
+ * - a recursive media finder providing a player with an ability to play all
+ * files from a given directory.
+ *
+ * @subsection lavf_io_dirlist_open Opening a directory
+ * At first, a directory needs to be opened by calling avio_open_dir()
+ * supplied with a URL and, optionally, ::AVDictionary containing
+ * protocol-specific parameters. The function returns zero or positive
+ * integer and allocates AVIODirContext on success.
+ *
+ * @code
+ * AVIODirContext *ctx = NULL;
+ * if (avio_open_dir(&ctx, "smb://example.com/some_dir", NULL) < 0) {
+ * fprintf(stderr, "Cannot open directory.\n");
+ * abort();
+ * }
+ * @endcode
+ *
+ * This code tries to open a sample directory using smb protocol without
+ * any additional parameters.
+ *
+ * @subsection lavf_io_dirlist_read Reading entries
+ * Each directory's entry (i.e. file, another directory, anything else
+ * within ::AVIODirEntryType) is represented by AVIODirEntry.
+ * Reading consecutive entries from an opened AVIODirContext is done by
+ * repeatedly calling avio_read_dir() on it. Each call returns zero or
+ * positive integer if successful. Reading can be stopped right after the
+ * NULL entry has been read -- it means there are no entries left to be
+ * read. The following code reads all entries from a directory associated
+ * with ctx and prints their names to standard output.
+ * @code
+ * AVIODirEntry *entry = NULL;
+ * for (;;) {
+ * if (avio_read_dir(ctx, &entry) < 0) {
+ * fprintf(stderr, "Cannot list directory.\n");
+ * abort();
+ * }
+ * if (!entry)
+ * break;
+ * printf("%s\n", entry->name);
+ * avio_free_directory_entry(&entry);
+ * }
+ * @endcode
+ * @}
+ *
+ * @defgroup lavf_codec Demuxers
+ * @{
+ * @defgroup lavf_codec_native Native Demuxers
+ * @{
+ * @}
+ * @defgroup lavf_codec_wrappers External library wrappers
+ * @{
+ * @}
+ * @}
+ * @defgroup lavf_protos I/O Protocols
+ * @{
+ * @}
+ * @defgroup lavf_internal Internal
+ * @{
+ * @}
+ * @}
+ *)
+
+//type
+
+(*
+ * @defgroup metadata_api Public Metadata API
+ * @
+ * @ingroup libavf
+ * The metadata API allows libavformat to export metadata tags to a client
+ * application when demuxing. Conversely it allows a client application to
+ * set metadata when muxing.
+ *
+ * Metadata is exported or set as pairs of key/value strings in the 'metadata'
+ * fields of the AVFormatContext, AVStream, AVChapter and AVProgram structs
+ * using the @ref lavu_dict "AVDictionary" API. Like all strings in FFmpeg,
+ * metadata is assumed to be UTF-8 encoded Unicode. Note that metadata
+ * exported by demuxers isn't checked to be valid UTF-8 in most cases.
+ *
+ * Important concepts to keep in mind:
+ * - Keys are unique; there can never be 2 tags with the same key. This is
+ * also meant semantically, i.e., a demuxer should not knowingly produce
+ * several keys that are literally different but semantically identical.
+ * E.g., key=Author5, key=Author6. In this example, all authors must be
+ * placed in the same tag.
+ * - Metadata is flat, not hierarchical; there are no subtags. If you
+ * want to store, e.g., the email address of the child of producer Alice
+ * and actor Bob, that could have key=alice_and_bobs_childs_email_address.
+ * - Several modifiers can be applied to the tag name. This is done by
+ * appending a dash character ('-') and the modifier name in the order
+ * they appear in the list below -- e.g. foo-eng-sort, not foo-sort-eng.
+ * - language -- a tag whose value is localized for a particular language
+ * is appended with the ISO 639-2/B 3-letter language code.
+ * For example: Author-ger=Michael, Author-eng=Mike
+ * The original/default language is in the unqualified "Author" tag.
+ * A demuxer should set a default if it sets any translated tag.
+ * - sorting -- a modified version of a tag that should be used for
+ * sorting will have '-sort' appended. E.g. artist="The Beatles",
+ * artist-sort="Beatles, The".
+ *
+ * - Demuxers attempt to export metadata in a generic format, however tags
+ * with no generic equivalents are left as they are stored in the container.
+ * Follows a list of generic tag names:
+ *
+ @verbatim
+ album -- name of the set this work belongs to
+ album_artist -- main creator of the set/album, if different from artist.
+ e.g. "Various Artists" for compilation albums.
+ artist -- main creator of the work
+ comment -- any additional description of the file.
+ composer -- who composed the work, if different from artist.
+ copyright -- name of copyright holder.
+ creation_time-- date when the file was created, preferably in ISO 8601.
+ date -- date when the work was created, preferably in ISO 8601.
+ disc -- number of a subset, e.g. disc in a multi-disc collection.
+ encoder -- name/settings of the software/hardware that produced the file.
+ encoded_by -- person/group who created the file.
+ filename -- original name of the file.
+ genre -- .
+ language -- main language in which the work is performed, preferably
+ in ISO 639-2 format. Multiple languages can be specified by
+ separating them with commas.
+ performer -- artist who performed the work, if different from artist.
+ E.g for "Also sprach Zarathustra", artist would be "Richard
+ Strauss" and performer "London Philharmonic Orchestra".
+ publisher -- name of the label/publisher.
+ service_name -- name of the service in broadcasting (channel name).
+ service_provider -- name of the service provider in broadcasting.
+ title -- name of the work.
+ track -- number of this work in the set, can be in form current/total.
+ variant_bitrate -- the total bitrate of the bitrate variant that the current stream is part of
+ @endverbatim
+ *
+ * Look in the examples section for an application example how to use the Metadata API.
+ *
+ * @
+ *)
+
+(* packet functions *)
+
+(**
+ * Allocate and read the payload of a packet and initialize its fields with
+ * default values.
+ *
+ * @param s associated IO context
+ * @param pkt packet
+ * @param size desired payload size
+ * @return >0 (read size) if OK, AVERROR_xxx otherwise
+ *)
+function av_get_packet(s: PAVIOContext; var pkt: TAVPacket; size: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Read data and append it to the current content of the AVPacket.
+ * If pkt->size is 0 this is identical to av_get_packet.
+ * Note that this uses av_grow_packet and thus involves a realloc
+ * which is inefficient. Thus this function should only be used
+ * when there is no reasonable way to know (an upper bound of)
+ * the final size.
+ *
+ * @param s associated IO context
+ * @param pkt packet
+ * @param size amount of data to read
+ * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data
+ * will not be lost even if an error occurs.
+ *)
+function av_append_packet(s: PAVIOContext; var pkt: TAVPacket; size: cint): cint;
+ cdecl; external av__format;
+
+{$IFNDEF FPC}
+ //defines for delphi
+ size_t = cardinal;
+{$ENDIF}
+
+(*************************************************)
+(* input/output formats *)
+
+type
+ (**
+ * This structure contains the data a format has to probe a file.
+ *)
+ TAVProbeData = record
+ filename: PAnsiChar;
+ buf: PByteArray; (**< Buffer must have AVPROBE_PADDING_SIZE of extra allocated bytes filled with zero. *)
+ buf_size: cint; (**< Size of buf except extra allocated bytes *)
+ {const} mime_type: PAnsiChar; (**< mime_type, when known. *)
+ end;
+
+const
+ AVPROBE_SCORE_EXTENSION = 50; ///< score for file extension
+ AVPROBE_SCORE_MIME = 75; ///< score for file mime type
+ AVPROBE_SCORE_MAX = 100; ///< maximum score
+
+ AVPROBE_SCORE_RETRY = (AVPROBE_SCORE_MAX DIV 4);
+ AVPROBE_SCORE_STREAM_RETRY = (AVPROBE_SCORE_MAX DIV 4-1);
+
+ AVPROBE_PADDING_SIZE = 32; ///< extra allocated bytes at the end of the probe buffer
+
+/// Demuxer will use avio_open, no opened file should be provided by the caller.
+ AVFMT_NOFILE = $0001;
+ AVFMT_NEEDNUMBER = $0002; (**< Needs '%d' in filename. *)
+ AVFMT_SHOW_IDS = $0008; (**< Show format stream IDs numbers. *)
+ AVFMT_GLOBALHEADER = $0040; (**< Format wants global header. *)
+ AVFMT_NOTIMESTAMPS = $0080; (**< Format does not need / have any timestamps. *)
+ AVFMT_GENERIC_INDEX = $0100; (**< Use generic index building code. *)
+ AVFMT_TS_DISCONT = $0200; (**< Format allows timestamp discontinuities. *)
+ AVFMT_VARIABLE_FPS = $0400; (**< Format allows variable fps. *)
+ AVFMT_NODIMENSIONS = $0800; (**< Format does not need width/height *)
+ AVFMT_NOSTREAMS = $1000; (**< Format does not require any streams *)
+ AVFMT_NOBINSEARCH = $2000; (**< Format does not allow to fall back to binary search via read_timestamp *)
+ AVFMT_NOGENSEARCH = $4000; (**< Format does not allow to fall back to generic search *)
+ AVFMT_NO_BYTE_SEEK = $8000; (**< Format does not allow seeking by bytes *)
+ AVFMT_ALLOW_FLUSH = $10000;(**< Format allows flushing. If not set, the muxer will not receive a NULL packet in the write_packet function. *)
+ AVFMT_TS_NONSTRICT = $20000;(**< Format does not require strictly
+ increasing timestamps, but they must
+ still be monotonic *)
+ AVFMT_TS_NEGATIVE = $40000; (**< Format allows muxing negative
+ timestamps. If not set the timestamp
+ will be shifted in av_write_frame and
+ av_interleaved_write_frame so they
+ start from 0.
+ The user or muxer can override this through
+ AVFormatContext.avoid_negative_ts
+ *)
+
+ AVFMT_SEEK_TO_PTS = $4000000; (**< Seeking is based on PTS *)
+
+ // used by AVIndexEntry
+ AVINDEX_KEYFRAME = $0001;
+ AVINDEX_DISCARD_FRAME = $0002; (**
+ * Flag is used to indicate which frame should be discarded after decoding.
+ *)
+ AVFMTCTX_NOHEADER = $0001; (**< signal that no header is present
+ (streams are added dynamically) *)
+ AVFMTCTX_UNSEEKABLE = $0002; (**< signal that the stream is definitely
+ not seekable, and attempts to call the
+ seek function will fail. For some
+ network protocols (e.g. HLS), this can
+ change dynamically at runtime. *)
+
+
+ MAX_STREAMS = 20;
+
+ AVFMT_FLAG_GENPTS = $0001; ///< Generate missing pts even if it requires parsing future frames.
+ AVFMT_FLAG_IGNIDX = $0002; ///< Ignore index.
+ AVFMT_FLAG_NONBLOCK = $0004; ///< Do not block when reading packets from input.
+ AVFMT_FLAG_IGNDTS = $0008; ///< Ignore DTS on frames that contain both DTS & PTS
+ AVFMT_FLAG_NOFILLIN = $0010; ///< Do not infer any values from other values, just return what is stored in the container
+ AVFMT_FLAG_NOPARSE = $0020; ///< Do not use AVParsers, you also must set AVFMT_FLAG_NOFILLIN as the fillin code works on frames and no parsing -> no frames. Also seeking to frames can not work if parsing to find frame boundaries has been disabled
+ AVFMT_FLAG_NOBUFFER = $0040; ///< Do not buffer frames when possible
+ AVFMT_FLAG_CUSTOM_IO = $0080; ///< The caller has supplied a custom AVIOContext, don't avio_close() it.
+ AVFMT_FLAG_DISCARD_CORRUPT = $0100; ///< Discard frames marked corrupted
+ AVFMT_FLAG_FLUSH_PACKETS = $0200; ///< Flush the AVIOContext every packet.
+(**
+ * When muxing, try to avoid writing any random/volatile data to the output.
+ * This includes any random IDs, real-time timestamps/dates, muxer version, etc.
+ *
+ * This flag is mainly intended for testing.
+ *)
+ AVFMT_FLAG_BITEXACT = $0400;
+ AVFMT_FLAG_MP4A_LATM = $8000; ///< Enable RTP MP4A-LATM payload
+ AVFMT_FLAG_SORT_DTS = $10000; ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
+ AVFMT_FLAG_PRIV_OPT = $20000; ///< Enable use of private options by delaying codec open (this could be made default once all code is converted)
+ {$IFDEF FF_API_LAVF_KEEPSIDE_FLAG}
+ AVFMT_FLAG_KEEP_SIDE_DATA = $40000; ///< Deprecated, does nothing.
+ {$ENDIF}
+ AVFMT_FLAG_FAST_SEEK = $80000; ///< Enable fast, but inaccurate seeks for some formats
+ AVFMT_FLAG_SHORTEST = $100000; ///< Stop muxing when the shortest stream stops.
+ AVFMT_FLAG_AUTO_BSF = $200000; ///< Add bitstream filters as requested by the muxer
+
+ // used by AVStream
+ AVSTREAM_EVENT_FLAG_METADATA_UPDATED = $0001; ///< The call resulted in updated metadata.
+ MAX_STD_TIMEBASES = (30*12+30+3+6);
+ MAX_REORDER_DELAY = 16;
+
+ // used by TAVProgram
+ AV_PROGRAM_RUNNING = 1;
+
+
+ AV_DISPOSITION_DEFAULT = $0001;
+ AV_DISPOSITION_DUB = $0002;
+ AV_DISPOSITION_ORIGINAL = $0004;
+ AV_DISPOSITION_COMMENT = $0008;
+ AV_DISPOSITION_LYRICS = $0010;
+ AV_DISPOSITION_KARAOKE = $0020;
+
+ (**
+ * Track should be used during playback by default.
+ * Useful for subtitle track that should be displayed
+ * even when user did not explicitly ask for subtitles.
+ *)
+ AV_DISPOSITION_FORCED = $0040;
+ AV_DISPOSITION_HEARING_IMPAIRED = $0080; (**< stream for hearing impaired audiences *)
+ AV_DISPOSITION_VISUAL_IMPAIRED = $0100; (**< stream for visual impaired audiences *)
+ AV_DISPOSITION_CLEAN_EFFECTS = $0200; (**< stream without voice *)
+(**
+ * The stream is stored in the file as an attached picture/"cover art" (e.g.
+ * APIC frame in ID3v2). The first (usually only) packet associated with it
+ * will be returned among the first few packets read from the file unless
+ * seeking takes place. It can also be accessed at any time in
+ * AVStream.attached_pic.
+ *)
+ AV_DISPOSITION_ATTACHED_PIC = $0400;
+
+(**
+ * The stream is sparse, and contains thumbnail images, often corresponding
+ * to chapter markers. Only ever used with AV_DISPOSITION_ATTACHED_PIC.
+ *)
+ AV_DISPOSITION_TIMED_THUMBNAILS = $0800;
+
+(**
+ * To specify text track kind (different from subtitles default).
+ *)
+ AV_DISPOSITION_CAPTIONS = $10000;
+ AV_DISPOSITION_DESCRIPTIONS = $20000;
+ AV_DISPOSITION_METADATA = $40000;
+ AV_DISPOSITION_DEPENDENT = $80000; ///< dependent audio stream (mix_type=0 in mpegts)
+
+(**
+ * Options for behavior on timestamp wrap detection.
+ *)
+ AV_PTS_WRAP_IGNORE = 0; ///< ignore the wrap
+ AV_PTS_WRAP_ADD_OFFSET = 1; ///< add the format specific offset on wrap detection
+ AV_PTS_WRAP_SUB_OFFSET = -1; ///< subtract the format specific offset on wrap detection
+
+ // used by TAVFormatContext.debug
+ FF_FDEBUG_TS = 0001;
+ AVFMT_EVENT_FLAG_METADATA_UPDATED = 0001; ///< The call resulted in updated metadata.
+
+ RAW_PACKET_BUFFER_SIZE = 2500000;
+
+ AVFMT_AVOID_NEG_TS_AUTO = -1; ///< Enabled when required by target format
+ AVFMT_AVOID_NEG_TS_MAKE_NON_NEGATIVE = 1; ///< Shift timestamps so they are non negative
+ AVFMT_AVOID_NEG_TS_MAKE_ZERO = 2; ///< Shift timestamps so that they start at 0
+
+type
+ PPAVCodecTag = ^PAVCodecTag;
+ PAVCodecTag = Pointer;
+
+ PAVOutputFormat = ^TAVOutputFormat;
+ PAVProbeData = ^TAVProbeData;
+
+ PAVInputFormat = ^TAVInputFormat;
+ PAVIndexEntry = ^TAVIndexEntry;
+
+ PPAVStream = ^PAVStream;
+ PAVStream = ^TAVStream;
+ PAVPacketList = ^TAVPacketList;
+ TAVPacketList = record
+ pkt: TAVPacket;
+ next: PAVPacketList;
+ end; (*AVPacketList*)
+
+ PPAVProgram = ^PAVProgram;
+ PAVProgram = ^TAVProgram;
+
+ PPAVFormatContext = ^PAVFormatContext;
+ PAVFormatContext = ^TAVFormatContext;
+
+(**
+ * Convert all the metadata sets from ctx according to the source and
+ * destination conversion tables.
+ *
+ * @param d_conv destination tags format conversion table
+ * @param s_conv source tags format conversion table
+ *)
+ PAVMetadataConv = ^TAVMetadataConv;
+ TAVMetadataConv = record
+ ctx: PAVFormatContext;
+ d_conv: {const} PAVMetadataConv;
+ s_conv: {const} PAVMetadataConv;
+ end;
+
+ (** From libavdevice/avdevice.h **)
+ PPAVDeviceInfo = ^PAVDeviceInfo;
+ PAVDeviceInfo = ^TAVDeviceInfo;
+ TAVDeviceInfo = record
+ device_name: PAnsiChar; (**< device name, format depends on device *)
+ device_description: PAnsiChar; (**< human friendly name *)
+ end; {TAVDeviceInfo}
+
+ PAVDeviceInfoList = ^TAVDeviceInfoList;
+ TAVDeviceInfoList = record
+ devices: PPAVDeviceInfo; (**< list of autodetected devices *)
+ nb_devices: cint; (**< number of autodetected devices *)
+ default_device: cint; (**< index of default device or -1 if no default *)
+ end; {TAVDeviceInfoList}
+
+ PAVDeviceCapabilitiesQuery = ^TAVDeviceCapabilitiesQuery;
+ TAVDeviceCapabilitiesQuery = record
+ end;
+
+ PFFFrac = ^TFFFrac;
+ TFFFrac = record
+ val: cint64;
+ num: cint64;
+ den: cint64;
+ end;
+
+(**
+ * @addtogroup lavf_encoding
+ * @
+ *)
+ TAVOutputFormat = record
+ name: PAnsiChar;
+ (**
+ * Descriptive name for the format, meant to be more human-readable
+ * than name. You should use the NULL_IF_CONFIG_SMALL() macro
+ * to define it.
+ *)
+ long_name: PAnsiChar;
+ mime_type: PAnsiChar;
+ extensions: PAnsiChar; (**< comma-separated filename extensions *)
+ (* output support *)
+ audio_codec: TAVCodecID; (**< default audio codec *)
+ video_codec: TAVCodecID; (**< default video codec *)
+ subtitle_codec: TAVCodecID; (**< default subtitle codec *)
+ (**
+ * can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER,
+ * AVFMT_GLOBALHEADER, AVFMT_NOTIMESTAMPS, AVFMT_VARIABLE_FPS,
+ * AVFMT_NODIMENSIONS, AVFMT_NOSTREAMS, AVFMT_ALLOW_FLUSH,
+ * AVFMT_TS_NONSTRICT, AVFMT_TS_NEGATIVE
+ *)
+ flags: cint;
+
+ (**
+ * List of supported codec_id-codec_tag pairs, ordered by "better
+ * choice first". The arrays are all terminated by AV_CODEC_ID_NONE.
+ *)
+ codec_tag: {const} PPAVCodecTag;
+
+ priv_class: {const} PAVClass; ///< AVClass for the private context
+
+ (*****************************************************************
+ * No fields below this line are part of the public API. They
+ * may not be used outside of libavformat and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+ next: PAVOutputFormat;
+ (**
+ * size of private data so that it can be allocated in the wrapper
+ *)
+ priv_data_size: cint;
+
+ write_header: function (c: PAVFormatContext): cint; cdecl;
+ (**
+ * Write a packet. If AVFMT_ALLOW_FLUSH is set in flags,
+ * pkt can be NULL in order to flush data buffered in the muxer.
+ * When flushing, return 0 if there still is more data to flush,
+ * or 1 if everything was flushed and there is no more buffered
+ * data.
+ *)
+ write_packet: function (c: PAVFormatContext; pkt: PAVPacket): cint; cdecl;
+ write_trailer: function (c: PAVFormatContext): cint; cdecl;
+ (**
+ * Currently only used to set pixel format if not YUV420P.
+ *)
+ interleave_packet: function (s: PAVFormatContext; out_: PAVPacket;
+ in_: PAVPacket; flush: cint): cint; cdecl;
+ (**
+ * Test if the given codec can be stored in this container.
+ *
+ * @return 1 if the codec is supported, 0 if it is not.
+ * A negative number if unknown.
+ * MKTAG('A', 'P', 'I', 'C') if the codec is only supported as AV_DISPOSITION_ATTACHED_PIC
+ *)
+ query_codec: function (id: TAVCodecID; std_compliance: cint): cint; cdecl;
+
+ get_output_timestamp: procedure (s: PAVFormatContext; stream: cint;
+ dts: Pcint64; wall: Pcint64); cdecl;
+
+ (**
+ * Allows sending messages from application to device.
+ *)
+ control_message: function(s: PAVFormatContext; type_: cint; data: pointer;
+ data_size: size_t): cint; cdecl;
+
+ (**
+ * Write an uncoded AVFrame.
+ *
+ * See av_write_uncoded_frame() for details.
+ *
+ * The library will free *frame afterwards, but the muxer can prevent it
+ * by setting the pointer to NULL.
+ *)
+ write_uncodec_frame: function(s: PAVFormatContext; stream_index: cint;
+ frame: PPAVFrame; flags: cuint): cint; cdecl;
+
+ (**
+ * Returns device list with it properties.
+ * @see avdevice_list_devices() for more details.
+ *)
+ get_device_list: function(s: PAVFormatContext; device_list: PAVDeviceInfoList): cint; cdecl;
+
+ (**
+ * Initialize device capabilities submodule.
+ * @see avdevice_capabilities_create() for more details.
+ *)
+ create_device_capabilities: function(s: PAVFormatContext; caps: PAVDeviceCapabilitiesQuery): cint; cdecl;
+
+ (**
+ * Free device capabilities submodule.
+ * @see avdevice_capabilities_free() for more details.
+ *)
+ free_device_capabilities: function(s: PAVFormatContext; caps: PAVDeviceCapabilitiesQuery): cint; cdecl;
+
+ data_codec: TAVCodecID; (**< default data codec *)
+
+ (**
+ * Initialize format. May allocate data here, and set any AVFormatContext or
+ * AVStream parameters that need to be set before packets are sent.
+ * This method must not write output.
+ *
+ * Return 0 if streams were fully configured, 1 if not, negative AVERROR on failure
+ *
+ * Any allocations made here must be freed in deinit().
+ *)
+ init: function(s: PAVFormatContext): cint; cdecl;
+
+ (**
+ * Deinitialize format. If present, this is called whenever the muxer is being
+ * destroyed, regardless of whether or not the header has been written.
+ *
+ * If a trailer is being written, this is called after write_trailer().
+ *
+ * This is called if init() fails as well.
+ *)
+ deinit: procedure(s: PAVFormatContext);
+
+ (**
+ * Set up any necessary bitstream filtering and extract any extra data needed
+ * for the global header.
+ * Return 0 if more packets from this stream must be checked; 1 if not.
+ *)
+ check_bitstream: function(s: PAVFormatContext; pkt: {const} PAVPacket): cint; cdecl;
+ end;
+(**
+ * @}
+ *)
+
+(**
+ * @addtogroup lavf_decoding
+ * @
+ *)
+ TAVInputFormat = record
+ (**
+ * A comma separated list of short names for the format. New names
+ * may be appended with a minor bump.
+ *)
+ name: PAnsiChar;
+
+ (**
+ * Descriptive name for the format, meant to be more human-readable
+ * than name. You should use the NULL_IF_CONFIG_SMALL() macro
+ * to define it.
+ *)
+ long_name: PAnsiChar;
+
+ (**
+ * Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_SHOW_IDS,
+ * AVFMT_GENERIC_INDEX, AVFMT_TS_DISCONT, AVFMT_NOBINSEARCH,
+ * AVFMT_NOGENSEARCH, AVFMT_NO_BYTE_SEEK, AVFMT_SEEK_TO_PTS.
+ *)
+ flags: cint;
+
+ (**
+ * If extensions are defined, then no probe is done. You should
+ * usually not use extension format guessing because it is not
+ * reliable enough
+ *)
+ extensions: PAnsiChar;
+
+ codec_tag: {const} PPAVCodecTag;
+
+ priv_class: {const} PAVClass; ///< AVClass for the private context
+
+ (**
+ * Comma-separated list of mime types.
+ * It is used check for matching mime types while probing.
+ * @see av_probe_input_format2
+ *)
+ mime_type: {const} PAnsiChar;
+
+ (*****************************************************************
+ * No fields below this line are part of the public API. They
+ * may not be used outside of libavformat and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+ next: PAVInputFormat;
+
+ (**
+ * Raw demuxers store their codec ID here.
+ *)
+ raw_codec_id: cint;
+
+ (**
+ * Size of private data so that it can be allocated in the wrapper.
+ *)
+ priv_data_size: cint;
+
+ (**
+ * Tell if a given file has a chance of being parsed as this format.
+ * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes
+ * big so you do not have to check for that unless you need more.
+ *)
+ read_probe: function (p: PAVProbeData): cint; cdecl;
+
+ (**
+ * Read the format header and initialize the AVFormatContext
+ * structure. Return 0 if OK. Only used in raw format right
+ * now. 'avformat_new_stream' should be called to create new streams.
+ *)
+ read_header: function (c: PAVFormatContext): cint; cdecl;
+
+ (**
+ * Read one packet and put it in 'pkt'. pts and flags are also
+ * set. 'avformat_new_stream' can be called only if the flag
+ * AVFMTCTX_NOHEADER is used.
+ * @return 0 on success, < 0 on error.
+ * When returning an error, pkt must not have been allocated
+ * or must be freed before returning
+ *)
+ read_packet: function (c: PAVFormatContext; var pkt: TAVPacket): cint; cdecl;
+
+ (**
+ * Close the stream. The AVFormatContext and AVStreams are not
+ * freed by this function
+ *)
+ read_close: function (c: PAVFormatContext): cint; cdecl;
+
+ (**
+ * Seek to a given timestamp relative to the frames in
+ * stream component stream_index.
+ * @param stream_index Must not be -1.
+ * @param flags Selects which direction should be preferred if no exact
+ * match is available.
+ * @return >= 0 on success (but not necessarily the new offset)
+ *)
+ read_seek: function (c: PAVFormatContext; stream_index: cint;
+ timestamp: cint64; flags: cint): cint; cdecl;
+
+ (**
+ * Get the next timestamp in stream[stream_index].time_base units.
+ * @return the timestamp or AV_NOPTS_VALUE if an error occurred
+ *)
+ read_timestamp: function (s: PAVFormatContext; stream_index: cint;
+ pos: pint64; pos_limit: cint64): cint64; cdecl;
+
+ (**
+ * Start/resume playing - only meaningful if using a network-based format
+ * (RTSP).
+ *)
+ read_play: function (c: PAVFormatContext): cint; cdecl;
+
+ (**
+ * Pause playing - only meaningful if using a network-based format
+ * (RTSP).
+ *)
+ read_pause: function (c: PAVFormatContext): cint; cdecl;
+
+ (**
+ * Seek to timestamp ts.
+ * Seeking will be done so that the point from which all active streams
+ * can be presented successfully will be closest to ts and within min/max_ts.
+ * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
+ *)
+ read_seek2: function (s: PAVFormatContext;
+ stream_index: cint;
+ min_ts: cint64;
+ ts: cint64;
+ max_ts: cint64;
+ flags: cint): cint; cdecl;
+
+ (**
+ * Returns device list with it properties.
+ * @see avdevice_list_devices() for more details.
+ *)
+ get_device_list: function(s: PAVFormatContext; device_list: PAVDeviceInfoList): cint; cdecl;
+
+ (**
+ * Initialize device capabilities submodule.
+ * @see avdevice_capabilities_create() for more details.
+ *)
+ create_device_capabilities: function(s: PAVFormatContext; caps: PAVDeviceCapabilitiesQuery): cint; cdecl;
+
+ (**
+ * Free device capabilities submodule.
+ * @see avdevice_capabilities_free() for more details.
+ *)
+ free_device_capabilities: function(s: PAVFormatContext; caps: PAVDeviceCapabilitiesQuery): cint; cdecl;
+
+ end;
+(**
+ * @}
+ *)
+
+ TAVStreamParseType = (
+ AVSTREAM_PARSE_NONE,
+ AVSTREAM_PARSE_FULL, (**< full parsing and repack *)
+ AVSTREAM_PARSE_HEADERS, (**< Only parse headers, do not repack. *)
+ AVSTREAM_PARSE_TIMESTAMPS, (**< full parsing and interpolation of timestamps for frames not starting on a packet boundary *)
+ AVSTREAM_PARSE_FULL_ONCE, (**< full parsing and repack of the first frame only, only implemented for H.264 currently *)
+ AVSTREAM_PARSE_FULL_RAW (**< full parsing and repack with timestamp and position generation by parser for raw
+ this assumes that each packet in the file contains no demuxer level headers and
+ just codec level data, otherwise position generation would fail *)
+ );
+
+ TAVIndexEntry = record
+ pos: cint64;
+ timestamp: cint64; (**<
+ * Timestamp in AVStream.time_base units, preferably the time from which on correctly decoded frames are available
+ * when seeking to this entry. That means preferable PTS on keyframe based formats.
+ * But demuxers can choose to store a different timestamp, if it is more convenient for the implementation or nothing better
+ * is known
+ *)
+ { Delphi doesn't support bitfields -> use flags_size instead
+ int flags:2;
+ int size:30; //Yeah, trying to keep the size of this small to reduce memory requirements (it is 24 vs. 32 bytes due to possible 8-byte alignment).
+ }
+ flags_size: cint; // 0..1: flags, 2..31: size
+ min_distance: cint; (**< Minimum distance between this and the previous keyframe, used to avoid unneeded searching. *)
+ end;
+
+ Tduration_error = array[0..1] of array[0..MAX_STD_TIMEBASES - 1] of cdouble;
+ PStreamInfo = ^TStreamInfo;
+ TStreamInfo = record
+ last_dts: cint64;
+ duration_gcd: cint64;
+ duration_count: cint;
+ rfps_duration_sum: cint64;
+ duration_error: ^Tduration_error;
+ codec_info_duration: cint64;
+ codec_info_duration_fields: cint64;
+ frame_delay_evidence: cint;
+
+ (**
+ * 0 -> decoder has not been searched for yet.
+ * >0 -> decoder found
+ * <0 -> decoder with codec_id == -found_decoder has not been found
+ *)
+ found_decoder: cint;
+
+ (**
+ * Those are used for average framerate estimation.
+ *)
+ fps_first_dts: cint64;
+ fps_first_dts_idx: cint;
+ fps_last_dts: cint64;
+ fps_last_dts_idx: cint;
+ end;
+
+ (**
+ * Stream structure.
+ * New fields can be added to the end with minor version bumps.
+ * Removal, reordering and changes to existing fields require a major
+ * version bump.
+ * sizeof(AVStream) must not be used outside libav*.
+ *)
+ TAVStream = record
+ index: cint; (**< stream index in AVFormatContext *)
+ (**
+ * Format-specific stream ID.
+ * decoding: set by libavformat
+ * encoding: set by the user, replaced by libavformat if left unset
+ *)
+ id: cint; (**< format-specific stream ID *)
+{$IFDEF FF_API_LAVF_AVCTX}
+ (**
+ * @deprecated use the codecpar struct instead
+ *)
+ codec: PAVCodecContext; {deprecated}
+{$ENDIF}
+ priv_data: pointer;
+
+ (**
+ * This is the fundamental unit of time (in seconds) in terms
+ * of which frame timestamps are represented.
+ *
+ * decoding: set by libavformat
+ * encoding: May be set by the caller before avformat_write_header() to
+ * provide a hint to the muxer about the desired timebase. In
+ * avformat_write_header(), the muxer will overwrite this field
+ * with the timebase that will actually be used for the timestamps
+ * written into the file (which may or may not be related to the
+ * user-provided one, depending on the format).
+ *)
+ time_base: TAVRational;
+
+ (**
+ * Decoding: pts of the first frame of the stream in presentation order, in stream time base.
+ * Only set this if you are absolutely 100% sure that the value you set
+ * it to really is the pts of the first frame.
+ * This may be undefined (AV_NOPTS_VALUE).
+ * @note The ASF header does NOT contain a correct start_time the ASF
+ * demuxer must NOT set this.
+ *)
+ start_time: cint64;
+
+ (**
+ * Decoding: duration of the stream, in stream time base.
+ * If a source file does not specify a duration, but does specify
+ * a bitrate, this value will be estimated from bitrate and file size.
+ *
+ * Encoding: May be set by the caller before avformat_write_header() to
+ * provide a hint to the muxer about the estimated duration.
+ *)
+ duration: cint64;
+
+ nb_frames: cint64; ///< number of frames in this stream if known or 0
+
+ disposition: cint; (**< AV_DISPOSITION_* bitfield *)
+
+ discard: TAVDiscard; ///< Selects which packets can be discarded at will and do not need to be demuxed.
+
+ (**
+ * sample aspect ratio (0 if unknown)
+ * - encoding: Set by user.
+ * - decoding: Set by libavformat.
+ *)
+ sample_aspect_ratio: TAVRational;
+
+ metadata: PAVDictionary;
+
+ (**
+ * Average framerate
+ *
+ * - demuxing: May be set by libavformat when creating the stream or in
+ * avformat_find_stream_info().
+ * - muxing: May be set by the caller before avformat_write_header().
+ *)
+ avg_frame_rate: TAVRational;
+
+ (**
+ * For streams with AV_DISPOSITION_ATTACHED_PIC disposition, this packet
+ * will contain the attached picture.
+ *
+ * decoding: set by libavformat, must not be modified by the caller.
+ * encoding: unused
+ *)
+ attached_pic: TAVPacket;
+
+ (**
+ * An array of side data that applies to the whole stream (i.e. the
+ * container does not allow it to change between packets).
+ *
+ * There may be no overlap between the side data in this array and side data
+ * in the packets. I.e. a given side data is either exported by the muxer
+ * (demuxing) / set by the caller (muxing) in this array, then it never
+ * appears in the packets, or the side data is exported / sent through
+ * the packets (always in the first packet where the value becomes known or
+ * changes), then it does not appear in this array.
+ *
+ * - demuxing: Set by libavformat when the stream is created.
+ * - muxing: May be set by the caller before avformat_write_header().
+ *
+ * Freed by libavformat in avformat_free_context().
+ *
+ * @see av_format_inject_global_side_data()
+ *)
+ side_data: PAVPacketSideData;
+
+ (**
+ * The number of elements in the AVStream.side_data array.
+ *)
+ nb_side_data: cint;
+
+ (**
+ * Flags for the user to detect events happening on the stream. Flags must
+ * be cleared by the user once the event has been handled.
+ * A combination of AVSTREAM_EVENT_FLAG_*.
+ *)
+ event_flags: cint;
+
+ (**
+ * Real base framerate of the stream.
+ * This is the lowest framerate with which all timestamps can be
+ * represented accurately (it is the least common multiple of all
+ * framerates in the stream). Note, this value is just a guess!
+ * For example, if the time base is 1/90000 and all frames have either
+ * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1.
+ *)
+ r_frame_rate: TAVRational;
+
+{$IFDEF FF_API_LAVF_FFSERVER}
+ (**
+ * String containing pairs of key and values describing recommended encoder configuration.
+ * Pairs are separated by ','.
+ * Keys are separated from values by '='.
+ *
+ * @deprecated unused
+ *)
+ recommended_encoder_configuration: PAnsichar; {deprecated}
+{$ENDIF}
+
+ (**
+ * Codec parameters associated with this stream. Allocated and freed by
+ * libavformat in avformat_new_stream() and avformat_free_context()
+ * respectively.
+ *
+ * - demuxing: filled by libavformat on stream creation or in
+ * avformat_find_stream_info()
+ * - muxing: filled by the caller before avformat_write_header()
+ *)
+ codecpar: PAVCodecParameters;
+
+ (*****************************************************************
+ * All fields below this line are not part of the public API. They
+ * may not be used outside of libavformat and can be changed and
+ * removed at will.
+ * Internal note: be aware that physically removing these fields
+ * will break ABI. Replace removed fields with dummy fields, and
+ * add new fields to AVStreamInternal.
+ *****************************************************************
+ *)
+
+ (**
+ * Stream information used internally by avformat_find_stream_info()
+ *)
+ info: PStreamInfo;
+
+ pts_wrap_bits: cint; (**< number of bits in pts (used for wrapping control) *)
+
+ // Timestamp generation support:
+ (**
+ * Timestamp corresponding to the last dts sync point.
+ *
+ * Initialized when AVCodecParserContext.dts_sync_point >= 0 and
+ * a DTS is received from the underlying container. Otherwise set to
+ * AV_NOPTS_VALUE by default.
+ *)
+ first_dts: cint64;
+ cur_dts: cint64;
+ last_IP_pts: cint64;
+ last_IP_duration: cint;
+
+ (**
+ * Number of packets to buffer for codec probing
+ *)
+ probe_packets: cint;
+
+ (**
+ * Number of frames that have been demuxed during avformat_find_stream_info()
+ *)
+ codec_info_nb_frames: cint;
+
+ (* av_read_frame() support *)
+ need_parsing: TAVStreamParseType;
+ parser: PAVCodecParserContext;
+
+ (**
+ * last packet in packet_buffer for this stream when muxing.
+ *)
+ last_in_packet_buffer: PAVPacketList;
+ probe_data: TAVProbeData;
+ pts_buffer: array [0..MAX_REORDER_DELAY] of cint64;
+
+ index_entries: PAVIndexEntry; (**< Only used if the format does not
+ support seeking natively. *)
+ nb_index_entries: cint;
+ index_entries_allocated_size: cuint;
+
+ (**
+ * Stream Identifier
+ * This is the MPEG-TS stream identifier +1
+ * 0 means unknown
+ *)
+ stream_identifier: cint;
+
+ interleaver_chunk_size: cint64;
+ interleaver_chunk_duration: cint64;
+
+ (**
+ * stream probing state
+ * -1 -> probing finished
+ * 0 -> no probing requested
+ * rest -> perform probing with request_probe being the minimum score to accept.
+ * NOT PART OF PUBLIC API
+ *)
+ request_probe: cint;
+ (**
+ * Indicates that everything up to the next keyframe
+ * should be discarded.
+ *)
+ skip_to_keyframe: cint;
+
+ (**
+ * Number of samples to skip at the start of the frame decoded from the next packet.
+ *)
+ skip_samples: cint;
+
+ (**
+ * If not 0, the number of samples that should be skipped from the start of
+ * the stream (the samples are removed from packets with pts==0, which also
+ * assumes negative timestamps do not happen).
+ * Intended for use with formats such as mp3 with ad-hoc gapless audio
+ * support.
+ *)
+ start_skip_samples: cint64;
+
+ (**
+ * If not 0, the first audio sample that should be discarded from the stream.
+ * This is broken by design (needs global sample count), but can't be
+ * avoided for broken by design formats such as mp3 with ad-hoc gapless
+ * audio support.
+ *)
+ first_discard_sample: cint64;
+
+ (**
+ * The sample after last sample that is intended to be discarded after
+ * first_discard_sample. Works on frame boundaries only. Used to prevent
+ * early EOF if the gapless info is broken (considered concatenated mp3s).
+ *)
+ last_discard_sample: cint64;
+
+ (**
+ * Number of internally decoded frames, used internally in libavformat, do not access
+ * its lifetime differs from info which is why it is not in that structure.
+ *)
+ nb_decoded_frames: cint;
+
+ (**
+ * Timestamp offset added to timestamps before muxing
+ * NOT PART OF PUBLIC API
+ *)
+ mux_ts_offset: cint64;
+
+ (**
+ * Internal data to check for wrapping of the time stamp
+ *)
+ pts_wrap_reference: cint64;
+
+ (**
+ * Options for behavior, when a wrap is detected.
+ *
+ * Defined by AV_PTS_WRAP_ values.
+ *
+ * If correction is enabled, there are two possibilities:
+ * If the first time stamp is near the wrap point, the wrap offset
+ * will be subtracted, which will create negative time stamps.
+ * Otherwise the offset will be added.
+ *)
+ pts_wrap_behavior: cint;
+
+ (**
+ * Internal data to prevent doing update_initial_durations() twice
+ *)
+ update_initial_durations_done: cint;
+
+ (**
+ * Internal data to generate dts from pts
+ *)
+ pts_reorder_error: array[0..MAX_REORDER_DELAY] of cint64;
+ pts_reorder_error_count: array[0..MAX_REORDER_DELAY] of byte;
+
+ (**
+ * Internal data to analyze DTS and detect faulty mpeg streams
+ *)
+ last_dts_for_order_check: cint64;
+ dts_ordered: byte;
+ dts_misordered: byte;
+
+ (**
+ * Internal data to inject global side data
+ *)
+ inject_global_side_data: cint;
+
+ (**
+ * display aspect ratio (0 if unknown)
+ * - encoding: unused
+ * - decoding: Set by libavformat to calculate sample_aspect_ratio internally
+ *)
+ display_aspect_ratio: TAVRational;
+
+ (**
+ * An opaque field for libavformat internal usage.
+ * Must not be accessed in any way by callers.
+ *)
+ internal: pointer;
+ end; (** TAVStream **)
+
+(**
+ * New fields can be added to the end with minor version bumps.
+ * Removal, reordering and changes to existing fields require a major
+ * version bump.
+ * sizeof(AVProgram) must not be used outside libav*.
+ *)
+ TAVProgram = record
+ id: cint;
+ flags: cint;
+ discard: TAVDiscard; ///< selects which program to discard and which to feed to the caller
+ stream_index: Pcuint;
+ nb_stream_indexes: cuint;
+ metadata: PAVDictionary;
+
+ program_num: cint;
+ pmt_pid: cint;
+ pcr_pid: cint;
+
+ (*****************************************************************
+ * All fields below this line are not part of the public API. They
+ * may not be used outside of libavformat and can be changed and
+ * removed at will.
+ * New public fields should be added right above.
+ *****************************************************************
+ *)
+ start_time: cint64;
+ end_time: cint64;
+
+ pts_wrap_reference: cint64; ///< reference dts for wrap detection
+ pts_wrap_behavior: cint; ///< behavior on wrap detection
+ end; (*AVProgram*)
+
+ PAVChapter = ^TAVChapter;
+ TAVChapter = record
+ id: cint; ///< unique ID to identify the chapter
+ time_base: TAVRational; ///< time base in which the start/end timestamps are specified
+ start, end_: cint64; ///< chapter start/end time in time_base units
+ metadata: PAVDictionary;
+ end; (*AVChapter*)
+
+ TAVChapterArray = array[0..(MaxInt div SizeOf(TAVChapter))-1] of TAVChapter;
+ PAVChapterArray = ^TAVChapterArray;
+
+ (**
+ * The duration of a video can be estimated through various ways, and this enum can be used
+ * to know how the duration was estimated.
+ *)
+ TAVDurationEstimationMethod = (
+ AVFMT_DURATION_FROM_PTS, ///< Duration accurately estimated from PTSes
+ AVFMT_DURATION_FROM_STREAM, ///< Duration estimated from a stream with a known duration
+ AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate)
+ );
+
+ PAVFormatInternal = ^TAVFormatInternal;
+ TAVFormatInternal = record
+ (**
+ * Number of streams relevant for interleaving.
+ * Muxing only.
+ *)
+ nb_interleaved_streams: cint;
+ inject_global_side_data: cint;
+ end;
+
+ TAv_format_control_message = function (s: PAVFormatContext; type_: cint;
+ data: pointer; data_size: size_t): cint; cdecl;
+
+ TAVOpenCallback = function (s: PAVFormatContext; pb: PPAVIOContext; url: {const} PAnsiChar; flags: cint;
+ int_cb: {const} PAVIOInterruptCB; options: PPAVDictionary): cint; cdecl;
+
+ (**
+ * Format I/O context.
+ * New fields can be added to the end with minor version bumps.
+ * Removal, reordering and changes to existing fields require a major
+ * version bump.
+ * sizeof(AVFormatContext) must not be used outside libav*, use
+ * avformat_alloc_context() to create an AVFormatContext.
+ *
+ * Fields can be accessed through AVOptions (av_opt* ),
+ * the name string used matches the associated command line parameter name and
+ * can be found in libavformat/options_table.h.
+ * The AVOption/command line parameter names differ in some cases from the C
+ * structure field names for historic reasons or brevity.
+ *)
+ TAVFormatContext = record
+ (**
+ * A class for logging and @ref avoptions. Set by avformat_alloc_context().
+ * Exports (de)muxer private options if they exist.
+ *)
+ av_class: PAVClass; (**< Set by avformat_alloc_context. *)
+
+ (**
+ * The input container format.
+ *
+ * Demuxing only, set by avformat_open_input().
+ *)
+ iformat: PAVInputFormat;
+
+ (**
+ * The output container format.
+ *
+ * Muxing only, must be set by the caller before avformat_write_header().
+ *)
+ oformat: PAVOutputFormat;
+
+ (**
+ * Format private data. This is an AVOptions-enabled struct
+ * if and only if iformat/oformat.priv_class is not NULL.
+ *
+ * - muxing: set by avformat_write_header()
+ * - demuxing: set by avformat_open_input()
+ *)
+ priv_data: pointer;
+
+ (*
+ * I/O context.
+ *
+ * - demuxing: either set by the user before avformat_open_input() (then
+ * the user must close it manually) or set by avformat_open_input().
+ * - muxing: set by the user before avformat_write_header(). The caller must
+ * take care of closing / freeing the IO context.
+ *
+ * Do NOT set this field if AVFMT_NOFILE flag is set in
+ * iformat/oformat.flags. In such a case, the (de)muxer will handle
+ * I/O in some other way and this field will be NULL.
+ *)
+ pb: PAVIOContext;
+
+ (* stream info *)
+ (**
+ * Flags signalling stream properties. A combination of AVFMTCTX_*.
+ * Set by libavformat.
+ *)
+ ctx_flags: cint;
+
+ (**
+ * Number of elements in AVFormatContext.streams.
+ *
+ * Set by avformat_new_stream(), must not be modified by any other code.
+ *)
+ nb_streams: cuint;
+
+ (**
+ * A list of all streams in the file. New streams are created with
+ * avformat_new_stream().
+ *
+ * - demuxing: streams are created by libavformat in avformat_open_input().
+ * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also
+ * appear in av_read_frame().
+ * - muxing: streams are created by the user before avformat_write_header().
+ *
+ * Freed by libavformat in avformat_free_context().
+ *)
+ streams: PPAVStream;
+
+{$IFDEF FF_API_FORMAT_FILENAME}
+ (**
+ * input or output filename
+ *
+ * - demuxing: set by avformat_open_input()
+ * - muxing: may be set by the caller before avformat_write_header()
+ *
+ * @deprecated Use url instead.
+ *)
+ filename: array [0..1023] of AnsiChar; {deprecated} (* input or output filename *)
+{$ENDIF}
+
+ (**
+ * input or output URL. Unlike the old filename field, this field has no
+ * length restriction.
+ *
+ * - demuxing: set by avformat_open_input(), initialized to an empty
+ * string if url parameter was NULL in avformat_open_input().
+ * - muxing: may be set by the caller before calling avformat_write_header()
+ * (or avformat_init_output() if that is called first) to a string
+ * which is freeable by av_free(). Set to an empty string if it
+ * was NULL in avformat_init_output().
+ *
+ * Freed by libavformat in avformat_free_context().
+ *)
+ url: PAnsichar;
+
+ (**
+ * Position of the first frame of the component, in
+ * AV_TIME_BASE fractional seconds. NEVER set this value directly:
+ * It is deduced from the AVStream values.
+ *
+ * Demuxing only, set by libavformat.
+ *)
+ start_time: cint64;
+ (**
+ * Duration of the stream, in AV_TIME_BASE fractional
+ * seconds. Only set this value if you know none of the individual stream
+ * durations and also dont set any of them. This is deduced from the
+ * AVStream values if not set.
+ *)
+ duration: cint64;
+
+ (**
+ * Total stream bitrate in bit/s, 0 if not
+ * available. Never set it directly if the file_size and the
+ * duration are known as ffmpeg can compute it automatically.
+ *)
+ bit_rate: cint64;
+
+ packet_size: cuint;
+ max_delay: cint;
+
+ (**
+ * Flags modifying the (de)muxer behaviour. A combination of AVFMT_FLAG_*.
+ * Set by the user before avformat_open_input() / avformat_write_header().
+ *)
+ flags: cint;
+
+ (**
+ * Maximum size of the data read from input for determining
+ * the input container format.
+ * Demuxing only, set by the caller before avformat_open_input().
+ *)
+ probesize: cint64;
+
+ (**
+ * Maximum duration (in AV_TIME_BASE units) of the data read
+ * from input in avformat_find_stream_info().
+ * Demuxing only, set by the caller before avformat_find_stream_info().
+ * Can be set to 0 to let avformat choose using a heuristic.
+ *)
+ max_analyze_duration: cint64;
+
+ key: pbyte;
+ keylen: cint;
+
+ nb_programs: cuint;
+ programs: PPAVProgram;
+
+ (**
+ * Forced video codec_id.
+ * Demuxing: Set by user.
+ *)
+ video_codec_id: TAVCodecID;
+
+ (**
+ * Forced audio codec_id.
+ * Demuxing: Set by user.
+ *)
+ audio_codec_id: TAVCodecID;
+
+ (**
+ * Forced subtitle codec_id.
+ * Demuxing: Set by user.
+ *)
+ subtitle_codec_id: TAVCodecID;
+
+ (**
+ * Maximum amount of memory in bytes to use for the index of each stream.
+ * If the index exceeds this size, entries will be discarded as
+ * needed to maintain a smaller size. This can lead to slower or less
+ * accurate seeking (depends on demuxer).
+ * Demuxers for which a full in-memory index is mandatory will ignore
+ * this.
+ * - muxing: unused
+ * - demuxing: set by user
+ *)
+ max_index_size: cuint;
+
+ (**
+ * Maximum amount of memory in bytes to use for buffering frames
+ * obtained from realtime capture devices.
+ *)
+ max_picture_buffer: cuint;
+
+ nb_chapters: cuint;
+ chapters: PAVChapterArray;
+
+ (**
+ * Metadata that applies to the whole file.
+ *
+ * - demuxing: set by libavformat in avformat_open_input()
+ * - muxing: may be set by the caller before avformat_write_header()
+ *
+ * Freed by libavformat in avformat_free_context().
+ *)
+ metadata: PAVDictionary;
+
+ (**
+ * Start time of the stream in real world time, in microseconds
+ * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the
+ * stream was captured at this real world time.
+ * - muxing: Set by the caller before avformat_write_header(). If set to
+ * either 0 or AV_NOPTS_VALUE, then the current wall-time will
+ * be used.
+ * - demuxing: Set by libavformat. AV_NOPTS_VALUE if unknown. Note that
+ * the value may become known after some number of frames
+ * have been received.
+ *)
+ start_time_realtime: cint64;
+
+ (**
+ * The number of frames used for determining the framerate in
+ * avformat_find_stream_info().
+ * Demuxing only, set by the caller before avformat_find_stream_info().
+ *)
+ fps_probe_size: cint;
+
+ (**
+ * Error recognition; higher values will detect more errors but may
+ * misdetect some more or less valid parts as errors.
+ * Demuxing only, set by the caller before avformat_open_input().
+ *)
+ error_recognition: cint;
+
+ (**
+ * Custom interrupt callbacks for the I/O layer.
+ *
+ * demuxing: set by the user before avformat_open_input().
+ * muxing: set by the user before avformat_write_header()
+ * (mainly useful for AVFMT_NOFILE formats). The callback
+ * should also be passed to avio_open2() if it's used to
+ * open the file.
+ *)
+ interrupt_callback: TAVIOInterruptCB;
+
+ (**
+ * Flags to enable debugging.
+ *)
+ debug: cint;
+
+ (**
+ * Maximum buffering duration for interleaving.
+ *
+ * To ensure all the streams are interleaved correctly,
+ * av_interleaved_write_frame() will wait until it has at least one packet
+ * for each stream before actually writing any packets to the output file.
+ * When some streams are "sparse" (i.e. there are large gaps between
+ * successive packets), this can result in excessive buffering.
+ *
+ * This field specifies the maximum difference between the timestamps of the
+ * first and the last packet in the muxing queue, above which libavformat
+ * will output a packet regardless of whether it has queued a packet for all
+ * the streams.
+ *
+ * Muxing only, set by the caller before avformat_write_header().
+ *)
+ max_interleave_delta: cint64;
+
+ (**
+ * Allow non-standard and experimental extension
+ * @see AVCodecContext.strict_std_compliance
+ *)
+ strict_std_compliance: cint;
+
+ (**
+ * Flags for the user to detect events happening on the file. Flags must
+ * be cleared by the user once the event has been handled.
+ * A combination of AVFMT_EVENT_FLAG_*.
+ *)
+ event_flags: cint;
+
+ (**
+ * Maximum number of packets to read while waiting for the first timestamp.
+ * Decoding only.
+ *)
+ max_ts_probe: cint;
+
+ (**
+ * Avoid negative timestamps during muxing.
+ * Any value of the AVFMT_AVOID_NEG_TS_* constants.
+ * Note, this only works when using av_interleaved_write_frame. (interleave_packet_per_dts is in use)
+ * - muxing: Set by user
+ * - demuxing: unused
+ *)
+ avoid_negative_ts: cint;
+
+ (**
+ * Transport stream id.
+ * This will be moved into demuxer private options. Thus no API/ABI compatibility
+ *)
+ ts_id: cint;
+
+ (**
+ * Audio preload in microseconds.
+ * Note, not all formats support this and unpredictable things may happen if it is used when not supported.
+ * - encoding: Set by user
+ * - decoding: unused
+ *)
+ audio_preload: cint;
+
+ (**
+ * Max chunk time in microseconds.
+ * Note, not all formats support this and unpredictable things may happen if it is used when not supported.
+ * - encoding: Set by user
+ * - decoding: unused
+ *)
+ max_chunk_duration: cint;
+
+ (**
+ * Max chunk size in bytes
+ * Note, not all formats support this and unpredictable things may happen if it is used when not supported.
+ * - encoding: Set by user
+ * - decoding: unused
+ *)
+ max_chunk_size: cint;
+
+ (**
+ * forces the use of wallclock timestamps as pts/dts of packets
+ * This has undefined results in the presence of B frames.
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ use_wallclock_as_timestamps: cint;
+
+ (**
+ * avio flags, used to force AVIO_FLAG_DIRECT.
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ avio_flags: cint;
+
+ (**
+ * The duration field can be estimated through various ways, and this field can be used
+ * to know how the duration was estimated.
+ * - encoding: unused
+ * - decoding: Read by user
+ *)
+ duration_estimation_method: TAVDurationEstimationMethod;
+
+ (**
+ * Skip initial bytes when opening stream
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ skip_initial_bytes: cint64;
+
+ (**
+ * Correct single timestamp overflows
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ correct_ts_overflow: cuint;
+
+ (**
+ * Force seeking to any (also non key) frames.
+ * - encoding: unused
+ * - decoding: Set by user
+ *)
+ seek2any: cint;
+
+ (**
+ * Flush the I/O context after each packet.
+ * - encoding: Set by user
+ * - decoding: unused
+ *)
+ flush_packets: cint;
+
+ (**
+ * format probing score.
+ * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
+ * the format.
+ * - encoding: unused
+ * - decoding: set by avformat, read by user
+ *)
+ probe_score: cint;
+
+ (**
+ * number of bytes to read maximally to identify format.
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ format_probesize: cint;
+
+ (**
+ * ',' separated list of allowed decoders.
+ * If NULL then all are allowed
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ codec_whitelist: PAnsiChar;
+
+ (**
+ * ',' separated list of allowed demuxers.
+ * If NULL then all are allowed
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ format_whitelist: PAnsiChar;
+
+
+ (**
+ * An opaque field for libavformat internal usage.
+ * Must not be accessed in any way by callers.
+ *)
+ internal: PAVFormatInternal;
+
+ (**
+ * IO repositioned flag.
+ * This is set by avformat when the underlaying IO context read pointer
+ * is repositioned, for example when doing byte based seeking.
+ * Demuxers can use the flag to detect such changes.
+ *)
+ io_repositioned: cint;
+
+ (**
+ * Forced video codec.
+ * This allows forcing a specific decoder, even when there are multiple with
+ * the same codec_id.
+ * Demuxing: Set by user
+ *)
+ video_codec: PAVCodec;
+
+ (**
+ * Forced audio codec.
+ * This allows forcing a specific decoder, even when there are multiple with
+ * the same codec_id.
+ * Demuxing: Set by user
+ *)
+ audio_codec: PAVCodec;
+
+ (**
+ * Forced subtitle codec.
+ * This allows forcing a specific decoder, even when there are multiple with
+ * the same codec_id.
+ * Demuxing: Set by user
+ *)
+ subtitle_codec: PAVCodec;
+
+ (**
+ * Forced data codec.
+ * This allows forcing a specific decoder, even when there are multiple with
+ * the same codec_id.
+ * Demuxing: Set by user
+ *)
+ data_codec: PAVCodec;
+
+ (**
+ * Number of bytes to be written as padding in a metadata header.
+ * Demuxing: Unused.
+ * Muxing: Set by user via av_format_set_metadata_header_padding.
+ *)
+ metadata_header_padding: cint;
+
+ (**
+ * User data.
+ * This is a place for some private data of the user.
+ *)
+ opaque: pointer;
+
+ (**
+ * Callback used by devices to communicate with application.
+ *)
+ control_message_cb: TAv_format_control_message;
+
+ (**
+ * Output timestamp offset, in microseconds.
+ * Muxing: set by user
+ *)
+ output_ts_offset: cint64;
+
+ (**
+ * dump format separator.
+ * can be ", " or "\n " or anything else
+ * - muxing: Set by user.
+ * - demuxing: Set by user.
+ *)
+ dump_separator: Pcuint8;
+
+ (**
+ * Forced Data codec_id.
+ * Demuxing: Set by user.
+ *)
+ data_codec_id: TAVCodecID;
+{$IFDEF FF_API_OLD_OPEN_CALLBACKS}
+ (**
+ * Called to open further IO contexts when needed for demuxing.
+ *
+ * This can be set by the user application to perform security checks on
+ * the URLs before opening them.
+ * The function should behave like avio_open2(), AVFormatContext is provided
+ * as contextual information and to reach AVFormatContext.opaque.
+ *
+ * If NULL then some simple checks are used together with avio_open2().
+ *
+ * Must not be accessed directly from outside avformat.
+ * @See av_format_set_open_cb()
+ *
+ * Demuxing: Set by user.
+ *
+ * @deprecated Use io_open and io_close.
+ *)
+ open_cb: function(s: PAVFormatContext; p: PPAVIOContext; url: {const} PAnsiChar; flags: cint; int_cb: {const} PAVIOInterruptCB; options: PPAVDictionary): cint; cdecl; {deprecated}
+{$ENDIF}
+
+ (**
+ * ',' separated list of allowed protocols.
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ protocol_whitelist: pchar;
+
+ (*
+ * A callback for opening new IO streams.
+ *
+ * Whenever a muxer or a demuxer needs to open an IO stream (typically from
+ * avformat_open_input() for demuxers, but for certain formats can happen at
+ * other times as well), it will call this callback to obtain an IO context.
+ *
+ * @param s the format context
+ * @param pb on success, the newly opened IO context should be returned here
+ * @param url the url to open
+ * @param flags a combination of AVIO_FLAG_*
+ * @param options a dictionary of additional options, with the same
+ * semantics as in avio_open2()
+ * @return 0 on success, a negative AVERROR code on failure
+ *
+ * @note Certain muxers and demuxers do nesting, i.e. they open one or more
+ * additional internal format contexts. Thus the AVFormatContext pointer
+ * passed to this callback may be different from the one facing the caller.
+ * It will, however, have the same 'opaque' field.
+ *)
+ io_open: function(s: PAVFormatContext; pb: PPAVIOContext; url: {const} pchar;
+ flags: cint; options: PPAVDictionary): cint; cdecl;
+
+ (**
+ * A callback for closing the streams opened with AVFormatContext.io_open().
+ *)
+ io_close: procedure(s: PAVFormatContext; pb: PAVIOContext); cdecl;
+
+ (**
+ * ',' separated list of disallowed protocols.
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ protocol_blacklist: PAnsiChar;
+
+ (**
+ * The maximum number of streams.
+ * - encoding: unused
+ * - decoding: set by user
+ *)
+ max_streams: cint;
+ end; (** TAVFormatContext **)
+
+ TAVTimebaseSource = (
+ AVFMT_TBCF_AUTO = -1,
+ AVFMT_TBCF_DECODER,
+ AVFMT_TBCF_DEMUXER,
+{$IFDEF FF_API_R_FRAME_RATE}
+ AVFMT_TBCF_R_FRAMERATE
+{$ENDIF}
+ );
+
+{$IFDEF FF_API_FORMAT_GET_SET}
+(**
+ * Accessors for some AVFormatContext fields. These used to be provided for ABI
+ * compatibility, and do not need to be used anymore.
+ *)
+function av_format_get_probe_score(s: {const} PAVFormatContext): cint;
+ cdecl; external av__format; deprecated;
+function av_format_get_video_codec(s: {const} PAVFormatContext): PAVCodec;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_video_codec(s: PAVFormatContext; c: PAVCodec);
+ cdecl; external av__format; deprecated;
+function av_format_get_audio_codec(s: {const} PAVFormatContext): PAVCodec;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_audio_codec(s: PAVFormatContext; c: PAVCodec);
+ cdecl; external av__format; deprecated;
+function av_format_get_subtitle_codec(s: {const} PAVFormatContext): PAVCodec;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_subtitle_codec(s: PAVFormatContext; c: PAVCodec);
+ cdecl; external av__format; deprecated;
+function av_format_get_data_codec(s: {const} PAVFormatContext): PAVCodec;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_data_codec(s: PAVFormatContext; c: PAVCodec);
+ cdecl; external av__format; deprecated;
+function av_format_get_metadata_header_padding(s: {const} PAVFormatContext): cint;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_metadata_header_padding(s: PAVFormatContext; c: cint);
+ cdecl; external av__format; deprecated;
+procedure av_format_get_opaque(s: {const} PAVFormatContext);
+ cdecl; external av__format; deprecated;
+procedure av_format_set_opaque(s: PAVFormatContext; opaque: pointer);
+ cdecl; external av__format; deprecated;
+function av_format_get_control_message_cb(s: {const} PAVFormatContext): TAv_format_control_message;
+ cdecl; external av__format; deprecated;
+procedure av_format_set_control_message_cb(s: PAVFormatContext; callback: TAv_format_control_message);
+ cdecl; external av__format; deprecated;
+{$IFDEF FF_API_OLD_OPEN_CALLBACKS}
+function av_format_get_open_cb(s: {const} PAVFormatContext): TAVOpenCallback; {deprecated}
+ cdecl; external av__format; deprecated;
+procedure av_format_set_open_cb(s: PAVFormatContext; callback: TAVOpenCallback); {deprecated}
+ cdecl; external av__format; deprecated;
+{$ENDIF} {FF_API_OLD_OPEN_CALLBACKS}
+{$ENDIF} {FF_API_FORMAT_GET_SET}
+
+(**
+ * This function will cause global side data to be injected in the next packet
+ * of each stream as well as after any subsequent seek.
+ *)
+procedure av_format_inject_global_side_data(s: PAVFormatContext);
+ cdecl; external av__format;
+
+(**
+ * Returns the method used to set ctx->duration.
+ *
+ * @return AVFMT_DURATION_FROM_PTS, AVFMT_DURATION_FROM_STREAM, or AVFMT_DURATION_FROM_BITRATE.
+ *)
+function av_fmt_ctx_get_duration_estimation_method(ctx: {const} PAVFormatContext): TAVDurationEstimationMethod;
+ cdecl; external av__format;
+
+{$IFDEF FF_API_FORMAT_GET_SET}
+(**
+ * Accessors for some AVStream fields. These used to be provided for ABI
+ * compatibility, and do not need to be used anymore.
+ *)
+function av_stream_get_r_frame_rate({const} s: PAVStream): TAVRational;
+ cdecl; external av__format; deprecated;
+procedure av_stream_set_r_frame_rate(s: PAVStream; r: TAVRational);
+ cdecl; external av__format; deprecated;
+{$IFDEF FF_API_LAVF_FFSERVER}
+function av_stream_get_recommended_encoder_configuration({const} s: PAVStream): PAnsiChar;
+ cdecl; external av__format; deprecated;
+procedure av_stream_set_recommended_encoder_configuration(s: PAVStream; configuration: PAnsiChar);
+ cdecl; external av__format; deprecated;
+{$ENDIF} {FF_API_LAVF_FFSERVER}
+{$ENDIF} {FF_API_FORMAT_GET_SET}
+
+function av_stream_get_parser(s: {const} PAVStream): PAVCodecParserContext;
+ cdecl; external av__format;
+
+(**
+ * Returns the pts of the last muxed packet + its duration
+ *
+ * the retuned value is undefined when used with a demuxer.
+ *)
+function av_stream_get_end_pts(st: {const} PAVStream): cint64;
+ cdecl; external av__format;
+
+(**
+ * @defgroup lavf_core Core functions
+ * @ingroup libavf
+ *
+ * Functions for querying libavformat capabilities, allocating core structures,
+ * etc.
+ * @
+ *)
+
+(**
+ * Return the LIBAVFORMAT_VERSION_INT constant.
+ *)
+function avformat_version(): cuint;
+ cdecl; external av__format;
+
+(**
+ * Return the libavformat build-time configuration.
+ *)
+function avformat_configuration(): {const} PansiChar;
+ cdecl; external av__format;
+
+(**
+ * Return the libavformat license.
+ *)
+function avformat_license(): {const} PansiChar;
+ cdecl; external av__format;
+
+{$IFDEF FF_API_NEXT}
+(**
+ * Initialize libavformat and register all the muxers, demuxers and
+ * protocols. If you do not call this function, then you can select
+ * exactly which formats you want to support.
+ *
+ * @see av_register_input_format()
+ * @see av_register_output_format()
+ * @see av_register_protocol()
+ *)
+procedure av_register_all();
+ cdecl; external av__format; deprecated;
+
+procedure av_register_input_format(format: PAVInputFormat);
+ cdecl; external av__format; deprecated;
+procedure av_register_output_format(format: PAVOutputFormat);
+ cdecl; external av__format; deprecated;
+{$ENDIF}
+
+(**
+ * Do global initialization of network libraries. This is optional,
+ * and not recommended anymore.
+ *
+ * This functions only exists to work around thread-safety issues
+ * with older GnuTLS or OpenSSL libraries. If libavformat is linked
+ * to newer versions of those libraries, or if you do not use them,
+ * calling this function is unnecessary. Otherwise, you need to call
+ * this function before any other threads using them are started.
+ *
+ * This function will be deprecated once support for older GnuTLS and
+ * OpenSSL libraries is removed, and this function has no purpose
+ * anymore.
+ *)
+function avformat_network_init(): cint;
+ cdecl; external av__format;
+
+(**
+ * Undo the initialization done by avformat_network_init. Call it only
+ * once for each time you called avformat_network_init.
+ *)
+function avformat_network_deinit(): cint;
+ cdecl; external av__format;
+
+{$IFDEF FF_API_NEXT}
+(**
+ * If f is NULL, returns the first registered input format,
+ * if f is non-NULL, returns the next registered input format after f
+ * or NULL if f is the last one.
+ *)
+function av_iformat_next(f: {const} PAVInputFormat): PAVInputFormat;
+ cdecl; external av__format; deprecated;
+
+(**
+ * If f is NULL, returns the first registered output format,
+ * if f is non-NULL, returns the next registered input format after f
+ * or NULL if f is the last one.
+ *)
+function av_oformat_next(f: {const} PAVOutputFormat): PAVOutputFormat;
+ cdecl; external av__format; deprecated;
+{$ENDIF}
+
+(**
+ * Iterate over all registered muxers.
+ *
+ * @param opaque a pointer where libavformat will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered muxer or NULL when the iteration is
+ * finished
+ *)
+function av_muxer_iterate(opaque: pointer): PAVOutputFormat;
+ cdecl; external av__format; deprecated; {const}
+
+(**
+ * Iterate over all registered demuxers.
+ *
+ * @param opaque a pointer where libavformat will store the iteration state. Must
+ * point to NULL to start the iteration.
+ *
+ * @return the next registered demuxer or NULL when the iteration is
+ * finished
+ *)
+function av_demuxer_iterate(opaque: pointer): PAVInputFormat;
+ cdecl; external av__format; deprecated; {const}
+
+(**
+ * Allocate an AVFormatContext.
+ * Can be freed with av_free() but do not forget to free everything you
+ * explicitly allocated as well!
+ *)
+function avformat_alloc_context(): PAVFormatContext;
+ cdecl; external av__format;
+
+(**
+ * Free an AVFormatContext and all its streams.
+ * @param s context to free
+ *)
+procedure avformat_free_context(s: PAVFormatContext);
+ cdecl; external av__format;
+
+(**
+ * Get the AVClass for AVFormatContext. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function avformat_get_class(): {const} PAVClass;
+ cdecl; external av__format;
+
+(**
+ * Add a new stream to a media file.
+ *
+ * When demuxing, it is called by the demuxer in read_header(). If the
+ * flag AVFMTCTX_NOHEADER is set in s.ctx_flags, then it may also
+ * be called in read_packet().
+ *
+ * When muxing, should be called by the user before avformat_write_header().
+ *
+ * User is required to call avcodec_close() and avformat_free_context() to
+ * clean up the allocation by avformat_new_stream().
+ *
+ * @param s media file handle
+ * @param c If non-NULL, the AVCodecContext corresponding to the new stream
+ * will be initialized to use this codec. This is needed for e.g. codec-specific
+ * defaults to be set, so codec should be provided if it is known.
+ *
+ * @return newly created stream or NULL on error.
+ *)
+function avformat_new_stream(s: PAVFormatContext; c: {const} PAVCodec): PAVStream;
+ cdecl; external av__format;
+
+(**
+ * Wrap an existing array as stream side data.
+ *
+ * @param st stream
+ * @param type side information type
+ * @param data the side data array. It must be allocated with the av_malloc()
+ * family of functions. The ownership of the data is transferred to
+ * st.
+ * @param size side information size
+ * @return zero on success, a negative AVERROR code on failure. On failure,
+ * the stream is unchanged and the data remains owned by the caller.
+ *)
+function av_stream_add_side_data(st: PAVStream; type_: TAVPacketSideDataType;
+ data: Pcuint8; size: size_t): cint;
+ cdecl; external av__format;
+
+(**
+ * Allocate new information from stream.
+ *
+ * @param stream stream
+ * @param type desired side information type
+ * @param size side information size
+ * @return pointer to fresh allocated data or NULL otherwise
+ *)
+function av_stream_new_side_data(stream: PAVStream;
+ type_: TAVPacketSideDataType; size: cint): Pcuint8;
+ cdecl; external av__format;
+
+(**
+ * Get side information from stream.
+ *
+ * @param stream stream
+ * @param type desired side information type
+ * @param size pointer for side information size to store (optional)
+ * @return pointer to data if present or NULL otherwise
+ *)
+function av_stream_get_side_data(stream: {const} PAVStream;
+ type_: TAVPacketSideDataType; size: Pcint): Pcuint8;
+ cdecl; external av__format;
+
+function av_new_program(s: PAVFormatContext; id: cint): PAVProgram;
+ cdecl; external av__format;
+
+(**
+ * @}
+ *)
+
+{$IFDEF FF_API_PKT_DUMP}
+procedure av_pkt_dump(f: PAVFile; pkt: PAVPacket; dump_payload: cint); {deprecated}
+ cdecl; external av__format;
+procedure av_pkt_dump_log(avcl: Pointer; level: cint; pkt: PAVPacket; dump_payload: cint); {deprecated}
+ cdecl; external av__format;
+{$IFEND}
+
+(**
+ * Allocate an AVFormatContext for an output format.
+ * avformat_free_context() can be used to free the context and
+ * everything allocated by the framework within it.
+ *
+ * @param *ctx is set to the created format context, or to NULL in
+ * case of failure
+ * @param oformat format to use for allocating the context, if NULL
+ * format_name and filename are used instead
+ * @param format_name the name of output format to use for allocating the
+ * context, if NULL filename is used instead
+ * @param filename the name of the filename to use for allocating the
+ * context, may be NULL
+ * @return >= 0 in case of success, a negative AVERROR code in case of
+ * failure
+ *)
+function avformat_alloc_output_context2(ctx: PPAVFormatContext; oformat: PAVOutputFormat;
+ {const} format_name: PAnsiChar; {const} filename: PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * @addtogroup lavf_decoding
+ * @
+ *)
+
+(**
+ * Find AVInputFormat based on the short name of the input format.
+ *)
+function av_find_input_format(short_name: PAnsiChar): PAVInputFormat;
+ cdecl; external av__format;
+
+(**
+ * Guess the file format.
+ *
+ * @param pd data to be probed
+ * @param is_opened Whether the file is already opened; determines whether
+ * demuxers with or without AVFMT_NOFILE are probed.
+ *)
+function av_probe_input_format(pd: PAVProbeData; is_opened: cint): PAVInputFormat;
+ cdecl; external av__format;
+
+(**
+ * Guess the file format.
+ *
+ * @param pd data to be probed
+ * @param is_opened Whether the file is already opened; determines whether
+ * demuxers with or without AVFMT_NOFILE are probed.
+ * @param score_max A probe score larger that this is required to accept a
+ * detection, the variable is set to the actual detection
+ * score afterwards.
+ * If the score is <= AVPROBE_SCORE_MAX / 4 it is recommended
+ * to retry with a larger probe buffer.
+ *)
+function av_probe_input_format2(pd: PAVProbeData; is_opened: cint; score_max: PCint): PAVInputFormat;
+ cdecl; external av__format;
+
+(**
+ * Guess the file format.
+ *
+ * @param is_opened Whether the file is already opened; determines whether
+ * demuxers with or without AVFMT_NOFILE are probed.
+ * @param score_ret The score of the best detection.
+ *)
+function av_probe_input_format3(pd: PAVProbeData; is_opened: cint; score_ret: Pcint): PAVInputFormat;
+ cdecl; external av__format;
+
+(**
+ * Probe a bytestream to determine the input format. Each time a probe returns
+ * with a score that is too low, the probe buffer size is increased and another
+ * attempt is made. When the maximum probe size is reached, the input format
+ * with the highest score is returned.
+ *
+ * @param pb the bytestream to probe
+ * @param fmt the input format is put here
+ * @param url the url of the stream
+ * @param logctx the log context
+ * @param offset the offset within the bytestream to probe from
+ * @param max_probe_size the maximum probe buffer size (zero for default)
+ * @return 0 in case of success, a negative value corresponding to an
+ * AVERROR code otherwise
+ *)
+function av_probe_input_buffer2(pb: PAVIOContext; var fmt: PAVInputFormat;
+ url: {const} PAnsiChar; logctx: pointer;
+ offset: cuint; max_probe_size: cuint): cint;
+ cdecl; external av__format;
+
+(**
+ * Like av_probe_input_buffer2() but returns 0 on success
+ *)
+function av_probe_input_buffer(pb: PAVIOContext; var fmt: PAVInputFormat;
+ url: {const} PAnsiChar; logctx: pointer;
+ offset: cuint; max_probe_size: cuint): cint;
+ cdecl; external av__format;
+
+(**
+ * Open an input stream and read the header. The codecs are not opened.
+ * The stream must be closed with av_close_input_file().
+ *
+ * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context).
+ * May be a pointer to NULL, in which case an AVFormatContext is allocated by this
+ * function and written into ps.
+ * Note that a user-supplied AVFormatContext will be freed on failure.
+ * @param url URL of the stream to open.
+ * @param fmt If non-NULL, this parameter forces a specific input format.
+ * Otherwise the format is autodetected.
+ * @param options A dictionary filled with AVFormatContext and demuxer-private options.
+ * On return this parameter will be destroyed and replaced with a dict containing
+ * options that were not found. May be NULL.
+ *
+ * @return 0 on success, a negative AVERROR on failure.
+ *
+ * @note If you want to use custom IO, preallocate the format context and set its pb field.
+ *)
+function avformat_open_input(ps: PPAVFormatContext; url: {const} PAnsiChar; fmt: PAVInputFormat; options: PPAVDictionary): cint;
+ cdecl; external av__format;
+
+function av_demuxer_open(ic: PAVFormatContext): cint;
+ cdecl; external av__format; deprecated;
+
+(**
+ * Read packets of a media file to get stream information. This
+ * is useful for file formats with no headers such as MPEG. This
+ * function also computes the real framerate in case of MPEG-2 repeat
+ * frame mode.
+ * The logical file position is not changed by this function;
+ * examined packets may be buffered for later processing.
+ *
+ * @param ic media file handle
+ * @param options If non-NULL, an ic.nb_streams long array of pointers to
+ * dictionaries, where i-th member contains options for
+ * codec corresponding to i-th stream.
+ * On return each dictionary will be filled with options that were not found.
+ * @return >=0 if OK, AVERROR_xxx on error
+ *
+ * @note this function isn't guaranteed to open all the codecs, so
+ * options being non-empty at return is a perfectly normal behavior.
+ *
+ * @todo Let the user decide somehow what information is needed so that
+ * we do not waste time getting stuff the user does not need.
+ *)
+function avformat_find_stream_info(ic: PAVFormatContext; options: PPAVDictionary): cint;
+ cdecl; external av__format;
+
+(**
+ * Find the programs which belong to a given stream.
+ *
+ * @param ic media file handle
+ * @param last the last found program, the search will start after this
+ * program, or from the beginning if it is NULL
+ * @param s stream index
+ * @return the next program which belongs to s, NULL if no program is found or
+ * the last program is not among the programs of ic.
+ *)
+function av_find_program_from_stream(ic: PAVFormatContext; last: PAVProgram; s: cint): PAVProgram;
+ cdecl; external av__format;
+
+procedure av_program_add_stream_index(ac: PAVFormatContext; progid: cint; idx: cuint);
+ cdecl; external av__format;
+
+(**
+ * Find the "best" stream in the file.
+ * The best stream is determined according to various heuristics as the most
+ * likely to be what the user expects.
+ * If the decoder parameter is non-NULL, av_find_best_stream will find the
+ * default decoder for the stream's codec; streams for which no decoder can
+ * be found are ignored.
+ *
+ * @param ic media file handle
+ * @param type stream type: video, audio, subtitles, etc.
+ * @param wanted_stream_nb user-requested stream number,
+ * or -1 for automatic selection
+ * @param related_stream try to find a stream related (eg. in the same
+ * program) to this one, or -1 if none
+ * @param decoder_ret if non-NULL, returns the decoder for the
+ * selected stream
+ * @param flags flags; none are currently defined
+ * @return the non-negative stream number in case of success,
+ * AVERROR_STREAM_NOT_FOUND if no stream with the requested type
+ * could be found,
+ * AVERROR_DECODER_NOT_FOUND if streams were found but no decoder
+ * @note If av_find_best_stream returns successfully and decoder_ret is not
+ * NULL, then *decoder_ret is guaranteed to be set to a valid AVCodec.
+ *)
+function av_find_best_stream(ic: PAVFormatContext;
+ type_: TAVMediaType;
+ wanted_stream_nb: cint;
+ related_stream: cint;
+ decoder_ret: PPAVCodec;
+ flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Return the next frame of a stream.
+ * This function returns what is stored in the file, and does not validate
+ * that what is there are valid frames for the decoder. It will split what is
+ * stored in the file into frames and return one for each call. It will not
+ * omit invalid data between valid frames so as to give the decoder the maximum
+ * information possible for decoding.
+ *
+ * If pkt->buf is NULL, then the packet is valid until the next
+ * av_read_frame() or until avformat_close_input(). Otherwise the packet
+ * is valid indefinitely. In both cases the packet must be freed with
+ * av_packet_unref when it is no longer needed. For video, the packet contains
+ * exactly one frame. For audio, it contains an integer number of frames if each
+ * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames
+ * have a variable size (e.g. MPEG audio), then it contains one frame.
+ *
+ * pkt->pts, pkt->dts and pkt->duration are always set to correct
+ * values in AVStream.time_base units (and guessed if the format cannot
+ * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format
+ * has B-frames, so it is better to rely on pkt->dts if you do not
+ * decompress the payload.
+ *
+ * @return 0 if OK, < 0 on error or end of file
+ *)
+function av_read_frame(s: PAVFormatContext; var pkt: TAVPacket): cint;
+ cdecl; external av__format;
+
+(**
+ * Seek to the keyframe at timestamp.
+ * 'timestamp' in 'stream_index'.
+ *
+ * @param s media file handle
+ * @param stream_index If stream_index is (-1), a default
+ * stream is selected, and timestamp is automatically converted
+ * from AV_TIME_BASE units to the stream specific time_base.
+ * @param timestamp Timestamp in AVStream.time_base units
+ * or, if no stream is specified, in AV_TIME_BASE units.
+ * @param flags flags which select direction and seeking mode
+ * @return >= 0 on success
+ *)
+function av_seek_frame(s: PAVFormatContext; stream_index: cint; timestamp: cint64;
+ flags: cint): cint;
+ cdecl; external av__format;
+
+
+(**
+ * Seek to timestamp ts.
+ * Seeking will be done so that the point from which all active streams
+ * can be presented successfully will be closest to ts and within min/max_ts.
+ * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
+ *
+ * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and
+ * are the file position (this may not be supported by all demuxers).
+ * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames
+ * in the stream with stream_index (this may not be supported by all demuxers).
+ * Otherwise all timestamps are in units of the stream selected by stream_index
+ * or if stream_index is -1, in AV_TIME_BASE units.
+ * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as
+ * keyframes (this may not be supported by all demuxers).
+ * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored.
+ *
+ * @param s media file handle
+ * @param stream_index index of the stream which is used as time base reference
+ * @param min_ts smallest acceptable timestamp
+ * @param ts target timestamp
+ * @param max_ts largest acceptable timestamp
+ * @param flags flags
+ * @return >=0 on success, error code otherwise
+ *
+ * @note This is part of the new seek API which is still under construction.
+ * Thus do not use this yet. It may change at any time, do not expect
+ * ABI compatibility yet!
+ *)
+function avformat_seek_file(s: PAVFormatContext; stream_index: cint; min_ts, ts, max_ts: cint64; flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Discard all internally buffered data. This can be useful when dealing with
+ * discontinuities in the byte stream. Generally works only with formats that
+ * can resync. This includes headerless formats like MPEG-TS/TS but should also
+ * work with NUT, Ogg and in a limited way AVI for example.
+ *
+ * The set of streams, the detected duration, stream parameters and codecs do
+ * not change when calling this function. If you want a complete reset, it's
+ * better to open a new AVFormatContext.
+ *
+ * This does not flush the AVIOContext (s->pb). If necessary, call
+ * avio_flush(s->pb) before calling this function.
+ *
+ * @param s media file handle
+ * @return >=0 on success, error code otherwise
+ *)
+function avformat_flush(s: PAVFormatContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Start playing a network-based stream (e.g. RTSP stream) at the
+ * current position.
+ *)
+function av_read_play(s: PAVFormatContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Pause a network-based stream (e.g. RTSP stream).
+ *
+ * Use av_read_play() to resume it.
+ *)
+function av_read_pause(s: PAVFormatContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Close an opened input AVFormatContext. Free it and all its contents
+ * and set *s to NULL.
+ *)
+procedure avformat_close_input(s: PPAVFormatContext);
+ cdecl; external av__format;
+(**
+ * @}
+ *)
+
+const
+ AVSEEK_FLAG_BACKWARD = 1; ///< seek backward
+ AVSEEK_FLAG_BYTE = 2; ///< seeking based on position in bytes
+ AVSEEK_FLAG_ANY = 4; ///< seek to any frame, even non-keyframes
+ AVSEEK_FLAG_FRAME = 8;
+
+ AVSTREAM_INIT_IN_WRITE_HEADER = 0; ///< stream parameters initialized in avformat_write_header
+ AVSTREAM_INIT_IN_INIT_OUTPUT = 1; ///< stream parameters initialized in avformat_init_output
+
+ AV_FRAME_FILENAME_FLAGS_MULTIPLE = 1; ///< Allow multiple %d
+
+(**
+ * @addtogroup lavf_encoding
+ * @{
+ *)
+(**
+ * Allocate the stream private data and write the stream header to
+ * an output media file.
+ *
+ * @param s Media file handle, must be allocated with avformat_alloc_context().
+ * Its oformat field must be set to the desired output format;
+ * Its pb field must be set to an already opened AVIOContext.
+ * @param options An AVDictionary filled with AVFormatContext and muxer-private options.
+ * On return this parameter will be destroyed and replaced with a dict containing
+ * options that were not found. May be NULL.
+ *
+ * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec had not already been fully initialized in avformat_init,
+ * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec had already been fully initialized in avformat_init,
+ * negative AVERROR on failure.
+ *
+ * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_init_output.
+ *)
+function avformat_write_header(s: PAVFormatContext; options: {PPAVDictionary} pointer): cint;
+ cdecl; external av__format;
+
+(**
+ * Allocate the stream private data and initialize the codec, but do not write the header.
+ * May optionally be used before avformat_write_header to initialize stream parameters
+ * before actually writing the header.
+ * If using this function, do not pass the same options to avformat_write_header.
+ *
+ * @param s Media file handle, must be allocated with avformat_alloc_context().
+ * Its oformat field must be set to the desired output format;
+ * Its pb field must be set to an already opened AVIOContext.
+ * @param options An AVDictionary filled with AVFormatContext and muxer-private options.
+ * On return this parameter will be destroyed and replaced with a dict containing
+ * options that were not found. May be NULL.
+ *
+ * @return AVSTREAM_INIT_IN_WRITE_HEADER on success if the codec requires avformat_write_header to fully initialize,
+ * AVSTREAM_INIT_IN_INIT_OUTPUT on success if the codec has been fully initialized,
+ * negative AVERROR on failure.
+ *
+ * @see av_opt_find, av_dict_set, avio_open, av_oformat_next, avformat_write_header.
+ *)
+{av_warn_unused_result}
+function avformat_init_output(s: PAVFormatContext; options: PPAVDictionary): cint;
+ cdecl; external av__format;
+
+(**
+ * Write a packet to an output media file.
+ *
+ * This function passes the packet directly to the muxer, without any buffering
+ * or reordering. The caller is responsible for correctly interleaving the
+ * packets if the format requires it. Callers that want libavformat to handle
+ * the interleaving should call av_interleaved_write_frame() instead of this
+ * function.
+ *
+ * @param s media file handle
+ * @param pkt The packet containing the data to be written. Note that unlike
+ * av_interleaved_write_frame(), this function does not take
+ * ownership of the packet passed to it (though some muxers may make
+ * an internal reference to the input packet).
+ *
+ * This parameter can be NULL (at any time, not just at the end), in
+ * order to immediately flush data buffered within the muxer, for
+ * muxers that buffer up data internally before writing it to the
+ * output.
+ *
+ * Packet's @ref AVPacket.stream_index "stream_index" field must be
+ * set to the index of the corresponding stream in @ref
+ * AVFormatContext.streams "s->streams".
+ *
+ * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts")
+ * must be set to correct values in the stream's timebase (unless the
+ * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then
+ * they can be set to AV_NOPTS_VALUE).
+ * The dts for subsequent packets passed to this function must be strictly
+ * increasing when compared in their respective timebases (unless the
+ * output format is flagged with the AVFMT_TS_NONSTRICT, then they
+ * merely have to be nondecreasing). @ref AVPacket.duration
+ * "duration") should also be set if known.
+ * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush
+ *
+ * @see av_interleaved_write_frame()
+ *)
+function av_write_frame(s: PAVFormatContext; pkt: PAVPacket): cint;
+ cdecl; external av__format;
+
+(**
+ * Write a packet to an output media file ensuring correct interleaving.
+ *
+ * This function will buffer the packets internally as needed to make sure the
+ * packets in the output file are properly interleaved in the order of
+ * increasing dts. Callers doing their own interleaving should call
+ * av_write_frame() instead of this function.
+ *
+ * Using this function instead of av_write_frame() can give muxers advance
+ * knowledge of future packets, improving e.g. the behaviour of the mp4
+ * muxer for VFR content in fragmenting mode.
+ *
+ * @param s media file handle
+ * @param pkt The packet containing the data to be written.
+ *
+ * If the packet is reference-counted, this function will take
+ * ownership of this reference and unreference it later when it sees
+ * fit.
+ * The caller must not access the data through this reference after
+ * this function returns. If the packet is not reference-counted,
+ * libavformat will make a copy.
+ *
+ * This parameter can be NULL (at any time, not just at the end), to
+ * flush the interleaving queues.
+ *
+ * Packet's @ref AVPacket.stream_index "stream_index" field must be
+ * set to the index of the corresponding stream in @ref
+ * AVFormatContext.streams "s->streams".
+ *
+ * The timestamps (@ref AVPacket.pts "pts", @ref AVPacket.dts "dts")
+ * must be set to correct values in the stream's timebase (unless the
+ * output format is flagged with the AVFMT_NOTIMESTAMPS flag, then
+ * they can be set to AV_NOPTS_VALUE).
+ * The dts for subsequent packets in one stream must be strictly
+ * increasing (unless the output format is flagged with the
+ * AVFMT_TS_NONSTRICT, then they merely have to be nondecreasing).
+ * @ref AVPacket.duration "duration") should also be set if known.
+ *
+ * @return 0 on success, a negative AVERROR on error. Libavformat will always
+ * take care of freeing the packet, even if this function fails.
+ *
+ * @see av_write_frame(), AVFormatContext.max_interleave_delta
+ *)
+function av_interleaved_write_frame(s: PAVFormatContext; var pkt: TAVPacket): cint;
+ cdecl; external av__format;
+
+(**
+ * Write an uncoded frame to an output media file.
+ *
+ * The frame must be correctly interleaved according to the container
+ * specification; if not, then av_interleaved_write_frame() must be used.
+ *
+ * See av_interleaved_write_frame() for details.
+ *)
+function av_write_uncoded_frame(s: PAVFormatContext; stream_index: cint;
+ frame: PAVFrame): cint;
+ cdecl; external av__format;
+
+(**
+ * Write an uncoded frame to an output media file.
+ *
+ * If the muxer supports it, this function makes it possible to write an AVFrame
+ * structure directly, without encoding it into a packet.
+ * It is mostly useful for devices and similar special muxers that use raw
+ * video or PCM data and will not serialize it into a byte stream.
+ *
+ * To test whether it is possible to use it with a given muxer and stream,
+ * use av_write_uncoded_frame_query().
+ *
+ * The caller gives up ownership of the frame and must not access it
+ * afterwards.
+ *
+ * @return >=0 for success, a negative code on error
+ *)
+function av_interleaved_write_uncoded_frame(s: PAVFormatContext; stream_index: cint;
+ frame: PAVFrame): cint;
+ cdecl; external av__format;
+
+
+(**
+ * Test whether a muxer supports uncoded frame.
+ *
+ * @return >=0 if an uncoded frame can be written to that muxer and stream,
+ * <0 if not
+ *)
+function av_write_uncoded_frame_query(s: PAVFormatContext; stream_index: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Write the stream trailer to an output media file and free the
+ * file private data.
+ *
+ * May only be called after a successful call to avformat_write_header.
+ *
+ * @param s media file handle
+ * @return 0 if OK, AVERROR_xxx on error
+ *)
+function av_write_trailer(s: pAVFormatContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Return the output format in the list of registered output formats
+ * which best matches the provided parameters, or return NULL if
+ * there is no match.
+ *
+ * @param short_name if non-NULL checks if short_name matches with the
+ * names of the registered formats
+ * @param filename if non-NULL checks if filename terminates with the
+ * extensions of the registered formats
+ * @param mime_type if non-NULL checks if mime_type matches with the
+ * MIME type of the registered formats
+ *)
+function av_guess_format(short_name: PAnsiChar;
+ filename: PAnsiChar;
+ mime_type: PAnsiChar): PAVOutputFormat;
+ cdecl; external av__format;
+
+(**
+ * Guess the codec ID based upon muxer and filename.
+ *)
+function av_guess_codec(fmt: PAVOutputFormat; short_name: PAnsiChar;
+ filename: PAnsiChar; mime_type: PAnsiChar;
+ type_: TCodecType): TAVCodecID;
+ cdecl; external av__format;
+
+(**
+ * Get timing information for the data currently output.
+ * The exact meaning of "currently output" depends on the format.
+ * It is mostly relevant for devices that have an internal buffer and/or
+ * work in real time.
+ * @param s media file handle
+ * @param stream stream in the media file
+ * @param[out] dts DTS of the last packet output for the stream, in stream
+ * time_base units
+ * @param[out] wall absolute time when that packet whas output,
+ * in microsecond
+ * @return 0 if OK, AVERROR(ENOSYS) if the format does not support it
+ * Note: some formats or devices may not allow to measure dts and wall
+ * atomically.
+ *)
+function av_get_output_timestamp(s: PAVFormatContext; stream: cint;
+ dts: Pcint64; wall: Pcint64): cint;
+ cdecl; external av__format;
+
+
+(**
+ * @}
+ *)
+
+
+(**
+ * @defgroup lavf_misc Utility functions
+ * @ingroup libavf
+ * @
+ *
+ * Miscellaneous utility functions related to both muxing and demuxing
+ * (or neither).
+ *)
+
+(**
+ * Send a nice hexadecimal dump of a buffer to the specified file stream.
+ *
+ * @param f The file stream pointer where the dump should be sent to.
+ * @param buf buffer
+ * @param size buffer size
+ *
+ * @see av_hex_dump_log, av_pkt_dump2, av_pkt_dump_log2
+ *)
+procedure av_hex_dump(f: PAVFile; buf: {const} PByteArray; size: cint); {<-?FILE}
+ cdecl; external av__format;
+
+(**
+ * Send a nice hexadecimal dump of a buffer to the log.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message, lower values signifying
+ * higher importance.
+ * @param buf buffer
+ * @param size buffer size
+ *
+ * @see av_hex_dump, av_pkt_dump, av_pkt_dump_log
+ *)
+procedure av_hex_dump_log(avcl: Pointer; level: cint; buf: {const} PByteArray; size: cint);
+ cdecl; external av__format;
+
+(**
+ * Send a nice dump of a packet to the specified file stream.
+ *
+ * @param f The file stream pointer where the dump should be sent to.
+ * @param pkt packet to dump
+ * @param dump_payload True if the payload must be displayed, too.
+ * @param st AVStream that the packet belongs to
+ *)
+procedure av_pkt_dump2(f: PAVFile; pkt: {const} PAVPacket; dump_payload: cint; st: {const} PAVStream);
+ cdecl; external av__format;
+
+(**
+ * Send a nice dump of a packet to the log.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message, lower values signifying
+ * higher importance.
+ * @param pkt packet to dump
+ * @param dump_payload True if the payload must be displayed, too.
+ * @param st AVStream that the packet belongs to
+ *)
+procedure av_pkt_dump_log2(avcl: pointer; level: cint; pkt: {const} PAVPacket; dump_payload: cint;
+ st: {const} PAVStream);
+ cdecl; external av__format;
+
+(**
+ * Get the AVCodecID for the given codec tag tag.
+ * If no codec id is found returns AV_CODEC_ID_NONE.
+ *
+ * @param tags list of supported codec_id-codec_tag pairs, as stored
+ * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
+ * @param tag codec tag to match to a codec ID
+ *)
+function av_codec_get_id(var tags: PAVCodecTag; tag: cuint): TAVCodecID;
+ cdecl; external av__format;
+
+(**
+ * Getsthe codec tag for the given codec id id.
+ * If no codec tag is found returns 0.
+ *
+ * @param tags list of supported codec_id-codec_tag pairs, as stored
+ * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
+ * @param id codec ID to match to a codec tag
+ *)
+function av_codec_get_tag(var tags: PAVCodecTag; id: TAVCodecID): cuint;
+ cdecl; external av__format;
+
+(**
+ * Get the codec tag for the given codec id.
+ *
+ * @param tags list of supported codec_id - codec_tag pairs, as stored
+ * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
+ * @param id codec id that should be searched for in the list
+ * @param tag A pointer to the found tag
+ * @return 0 if id was not found in tags, > 0 if it was found
+ *)
+function av_codec_get_tag2(var tags: PAVCodecTag; id: TAVCodecID;
+ tag: Pcuint): cint;
+ cdecl; external av__format;
+
+function av_find_default_stream_index(s: PAVFormatContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Get the index for a specific timestamp.
+ *
+ * @param st stream that the timestamp belongs to
+ * @param timestamp timestamp to retrieve the index for
+ * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond
+ * to the timestamp which is <= the requested one, if backward
+ * is 0, then it will be >=
+ * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise
+ * @return < 0 if no such timestamp could be found
+ *)
+function av_index_search_timestamp(st: PAVStream; timestamp: cint64; flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Add an index entry into a sorted list. Update the entry if the list
+ * already contains it.
+ *
+ * @param timestamp timestamp in the timebase of the given stream
+ *)
+function av_add_index_entry(st: PAVStream; pos: cint64; timestamp: cint64;
+ size: cint; distance: cint; flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Split a URL string into components.
+ *
+ * The pointers to buffers for storing individual components may be null,
+ * in order to ignore that component. Buffers for components not found are
+ * set to empty strings. If the port is not found, it is set to a negative
+ * value.
+ *
+ * @param proto the buffer for the protocol
+ * @param proto_size the size of the proto buffer
+ * @param authorization the buffer for the authorization
+ * @param authorization_size the size of the authorization buffer
+ * @param hostname the buffer for the host name
+ * @param hostname_size the size of the hostname buffer
+ * @param port_ptr a pointer to store the port number in
+ * @param path the buffer for the path
+ * @param path_size the size of the path buffer
+ * @param url the URL to split
+ *)
+procedure av_url_split(proto: PAnsiChar; proto_size: cint;
+ authorization: PAnsiChar; authorization_size: cint;
+ hostname: PAnsiChar; hostname_size: cint;
+ port_ptr: Pcint;
+ path: PAnsiChar; path_size: cint;
+ url: {const} PAnsiChar);
+ cdecl; external av__format;
+
+(**
+ * Print detailed information about the input or output format, such as
+ * duration, bitrate, streams, container, programs, metadata, side data,
+ * codec and time base.
+ *
+ * @param ic the context to analyze
+ * @param index index of the stream to dump information about
+ * @param url the URL to print, such as source or destination file
+ * @param is_output Select whether the specified context is an input(0) or output(1)
+ *)
+procedure av_dump_format(ic: PAVFormatContext;
+ index: cint;
+ url: {const} PAnsiChar;
+ is_output: cint);
+ cdecl; external av__format;
+
+(**
+ * Return in 'buf' the path with '%d' replaced by a number.
+ *
+ * Also handles the '%0nd' format where 'n' is the total number
+ * of digits and '%%'.
+ *
+ * @param buf destination buffer
+ * @param buf_size destination buffer size
+ * @param path numbered sequence string
+ * @param number frame number
+ * @param flags AV_FRAME_FILENAME_FLAGS_*
+ * @return 0 if OK, -1 on format error
+ *)
+function av_get_frame_filename2(buf: PAnsiChar; buf_size: cint;
+ path: {const} PAnsiChar; number: cint; flags: cint): cint;
+ cdecl; external av__format;
+function av_get_frame_filename(buf: PAnsiChar; buf_size: cint;
+ path: {const} PAnsiChar; number: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Check whether filename actually is a numbered sequence generator.
+ *
+ * @param filename possible numbered sequence string
+ * @return 1 if a valid numbered sequence string, 0 otherwise
+ *)
+function av_filename_number_test(filename: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Generate an SDP for an RTP session.
+ *
+ * Note, this overwrites the id values of AVStreams in the muxer contexts
+ * for getting unique dynamic payload types.
+ *
+ * @param ac array of AVFormatContexts describing the RTP streams. If the
+ * array is composed by only one context, such context can contain
+ * multiple AVStreams (one AVStream per RTP stream). Otherwise,
+ * all the contexts in the array (an AVCodecContext per RTP stream)
+ * must contain only one AVStream.
+ * @param n_files number of AVCodecContexts contained in ac
+ * @param buf buffer where the SDP will be stored (must be allocated by
+ * the caller)
+ * @param size the size of the buffer
+ * @return 0 if OK, AVERROR_xxx on error
+ *)
+function av_sdp_create(ac: pointer; n_files: cint; buf: PAnsiChar; size: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Return a positive value if the given filename has one of the given
+ * extensions, 0 otherwise.
+ *
+ * @param filename file name to check against the given extensions
+ * @param extensions a comma-separated list of filename extensions
+ *)
+function av_match_ext(filename: {const} Pchar; extensions: {const} Pchar): cint;
+ cdecl; external av__format;
+
+(**
+ * Test if the given container can store a codec.
+ *
+ * @param ofmt container to check for compatibility
+ * @param codec_id codec to potentially store in container
+ * @param std_compliance standards compliance level, one of FF_COMPLIANCE_*
+ *
+ * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot.
+ * A negative number if this information is not available.
+ *)
+function avformat_query_codec(ofmt: {const} PAVOutputFormat; codec_id: TAVCodecID;
+ std_compliance: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * @defgroup riff_fourcc RIFF FourCCs
+ * @
+ * Get the tables mapping RIFF FourCCs to libavcodec AVCodecIDs. The tables are
+ * meant to be passed to av_codec_get_id()/av_codec_get_tag() as in the
+ * following code:
+ * @code
+ * uint32_t tag = MKTAG('H', '2', '6', '4');
+ * const struct AVCodecTag *table[] = { avformat_get_riff_video_tags(), 0 };
+ * enum AVCodecID id = av_codec_get_id(table, tag);
+ * @endcode
+ *)
+(**
+ * @return the table mapping RIFF FourCCs for video to libavcodec AVCodecID.
+ *)
+function avformat_get_riff_video_tags(): {const} PAVCodecTag;
+ cdecl; external av__format;
+(**
+ * @return the table mapping RIFF FourCCs for audio to AVCodecID.
+ *)
+function avformat_get_riff_audio_tags(): {const} PAVCodecTag;
+ cdecl; external av__format;
+
+(**
+ * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID.
+ *)
+function avformat_get_mov_video_tags(): {const} PAVCodecTag;
+ cdecl; external av__format;
+
+(**
+ * @return the table mapping MOV FourCCs for audio to AVCodecID.
+ *)
+function avformat_get_mov_audio_tags(): {const} PAVCodecTag;
+ cdecl; external av__format;
+
+(**
+ * Guess the sample aspect ratio of a frame, based on both the stream and the
+ * frame aspect ratio.
+ *
+ * Since the frame aspect ratio is set by the codec but the stream aspect ratio
+ * is set by the demuxer, these two may not be equal. This function tries to
+ * return the value that you should use if you would like to display the frame.
+ *
+ * Basic logic is to use the stream aspect ratio if it is set to something sane
+ * otherwise use the frame aspect ratio. This way a container setting, which is
+ * usually easy to modify can override the coded value in the frames.
+ *
+ * @param format the format context which the stream is part of
+ * @param stream the stream which the frame is part of
+ * @param frame the frame with the aspect ratio to be determined
+ * @return the guessed (valid) sample_aspect_ratio, 0/1 if no idea
+ *)
+function av_guess_sample_aspect_ratio(format: PAVFormatContext; stream: PAVStream; frame: PAVFrame): TAVRational;
+ cdecl; external av__format;
+
+(**
+ * Guess the frame rate, based on both the container and codec information.
+ *
+ * @param ctx the format context which the stream is part of
+ * @param stream the stream which the frame is part of
+ * @param frame the frame for which the frame rate should be determined, may be NULL
+ * @return the guessed (valid) frame rate, 0/1 if no idea
+ *)
+function av_guess_frame_rate(ctx: PAVFormatContext; stream: PAVStream; frame: PAVFrame): TAVRational;
+ cdecl; external av__format;
+
+(**
+ * Check if the stream st contained in s is matched by the stream specifier
+ * spec.
+ *
+ * See the "stream specifiers" chapter in the documentation for the syntax
+ * of spec.
+ *
+ * @return >0 if st is matched by spec;
+ * 0 if st is not matched by spec;
+ * AVERROR code if spec is invalid
+ *
+ * @note A stream specifier can match several streams in the format.
+ *)
+function avformat_match_stream_specifier(s: PAVFormatContext; st: PAVStream;
+ spec: PAnsiChar): cint;
+ cdecl; external av__format;
+
+function avformat_queue_attached_pictures(s: PAVFormatContext): cint;
+ cdecl; external av__format;
+
+{$IFDEF FF_API_OLD_BSF}
+(**
+ * Apply a list of bitstream filters to a packet.
+ *
+ * @param codec AVCodecContext, usually from an AVStream
+ * @param pkt the packet to apply filters to. If, on success, the returned
+ * packet has size == 0 and side_data_elems == 0, it indicates that
+ * the packet should be dropped
+ * @param pkt the packet to apply filters to
+ * @param bsfc a NULL-terminated list of filters to apply
+ * @return >=0 on success;
+ * AVERROR code on failure
+ *)
+function av_apply_bitstream_filters(codec: PAVCodecContext; pkt: PAVPacket;
+ bsfc: PAVBitStreamFilterContext): cint;
+ cdecl; external av__format; deprecated;
+{$ENDIF}
+
+(**
+ * Transfer internal timing information from one stream to another.
+ *
+ * This function is useful when doing stream copy.
+ *
+ * @param ofmt target output format for ost
+ * @param ost output stream which needs timings copy and adjustments
+ * @param ist reference input stream to copy timings from
+ * @param copy_tb define from where the stream codec timebase needs to be imported
+ *)
+function avformat_transfer_internal_stream_timing_info(ofmt: {const} PAVOutputFormat;
+ ost: PAVStream; ist: {const} PAVStream;
+ copy_tb: TAVTimebaseSource): cint;
+ cdecl; external av__format;
+
+(**
+ * Get the internal codec timebase from a stream.
+ *
+ * @param st input stream to extract the timebase from
+ *)
+function av_stream_get_codec_timebase(st: {const} PAVStream): TAVRational;
+ cdecl; external av__format;
+
+implementation
+
+end.
diff --git a/src/lib/ffmpeg-4.0/avio.pas b/src/lib/ffmpeg-4.0/avio.pas
new file mode 100644
index 00000000..25a89489
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/avio.pas
@@ -0,0 +1,992 @@
+(*
+ * copyright (c) 2001 Fabrice Bellard
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavformat/avio.h
+ * unbuffered I/O operations
+ * @warning This file has to be considered an internal but installed
+ * header, so it should not be directly included in your projects.
+ *
+ * update to
+ * avformat version: 56.4.101
+ *)
+
+unit avio;
+
+{$IFDEF FPC}
+ {$MODE DELPHI }
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I switches.inc}
+
+interface
+
+uses
+ ctypes,
+ {$IFDEF UNIX}
+ BaseUnix, // for SEEK_CUR
+ {$ENDIF}
+ avcodec,
+ avutil,
+ SysUtils,
+ UConfig;
+
+(**
+ * Those FF_API_* defines are not part of public API.
+ * They may change, break or disappear at any time.
+ *)
+const
+ FF_API_URL_CLASS = (LIBAVFORMAT_VERSION_MAJOR >= 53);
+
+const
+ (**
+ * Seeking works like for a local file.
+ *)
+ AVIO_SEEKABLE_NORMAL = (1 << 0);
+
+ (**
+ * Seeking by timestamp with avio_seek_time() is possible.
+ *)
+ AVIO_SEEKABLE_TIME = (1 << 1);
+
+type
+ TReadWriteFunc = function(opaque: Pointer; buf: PByteArray; buf_size: cint): cint; cdecl;
+ TSeekFunc = function(opaque: Pointer; offset: cint64; whence: cint): cint64; cdecl;
+ Tcallback = function(p: pointer): cint; cdecl;
+
+type
+(**
+ * Callback for checking whether to abort blocking functions.
+ * AVERROR_EXIT is returned in this case by the interrupted
+ * function. During blocking operations, callback is called with
+ * opaque as parameter. If the callback returns 1, the
+ * blocking operation will be aborted.
+ *
+ * No members can be added to this struct without a major bump, if
+ * new elements have been added after this struct in AVFormatContext
+ * or AVIOContext.
+ *)
+ PAVIOInterruptCB = ^TAVIOInterruptCB;
+ TAVIOInterruptCB = record
+ callback: Tcallback;
+ opaque: pointer;
+ end; (*TAVIOInterruptCB*)
+
+ (**
+ * Directory entry types.
+ *)
+ TAVIODirEntryType = (
+ AVIO_ENTRY_UNKNOWN,
+ AVIO_ENTRY_BLOCK_DEVICE,
+ AVIO_ENTRY_CHARACTER_DEVICE,
+ AVIO_ENTRY_DIRECTORY,
+ AVIO_ENTRY_NAMED_PIPE,
+ AVIO_ENTRY_SYMBOLIC_LINK,
+ AVIO_ENTRY_SOCKET,
+ AVIO_ENTRY_FILE,
+ AVIO_ENTRY_SERVER,
+ AVIO_ENTRY_SHARE,
+ AVIO_ENTRY_WORKGROUP
+ );
+
+ TAVIODataMarkerType = (
+ (**
+ * Header data; this needs to be present for the stream to be decodeable.
+ *)
+ AVIO_DATA_MARKER_HEADER,
+ (**
+ * A point in the output bytestream where a decoder can start decoding
+ * (i.e. a keyframe). A demuxer/decoder given the data flagged with
+ * AVIO_DATA_MARKER_HEADER, followed by any AVIO_DATA_MARKER_SYNC_POINT,
+ * should give decodeable results.
+ *)
+ AVIO_DATA_MARKER_SYNC_POINT,
+ (**
+ * A point in the output bytestream where a demuxer can start parsing
+ * (for non self synchronizing bytestream formats). That is, any
+ * non-keyframe packet start point.
+ *)
+ AVIO_DATA_MARKER_BOUNDARY_POINT,
+ (**
+ * This is any, unlabelled data. It can either be a muxer not marking
+ * any positions at all, it can be an actual boundary/sync point
+ * that the muxer chooses not to mark, or a later part of a packet/fragment
+ * that is cut into multiple write callbacks due to limited IO buffer size.
+ *)
+ AVIO_DATA_MARKER_UNKNOWN,
+ (**
+ * Trailer data, which doesn't contain actual content, but only for
+ * finalizing the output file.
+ *)
+ AVIO_DATA_MARKER_TRAILER,
+ (**
+ * A point in the output bytestream where the underlying AVIOContext might
+ * flush the buffer depending on latency or buffering requirements. Typically
+ * means the end of a packet.
+ *)
+ AVIO_DATA_MARKER_FLUSH_POINT
+ );
+
+ (**
+ * Describes single entry of the directory.
+ *
+ * Only name and type fields are guaranteed be set.
+ * Rest of fields are protocol or/and platform dependent and might be unknown.
+ *)
+ PPAVIODirEntry = ^PAVIODirEntry;
+ PAVIODirEntry = ^TAVIODirEntry;
+ TAVIODirEntry = record
+ name: PAnsiChar; (**< Filename *)
+ type_: cint; (**< Type of the entry *)
+ utf8: cint; (**< Set to 1 when name is encoded with UTF-8, 0 otherwise.
+ Name can be encoded with UTF-8 even though 0 is set. *)
+ size: cint64; (**< File size in bytes, -1 if unknown. *)
+ modification_timestamp: cint64; (**< Time of last modification in microseconds since unix
+ epoch, -1 if unknown. *)
+ access_timestamp: cint64; (**< Time of last access in microseconds since unix epoch,
+ -1 if unknown. *)
+ status_change_timestamp: cint64; (**< Time of last status change in microseconds since unix
+ epoch, -1 if unknown. *)
+ user_id: cint64; (**< User ID of owner, -1 if unknown. *)
+ group_id: cint64; (**< Group ID of owner, -1 if unknown. *)
+ filemode: cint64; (**< Unix file mode, -1 if unknown. *)
+ end;
+
+ PPAVIODirContext = ^PAVIODirContext;
+ PAVIODirContext = ^TAVIODirContext;
+ TAVIODirContext = record
+ url_context: pointer;
+ (** struct URLContext *url_context; *)
+ end;
+
+(**
+ * Bytestream IO Context.
+ * New fields can be added to the end with minor version bumps.
+ * Removal, reordering and changes to existing fields require a major
+ * version bump.
+ * sizeof(AVIOContext) must not be used outside libav*.
+ *
+ * @note None of the function pointers in AVIOContext should be called
+ * directly, they should only be set by the client application
+ * when implementing custom I/O. Normally these are set to the
+ * function pointers specified in avio_alloc_context()
+ *)
+ PPAVIOContext = ^PAVIOContext;
+ PAVIOContext = ^TAVIOContext;
+ TAVIOContext = record
+ (**
+ * A class for private options.
+ *
+ * If this AVIOContext is created by avio_open2(), av_class is set and
+ * passes the options down to protocols.
+ *
+ * If this AVIOContext is manually allocated, then av_class may be set by
+ * the caller.
+ *
+ * warning -- this field can be NULL, be sure to not pass this AVIOContext
+ * to any av_opt_* functions in that case.
+ *)
+ av_class: {const} PAVClass;
+
+ (*
+ * The following shows the relationship between buffer, buf_ptr,
+ * buf_ptr_max, buf_end, buf_size, and pos, when reading and when writing
+ * (since AVIOContext is used for both):
+ *
+ **********************************************************************************
+ * READING
+ **********************************************************************************
+ *
+ * | buffer_size |
+ * |---------------------------------------|
+ * | |
+ *
+ * buffer buf_ptr buf_end
+ * +---------------+-----------------------+
+ * |/ / / / / / / /|/ / / / / / /| |
+ * read buffer: |/ / consumed / | to be read /| |
+ * |/ / / / / / / /|/ / / / / / /| |
+ * +---------------+-----------------------+
+ *
+ * pos
+ * +-------------------------------------------+-----------------+
+ * input file: | | |
+ * +-------------------------------------------+-----------------+
+ *
+ *
+ **********************************************************************************
+ * WRITING
+ **********************************************************************************
+ *
+ * | buffer_size |
+ * |--------------------------------------|
+ * | |
+ *
+ * buf_ptr_max
+ * buffer (buf_ptr) buf_end
+ * +-----------------------+--------------+
+ * |/ / / / / / / / / / / /| |
+ * write buffer: | / / to be flushed / / | |
+ * |/ / / / / / / / / / / /| |
+ * +-----------------------+--------------+
+ * buf_ptr can be in this
+ * due to a backward seek
+ *
+ * pos
+ * +-------------+----------------------------------------------+
+ * output file: | | |
+ * +-------------+----------------------------------------------+
+ *
+ *)
+
+ buffer: PByteArray; (**< Start of the buffer. *)
+ buffer_size: cint; (**< Maximum buffer size *)
+ buf_ptr: PByteArray; (**< Current position in the buffer *)
+ buf_end: PByteArray; (**< End of the data, may be less than
+ buffer+buffer_size if the read function returned
+ less data than requested, e.g. for streams where
+ no more data has been received yet. *)
+ opaque: pointer; (**< A private pointer, passed to the read/write/seek/...
+ functions. *)
+ read_packet: TReadWriteFunc;
+ write_packet: TReadWriteFunc;
+ seek: TSeekFunc;
+ pos: cint64; (**< position in the file of the current buffer *)
+ must_flush: cint; (**< unused *)
+ eof_reached: cint; (**< true if eof reached *)
+ write_flag: cint; (**< true if open for writing *)
+ max_packet_size: cint;
+ checksum: culong;
+ checksum_ptr: PByteArray;
+ update_checksum: function (checksum: culong; buf: {const} PAnsiChar; size: cuint): culong; cdecl;
+ error: cint; (**< contains the error code or 0 if no error happened *)
+ (**
+ * Pause or resume playback for network streaming protocols - e.g. MMS.
+ *)
+ read_pause: function(opaque: Pointer; pause: cint): cint; cdecl;
+ (**
+ * Seek to a given timestamp in stream with the specified stream_index.
+ * Needed for some network streaming protocols which don't support seeking
+ * to byte position.
+ *)
+ read_seek: function(opaque: Pointer; stream_index: cint;
+ timestamp: cint64; flags: cint): cint64; cdecl;
+ (**
+ * A combination of AVIO_SEEKABLE_ flags or 0 when the stream is not seekable.
+ *)
+ seekable: cint;
+
+ (**
+ * max filesize, used to limit allocations
+ * This field is internal to libavformat and access from outside is not allowed.
+ *)
+ maxsize: cint64;
+
+ (**
+ * avio_read and avio_write should if possible be satisfied directly
+ * instead of going through a buffer, and avio_seek will always
+ * call the underlying seek function directly.
+ *)
+ direct: cint;
+
+ (**
+ * Bytes read statistic
+ * This field is internal to libavformat and access from outside is not allowed.
+ *)
+ bytes_read: cint64;
+
+ (**
+ * seek statistic
+ * This field is internal to libavformat and access from outside is not allowed.
+ *)
+ seek_count: cint;
+
+ (**
+ * writeout statistic
+ * This field is internal to libavformat and access from outside is not allowed.
+ *)
+ writeout_count: cint;
+
+ (**
+ * Original buffer size
+ * used internally after probing and ensure seekback to reset the buffer size
+ * This field is internal to libavformat and access from outside is not allowed.
+ *)
+ orig_buffer_size: cint;
+
+ (**
+ * Threshold to favor readahead over seek.
+ * This is current internal only, do not use from outside.
+ *)
+ short_seek_threshold: cint;
+
+ (**
+ * ',' separated list of allowed protocols.
+ *)
+ protocol_whitelist: {const} PAnsiChar;
+
+ (**
+ * A callback that is used instead of write_packet.
+ *)
+ write_data_type: function(opaque: pointer; buf: Pcuint8; buf_size: cint;
+ type_: TAVIODataMarkerType; time: cint64): cint; cdecl;
+ (**
+ * If set, don't call write_data_type separately for AVIO_DATA_MARKER_BOUNDARY_POINT,
+ * but ignore them and treat them as AVIO_DATA_MARKER_UNKNOWN (to avoid needlessly
+ * small chunks of data returned from the callback).
+ *)
+ ignore_boundary_point: cint;
+
+ (**
+ * Internal, not meant to be used from outside of AVIOContext.
+ *)
+ current_type: TAVIODataMarkerType;
+ last_time: cint64;
+
+ (**
+ * A callback that is used instead of short_seek_threshold.
+ * This is current internal only, do not use from outside.
+ *)
+ short_seek_get: function(opaque: pointer): cint; cdecl;
+
+ written: cint64;
+
+ (**
+ * Maximum reached position before a backward seek in the write buffer,
+ * used keeping track of already written data for a later flush.
+ *)
+ buf_ptr_max: PByteArray;
+
+ (**
+ * Try to buffer at least this amount of data before flushing it
+ *)
+ min_packet_size: cint;
+ end; {AVIOContext}
+
+(* unbuffered I/O *)
+
+(**
+ * Return the name of the protocol that will handle the passed URL.
+ *
+ * NULL is returned if no protocol could be found for the given URL.
+ *
+ * @return Name of the protocol or NULL.
+ *)
+function avio_find_protocol_name(url: {const} PAnsiChar): {const} PAnsiChar;
+ cdecl; external av__format;
+
+(**
+ * Return AVIO_* access flags corresponding to the access permissions
+ * of the resource in url, or a negative value corresponding to an
+ * AVERROR code in case of failure. The returned access flags are
+ * masked by the value in flags.
+ *
+ * @note This function is intrinsically unsafe, in the sense that the
+ * checked resource may change its existence or permission status from
+ * one call to another. Thus you should not trust the returned value,
+ * unless you are sure that no other processes are accessing the
+ * checked resource.
+ *)
+function avio_check(url: {const} PAnsiChar; flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Move or rename a resource.
+ *
+ * @note url_src and url_dst should share the same protocol and authority.
+ *
+ * @param url_src url to resource to be moved
+ * @param url_dst new url to resource if the operation succeeded
+ * @return >=0 on success or negative on error.
+ *)
+function avpriv_io_move(url_src: {const} PAnsiChar; url_dst: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Delete a resource.
+ *
+ * @param url resource to be deleted.
+ * @return >=0 on success or negative on error.
+ *)
+function avpriv_io_delete(url: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Open directory for reading.
+ *
+ * @param s directory read context. Pointer to a NULL pointer must be passed.
+ * @param url directory to be listed.
+ * @param options A dictionary filled with protocol-private options. On return
+ * this parameter will be destroyed and replaced with a dictionary
+ * containing options that were not found. May be NULL.
+ * @return >=0 on success or negative on error.
+ *)
+function avio_open_dir(s: PPAVIODirContext; url: {const} PAnsiChar; options: PPAVDictionary): cint;
+ cdecl; external av__format;
+
+(**
+ * Get next directory entry.
+ *
+ * Returned entry must be freed with avio_free_directory_entry(). In particular
+ * it may outlive AVIODirContext.
+ *
+ * @param s directory read context.
+ * @param[out] next next entry or NULL when no more entries.
+ * @return >=0 on success or negative on error. End of list is not considered an
+ * error.
+ *)
+function avio_read_dir(s: PAVIODirContext; next: PPAVIODirEntry): cint;
+ cdecl; external av__format;
+
+(**
+ * Close directory.
+ *
+ * @note Entries created using avio_read_dir() are not deleted and must be
+ * freeded with avio_free_directory_entry().
+ *
+ * @param s directory read context.
+ * @return >=0 on success or negative on error.
+ *)
+function avio_close_dir(s: PPAVIODirContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Free entry allocated by avio_read_dir().
+ *
+ * @param entry entry to be freed.
+ *)
+procedure avio_free_directory_entry(entry: PPAVIODirEntry);
+ cdecl; external av__format;
+
+(**
+ * Allocate and initialize an AVIOContext for buffered I/O. It must be later
+ * freed with avio_context_free().
+ *
+ * @param buffer Memory block for input/output operations via AVIOContext.
+ * The buffer must be allocated with av_malloc() and friends.
+ * It may be freed and replaced with a new buffer by libavformat.
+ * AVIOContext.buffer holds the buffer currently in use,
+ * which must be later freed with av_free().
+ * @param buffer_size The buffer size is very important for performance.
+ * For protocols with fixed blocksize it should be set to this blocksize.
+ * For others a typical size is a cache page, e.g. 4kb.
+ * @param write_flag Set to 1 if the buffer should be writable, 0 otherwise.
+ * @param opaque An opaque pointer to user-specific data.
+ * @param read_packet A function for refilling the buffer, may be NULL.
+ * For stream protocols, must never return 0 but rather
+ * a proper AVERROR code.
+ * @param write_packet A function for writing the buffer contents, may be NULL.
+ * The function may not change the input buffers content.
+ * @param seek A function for seeking to specified byte position, may be NULL.
+ *
+ * @return Allocated AVIOContext or NULL on failure.
+ *)
+function avio_alloc_context(
+ buffer: PAnsiChar;
+ buffer_size: cint;
+ write_flag: cint;
+ opaque: Pointer;
+ read_packet: TReadWriteFunc;
+ write_packet: TReadWriteFunc;
+ seek: TSeekFunc): PAVIOContext;
+ cdecl; external av__format;
+
+(**
+ * Free the supplied IO context and everything associated with it.
+ *
+ * @param s Double pointer to the IO context. This function will write NULL
+ * into s.
+ *)
+procedure avio_context_free(s: PAVIOContext);
+ cdecl; external av__format;
+
+procedure avio_w8(s: PAVIOContext; b: cint);
+ cdecl; external av__format;
+procedure avio_write(s: PAVIOContext; buf: {const} PAnsiChar; size: cint);
+ cdecl; external av__format;
+procedure avio_wl64(s: PAVIOContext; val: cuint64);
+ cdecl; external av__format;
+procedure avio_wb64(s: PAVIOContext; val: cuint64);
+ cdecl; external av__format;
+procedure avio_wl32(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+procedure avio_wb32(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+procedure avio_wl24(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+procedure avio_wb24(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+procedure avio_wl16(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+procedure avio_wb16(s: PAVIOContext; val: cuint);
+ cdecl; external av__format;
+
+(**
+ * Write a NULL-terminated string.
+ * @return number of bytes written.
+ *)
+function avio_put_str(s: PAVIOContext; str: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Convert an UTF-8 string to UTF-16LE and write it.
+ * @param s the AVIOContext
+ * @param str NULL-terminated UTF-8 string
+ *
+ * @return number of bytes written.
+ *)
+function avio_put_str16le(s: PAVIOContext; str: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Convert an UTF-8 string to UTF-16BE and write it.
+ * @param s the AVIOContext
+ * @param str NULL-terminated UTF-8 string
+ *
+ * @return number of bytes written.
+ *)
+function avio_put_str16be(s: PAVIOContext; str: {const} PAnsiChar): cint;
+ cdecl; external av__format;
+
+(**
+ * Mark the written bytestream as a specific type.
+ *
+ * Zero-length ranges are omitted from the output.
+ *
+ * @param time the stream time the current bytestream pos corresponds to
+ * (in AV_TIME_BASE units), or AV_NOPTS_VALUE if unknown or not
+ * applicable
+ * @param type the kind of data written starting at the current pos
+ *)
+procedure avio_write_marker(s: PAVIOContext; time: cint64; type_: TAVIODataMarkerType);
+ cdecl; external av__format;
+
+const
+(**
+ * ORing this as the "whence" parameter to a seek function causes it to
+ * return the filesize without seeking anywhere. Supporting this is optional.
+ * If it is not supported then the seek function will return <0.
+ *)
+ AVSEEK_SIZE = $10000;
+
+(**
+ * Passing this flag as into the "whence" parameter to a seek function causes it to
+ * seek by any means (like reopening and linear reading) or other normally unreasonable
+ * means that can be extremely slow.
+ * This may be ignored by the seek code.
+ *)
+ AVSEEK_FORCE = $20000;
+
+(**
+ * fseek() equivalent for AVIOContext.
+ * @return new position or AVERROR.
+ *)
+function avio_seek(s: PAVIOContext; offset: cint64; whence: cint): cint64;
+ cdecl; external av__format;
+
+(**
+ * Skip given number of bytes forward
+ * @return new position or AVERROR.
+ *)
+function avio_skip(s: PAVIOContext; offset: cint64): cint64;
+ cdecl; external av__format;
+
+{$IFDEF UNIX}
+(**
+ * ftell() equivalent for AVIOContext.
+ * @return position or AVERROR.
+ *)
+function avio_tell(s: PAVIOContext): cint64; {$IFDEF HasInline}inline;{$ENDIF}
+{$ELSE}
+{$ENDIF}
+
+(**
+ * Get the filesize.
+ * @return filesize or AVERROR
+ *)
+function avio_size(s: PAVIOContext): cint64;
+ cdecl; external av__format;
+
+(**
+ * feof() equivalent for AVIOContext.
+ * @return non zero if and only if end of file
+ *)
+function avio_feof(s: PAVIOContext): cint;
+ cdecl; external av__format;
+
+(** @warning Writes up to 4 KiB per call *)
+function avio_printf(s: PAVIOContext; fmt: {const} PAnsiChar; args: array of const): cint;
+ cdecl; external av__format;
+
+(**
+ * Force flushing of buffered data.
+ *
+ * For write streams, force the buffered data to be immediately written to the output,
+ * without to wait to fill the internal buffer.
+ *
+ * For read streams, discard all currently buffered data, and advance the
+ * reported file position to that of the underlying stream. This does not
+ * read new data, and does not perform any seeks.
+ *)
+procedure avio_flush(s: PAVIOContext);
+ cdecl; external av__format;
+
+(**
+ * Read size bytes from AVIOContext into buf.
+ * @return number of bytes read or AVERROR
+ *)
+function avio_read(s: PAVIOContext; buf: Pbyte; size: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Read size bytes from AVIOContext into buf. Unlike avio_read(), this is allowed
+ * to read fewer bytes than requested. The missing bytes can be read in the next
+ * call. This always tries to read at least 1 byte.
+ * Useful to reduce latency in certain cases.
+ * @return number of bytes read or AVERROR
+ *)
+function avio_read_partial(s: PAVIOContext; buf: Pbyte; size: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * @name Functions for reading from AVIOContext
+ * @
+ *
+ * @note return 0 if EOF, so you cannot use it if EOF handling is
+ * necessary
+ *)
+function avio_r8(s: PAVIOContext): cint;
+ cdecl; external av__format;
+
+function avio_rl16(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rl24(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rl32(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rl64(s: PAVIOContext): cuint64;
+ cdecl; external av__format;
+
+function avio_rb16(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rb24(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rb32(s: PAVIOContext): cuint;
+ cdecl; external av__format;
+
+function avio_rb64(s: PAVIOContext): cuint64;
+ cdecl; external av__format;
+
+(**
+ * @
+ *)
+(**
+ * Read a string from pb into buf. The reading will terminate when either
+ * a NULL character was encountered, maxlen bytes have been read, or nothing
+ * more can be read from pb. The result is guaranteed to be NULL-terminated, it
+ * will be truncated if buf is too small.
+ * Note that the string is not interpreted or validated in any way, it
+ * might get truncated in the middle of a sequence for multi-byte encodings.
+ *
+ * @return number of bytes read (is always <= maxlen).
+ * If reading ends on EOF or error, the return value will be one more than
+ * bytes actually read.
+ *)
+function avio_get_str(pb: PAVIOContext; maxlen: cint; buf: PAnsiChar; buflen: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Read a UTF-16 string from pb and convert it to UTF-8.
+ * The reading will terminate when either a null or invalid character was
+ * encountered or maxlen bytes have been read.
+ * @return number of bytes read (is always <= maxlen)
+ *)
+function avio_get_str16le(pb: PAVIOContext; maxlen: cint; buf: PAnsiChar; buflen: cint): cint;
+ cdecl; external av__format;
+
+function avio_get_str16be(pb: PAVIOContext; maxlen: cint; buf: PAnsiChar; buflen: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * @name URL open modes
+ * The flags argument to avio_open must be one of the following
+ * constants, optionally ORed with other flags.
+ * @{
+ *)
+const
+ AVIO_FLAG_READ = 1; (**< read-only *)
+ AVIO_FLAG_WRITE = 2; (**< write-only *)
+ AVIO_FLAG_READ_WRITE = {(AVIO_FLAG_READ|AVIO_FLAG_WRITE)} 3; (**< read-write pseudo flag *)
+(**
+ * @
+ *)
+
+const
+(**
+ * Use non-blocking mode.
+ * If this flag is set, operations on the context will return
+ * AVERROR(EAGAIN) if they can not be performed immediately.
+ * If this flag is not set, operations on the context will never return
+ * AVERROR(EAGAIN).
+ * Note that this flag does not affect the opening/connecting of the
+ * context. Connecting a protocol will always block if necessary (e.g. on
+ * network protocols) but never hang (e.g. on busy devices).
+ * Warning: non-blocking protocols is work-in-progress; this flag may be
+ * silently ignored.
+ *)
+ AVIO_FLAG_NONBLOCK = 8;
+
+(**
+ * Use direct mode.
+ * avio_read and avio_write should if possible be satisfied directly
+ * instead of going through a buffer, and avio_seek will always
+ * call the underlying seek function directly.
+ *)
+ AVIO_FLAG_DIRECT = $8000;
+
+(**
+ * Create and initialize a AVIOContext for accessing the
+ * resource indicated by url.
+ * @note When the resource indicated by url has been opened in
+ * read+write mode, the AVIOContext can be used only for writing.
+ *
+ * @param s Used to return the pointer to the created AVIOContext.
+ * In case of failure the pointed to value is set to NULL.
+ * @param flags flags which control how the resource indicated by url
+ * is to be opened
+ * @return 0 in case of success, a negative value corresponding to an
+ * AVERROR code in case of failure
+ *)
+function avio_open(s: PPAVIOContext; url: {const} PAnsiChar; flags: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Create and initialize a AVIOContext for accessing the
+ * resource indicated by url.
+ * @note When the resource indicated by url has been opened in
+ * read+write mode, the AVIOContext can be used only for writing.
+ *
+ * @param s Used to return the pointer to the created AVIOContext.
+ * In case of failure the pointed to value is set to NULL.
+ * @param flags flags which control how the resource indicated by url
+ * is to be opened
+ * @param int_cb an interrupt callback to be used at the protocols level
+ * @param options A dictionary filled with protocol-private options. On return
+ * this parameter will be destroyed and replaced with a dict containing options
+ * that were not found. May be NULL.
+ * @return 0 in case of success, a negative value corresponding to an
+ * AVERROR code in case of failure
+ *)
+function avio_open2(s: PPAVIOContext; {const} url: PAnsiChar; flags: cint;
+ {const} int_cb: PAVIOInterruptCB; options: PPAVDictionary): cint;
+ cdecl; external av__format;
+
+(**
+ * Close the resource accessed by the AVIOContext s and free it.
+ * This function can only be used if s was opened by avio_open().
+ *
+ * The internal buffer is automatically flushed before closing the
+ * resource.
+ *
+ * @return 0 on success, an AVERROR < 0 on error.
+ * @see avio_close
+ *)
+function avio_close(s: PAVIOContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Close the resource accessed by the AVIOContext *s, free it
+ * and set the pointer pointing to it to NULL.
+ * This function can only be used if s was opened by avio_open().
+ *
+ * The internal buffer is automatically flushed before closing the
+ * resource.
+ *
+ * @return 0 on success, an AVERROR < 0 on error.
+ * @see avio_close
+ *)
+function avio_closep(s: PPAVIOContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Open a write only memory stream.
+ *
+ * @param s new IO context
+ * @return zero if no error.
+ *)
+function avio_open_dyn_buf(s: PPAVIOContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Return the written size and a pointer to the buffer.
+ * The AVIOContext stream is left intact.
+ * The buffer must NOT be freed.
+ * No padding is added to the buffer.
+ *
+ * @param s IO context
+ * @param pbuffer pointer to a byte buffer
+ * @return the length of the byte buffer
+ *)
+function avio_get_dyn_buf(s: PAVIOContext; var pbuffer: Pcuint8): cint;
+ cdecl; external av__format;
+
+(**
+ * Return the written size and a pointer to the buffer. The buffer
+ * must be freed with av_free().
+ * Padding of AV_INPUT_BUFFER_PADDING_SIZE is added to the buffer.
+ *
+ * @param s IO context
+ * @param pbuffer pointer to a byte buffer
+ * @return the length of the byte buffer
+ *)
+function avio_close_dyn_buf(s: PAVIOContext; var pbuffer: Pcuint8): cint;
+ cdecl; external av__format;
+
+(**
+ * Iterate through names of available protocols.
+ *
+ * @param opaque A private pointer representing current protocol.
+ * It must be a pointer to NULL on first iteration and will
+ * be updated by successive calls to avio_enum_protocols.
+ * @param output If set to 1, iterate over output protocols,
+ * otherwise over input protocols.
+ *
+ * @return A static string containing the name of current protocol or NULL
+ *)
+function avio_enum_protocols(var opaque: Pointer; output: cint): {const} PAnsiChar;
+ cdecl; external av__format;
+
+(**
+ * Pause and resume playing - only meaningful if using a network streaming
+ * protocol (e.g. MMS).
+ * @param pause 1 for pause, 0 for resume
+ *)
+function avio_pause(h: PAVIOContext; pause: cint): cint;
+ cdecl; external av__format;
+
+(**
+ * Seek to a given timestamp relative to some component stream.
+ * Only meaningful if using a network streaming protocol (e.g. MMS.).
+ * @param stream_index The stream index that the timestamp is relative to.
+ * If stream_index is (-1) the timestamp should be in AV_TIME_BASE
+ * units from the beginning of the presentation.
+ * If a stream_index >= 0 is used and the protocol does not support
+ * seeking based on component streams, the call will fail with ENOTSUP.
+ * @param timestamp timestamp in AVStream.time_base units
+ * or if there is no stream specified then in AV_TIME_BASE units.
+ * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
+ * and AVSEEK_FLAG_ANY. The protocol may silently ignore
+ * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
+ * fail with ENOTSUP if used and not supported.
+ * @return >= 0 on success
+ * @see AVInputFormat: : read_seek
+ *)
+function avio_seek_time(h: PAVIOContext; stream_index: cint;
+ timestamp: cint64; flags: cint): cint64;
+ cdecl; external av__format;
+
+(* Avoid a warning. The header can not be included because it breaks c++. *)
+type
+ PAVBPrint = ^TAVBPrint;
+ TAVBPrint = record
+ end;
+
+(**
+ * Read contents of h into print buffer, up to max_size bytes, or up to EOF.
+ *
+ * @return 0 for success (max_size bytes read or EOF reached), negative error
+ * code otherwise
+ *)
+function avio_read_to_bprint(h: PAVIOContext; pb: PAVBPrint; max_size: size_t): cint;
+ cdecl; external av__format;
+
+(**
+ * Accept and allocate a client context on a server context.
+ * @param s the server context
+ * @param c the client context, must be unallocated
+ * @return >= 0 on success or a negative value corresponding
+ * to an AVERROR on failure
+ *)
+function avio_accept(s: PAVIOContext; c: PPAVIOContext): cint;
+ cdecl; external av__format;
+
+(**
+ * Perform one step of the protocol handshake to accept a new client.
+ * This function must be called on a client returned by avio_accept() before
+ * using it as a read/write context.
+ * It is separate from avio_accept() because it may block.
+ * A step of the handshake is defined by places where the application may
+ * decide to change the proceedings.
+ * For example, on a protocol with a request header and a reply header, each
+ * one can constitute a step because the application may use the parameters
+ * from the request to change parameters in the reply; or each individual
+ * chunk of the request can constitute a step.
+ * If the handshake is already finished, avio_handshake() does nothing and
+ * returns 0 immediately.
+ *
+ * @param c the client context to perform the handshake on
+ * @return 0 on a complete and successful handshake
+ * > 0 if the handshake progressed, but is not complete
+ * < 0 for an AVERROR code
+ *)
+function avio_handshake(c: PAVIOContext): cint;
+ cdecl; external av__format;
+
+implementation
+
+(**
+ * For SEEK_CUR on Windows
+ * values taken from stdio.h of C
+ *)
+{$IFNDEF SEEK_SET}
+const
+ SEEK_SET = 0;
+{$ENDIF}
+
+{$IFNDEF SEEK_CUR}
+const
+ SEEK_CUR = 1;
+{$ENDIF}
+
+{$IFNDEF SEEK_END}
+const
+ SEEK_END = 2;
+{$ENDIF}
+
+function avio_tell(s: PAVIOContext): cint64; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result := avio_seek(s, 0, SEEK_CUR);
+end;
+
+
+end.
diff --git a/src/lib/ffmpeg-4.0/avutil.pas b/src/lib/ffmpeg-4.0/avutil.pas
new file mode 100644
index 00000000..2e5e64bd
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/avutil.pas
@@ -0,0 +1,366 @@
+(*
+ * copyright (c) 2006 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversions of
+ *
+ * libavutil/avutil.h:
+ * version: 54.7.100
+ *
+ *)
+
+unit avutil;
+
+{$IFDEF FPC}
+ {$MODE DELPHI}
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+ {$MACRO ON} (* Turn macro support on *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I ff_api-defines.inc} (* FF_API_* defines *)
+
+{$IFDEF DARWIN}
+ {$linklib libavutil}
+{$ENDIF}
+
+interface
+
+uses
+ ctypes,
+ rational,
+ {$IFDEF UNIX}
+ BaseUnix,
+ {$ENDIF}
+ UConfig;
+
+const
+ (* Max. supported version by this header *)
+ LIBAVUTIL_MAX_VERSION_MAJOR = 56;
+ LIBAVUTIL_MAX_VERSION_MINOR = 22;
+ LIBAVUTIL_MAX_VERSION_RELEASE = 100;
+ LIBAVUTIL_MAX_VERSION = (LIBAVUTIL_MAX_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVUTIL_MAX_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVUTIL_MAX_VERSION_RELEASE * VERSION_RELEASE);
+
+ (* Min. supported version by this header *)
+ LIBAVUTIL_MIN_VERSION_MAJOR = 56;
+ LIBAVUTIL_MIN_VERSION_MINOR = 14;
+ LIBAVUTIL_MIN_VERSION_RELEASE = 100;
+ LIBAVUTIL_MIN_VERSION = (LIBAVUTIL_MIN_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBAVUTIL_MIN_VERSION_MINOR * VERSION_MINOR) +
+ (LIBAVUTIL_MIN_VERSION_RELEASE * VERSION_RELEASE);
+
+(* Check if linked versions are supported *)
+{$IF (LIBAVUTIL_VERSION < LIBAVUTIL_MIN_VERSION)}
+ {$MESSAGE Error 'Linked version of libavutil is too old!'}
+{$IFEND}
+
+{$IF (LIBAVUTIL_VERSION > LIBAVUTIL_MAX_VERSION)}
+ {$MESSAGE Error 'Linked version of libavutil is not yet supported!'}
+{$IFEND}
+
+type
+{$IFNDEF FPC}
+ // defines for Delphi
+ size_t = cardinal;
+{$ENDIF}
+ Psize_t = ^size_t;
+
+(**
+ * Return the LIBAVUTIL_VERSION_INT constant.
+ *)
+function avutil_version(): cuint;
+ cdecl; external av__util;
+
+(**
+ * Return an informative version string. This usually is the actual release
+ * version number or a git commit description. This string has no fixed format
+ * and can change any time. It should never be parsed by code.
+ *)
+function av_version_info(): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Return the libavutil build-time configuration.
+ *)
+function avutil_configuration(): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Return the libavutil license.
+ *)
+function avutil_license(): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * @addtogroup lavu_media Media Type
+ * @brief Media Type
+ *)
+
+type
+
+ PAVFile = pointer;
+
+ TAVMediaType = (
+ AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
+ AVMEDIA_TYPE_VIDEO,
+ AVMEDIA_TYPE_AUDIO,
+ AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
+ AVMEDIA_TYPE_SUBTITLE,
+ AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
+ AVMEDIA_TYPE_NB
+ );
+
+(**
+ * Return a string describing the media_type enum, NULL if media_type
+ * is unknown.
+ *)
+function av_get_media_type_string(media_type: TAVMediaType): PAnsiChar;
+ cdecl; external av__util;
+
+const
+ FF_LAMBDA_SHIFT = 7;
+ FF_LAMBDA_SCALE = (1 shl FF_LAMBDA_SHIFT);
+ FF_QP2LAMBDA = 118; ///< factor to convert from H.263 QP to lambda
+ FF_LAMBDA_MAX = (256*128-1);
+
+ FF_QUALITY_SCALE = FF_LAMBDA_SCALE; //FIXME maybe remove
+
+(**
+ * @brief Undefined timestamp value
+ *
+ * Usually reported by demuxer that work on containers that do not provide
+ * either pts or dts.
+ *)
+
+ AV_NOPTS_VALUE = $8000000000000000;
+
+(**
+ * Internal time base represented as integer
+ *)
+
+ AV_TIME_BASE = 1000000;
+
+(**
+ * Internal time base represented as fractional value
+ *)
+
+ AV_TIME_BASE_Q : TAVRational = (num: 1; den: AV_TIME_BASE);
+
+(**
+ * @}
+ * @}
+ * @defgroup lavu_picture Image related
+ *
+ * AVPicture types, pixel formats and basic image planes manipulation.
+ *
+ * @
+ *)
+
+type
+ TAVPictureType = (
+ AV_PICTURE_TYPE_NONE = 0, ///< Undefined
+ AV_PICTURE_TYPE_I, ///< Intra
+ AV_PICTURE_TYPE_P, ///< Predicted
+ AV_PICTURE_TYPE_B, ///< Bi-dir predicted
+ AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG-4
+ AV_PICTURE_TYPE_SI, ///< Switching Intra
+ AV_PICTURE_TYPE_SP, ///< Switching Predicted
+ AV_PICTURE_TYPE_BI ///< BI type
+ );
+
+(**
+ * Return a single letter to describe the given picture type
+ * pict_type.
+ *
+ * @param[in] pict_type the picture type @return a single character
+ * representing the picture type, '?' if pict_type is unknown
+ *)
+function av_get_picture_type_char(pict_type: TAVPictureType): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Return x default pointer in case p is NULL.
+ *)
+function av_x_if_null(p: {const} pointer; x: {const} pointer): pointer; {$IFDEF HasInline}inline;{$ENDIF}
+
+(**
+ * Compute the length of an integer list.
+ *
+ * @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
+ * @param term list terminator (usually 0 or -1)
+ * @param list pointer to the list
+ * @return length of the list, in elements, not counting the terminator
+ *)
+function av_int_list_length_for_size(elsize: cuint;
+ {const} list: pointer; term: cuint64): cuint; {av_pure}
+ cdecl; external av__util;
+
+(**
+ * Compute the length of an integer list.
+ *
+ * @param term list terminator (usually 0 or -1)
+ * @param list pointer to the list
+ * @return length of the list, in elements, not counting the terminator
+ *)
+function av_int_list_length({const} list: pointer; term: cuint64): cuint;
+
+(**
+ * Open a file using a UTF-8 filename.
+ * The API of this function matches POSIX fopen(), errors are returned through
+ * errno.
+ *)
+function av_fopen_utf8(path: {const} Pchar; mode: {const} Pchar): PAVFile;
+ cdecl; external av__util;
+
+(**
+ * Return the fractional representation of the internal time base.
+ *)
+function av_get_time_base_q: TAVRational;
+ cdecl; external av__util;
+
+const AV_FOURCC_MAX_STRING_SIZE = 32;
+
+function av_fourcc2str(fourcc: cuint64): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Fill the provided buffer with a string containing a FourCC (four-character
+ * code) representation.
+ *
+ * @param buf a buffer with size in bytes of at least AV_FOURCC_MAX_STRING_SIZE
+ * @param fourcc the fourcc to represent
+ * @return the buffer in input
+ *)
+function av_fourcc_make_string(buf: PAnsiChar; fourcc: cuint64): PAnsiChar;
+ cdecl; external av__util;
+
+{$INCLUDE libavutil/cpu.pas}
+
+{$INCLUDE libavutil/dict.pas}
+
+{$INCLUDE libavutil/error.pas}
+
+{$INCLUDE libavutil/mathematics.pas}
+
+{$INCLUDE libavutil/mem.pas}
+
+{$INCLUDE libavutil/log.pas}
+
+{$INCLUDE libavutil/pixfmt.pas}
+
+{$INCLUDE libavutil/samplefmt.pas}
+
+{$INCLUDE libavutil/opt.pas}
+
+{$INCLUDE libavutil/buffer.pas}
+
+{$INCLUDE libavutil/frame.pas}
+
+
+(* libavutil/common.h *) // until now MKTAG and MKBETAG is all from common.h KMS 19/5/2010
+
+(**
+ * MKTAG and MKBETAG are usually used to convert a magic string to an enumeration index.
+ * In Pascal this can probably not be used and the functions could be removed.
+ * KMS 8/6/2012
+ *)
+function MKTAG (a, b, c, d: AnsiChar): integer; {$IFDEF HasInline}inline;{$ENDIF}
+function MKBETAG(a, b, c, d: AnsiChar): integer; {$IFDEF HasInline}inline;{$ENDIF}
+
+implementation
+
+uses
+ SysUtils;
+
+function av_x_if_null(p: {const} pointer; x: {const} pointer): pointer; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ if p = nil then
+ Result := x
+ else
+ Result := p;
+end;
+
+function av_int_list_length({const} list: pointer; term: cuint64): cuint;
+begin
+ // KMS 2013: It is not really clear whether it should be sizeof(pointer) or sizeof(cint).
+ // Going for the larger one (pointer) should at least prevent buffer overflows.
+ // So, the result is either 4 byte or 8 byte.
+ Result := av_int_list_length_for_size(sizeof(pointer), list, term);
+end;
+
+(* libavutil/common.h *)
+
+function MKTAG(a, b, c, d: AnsiChar): integer; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result := (ord(a) or (ord(b) shl 8) or (ord(c) shl 16) or (ord(d) shl 24));
+end;
+
+function MKBETAG(a, b, c, d: AnsiChar): integer; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result := (ord(d) or (ord(c) shl 8) or (ord(b) shl 16) or (ord(a) shl 24));
+end;
+
+(* libavutil/error.h *)
+
+function av_make_error_string(errbuf: Pchar; errbuf_size: size_t; errnum: cint): Pchar; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ av_strerror(errnum, errbuf, errbuf_size);
+ av_make_error_string := errbuf;
+end;
+
+function av_err2str(errnum: cint): pchar; {$IFDEF HasInline}inline;{$ENDIF}
+var
+ errbuf: Pchar;
+begin
+ errbuf := stralloc(AV_ERROR_MAX_STRING_SIZE);
+ av_make_error_string(errbuf, AV_ERROR_MAX_STRING_SIZE, errnum);
+ av_err2str := errbuf;
+end;
+
+(* libavutil/mem.h *)
+
+function av_size_mult(a: size_t; b: size_t; r: Psize_t): size_t;
+ cdecl; external av__util;
+(* To Be Implemented, March 2012 KMS *)
+//function av_size_mult(a: size_t; b: size_t; r: pointer): size_t;
+//begin
+// {
+// size_t t = a * b;
+// /* Hack inspired from glibc: only try the division if nelem and elsize
+// * are both greater than sqrt(SIZE_MAX). */
+// if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b)
+// return AVERROR(EINVAL);
+// *r = t;
+// return 0;
+//}
+//end;
+
+function AVERROR(e: integer): integer;
+begin
+ AVERROR := AVERROR_SIGN * e;
+end;
+
+end.
diff --git a/src/lib/ffmpeg-4.0/ff_api-defines.inc b/src/lib/ffmpeg-4.0/ff_api-defines.inc
new file mode 100644
index 00000000..9ac8eedd
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/ff_api-defines.inc
@@ -0,0 +1,169 @@
+// prevent pasdoc from parsing this file
+{$IFNDEF PASDOC}
+
+(**
+ * FF_API_* defines may be placed below to indicate public API that will be
+ * dropped at a future version bump. The defines themselves are not part of
+ * the public API and may change, break or disappear at any time.
+ *)
+
+(** avcodec defines *)
+{$ifndef FF_API_LOWRES}
+{$define FF_API_LOWRES := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_DEBUG_MV}
+{$define FF_API_DEBUG_MV := (LIBAVCODEC_VERSION_MAJOR < 58)}
+{$endif}
+{$ifndef FF_API_AVCTX_TIMEBASE}
+{$define FF_API_AVCTX_TIMEBASE := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_CODED_FRAME}
+{$define FF_API_CODED_FRAME := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_SIDEDATA_ONLY_PKT}
+{$define FF_API_SIDEDATA_ONLY_PKT:= (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_VDPAU_PROFILE}
+{$define FF_API_VDPAU_PROFILE := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_CONVERGENCE_DURATION}
+{$define FF_API_CONVERGENCE_DURATION := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_AVPICTURE}
+{$define FF_API_AVPICTURE := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_AVPACKET_OLD_API}
+{$define FF_API_AVPACKET_OLD_API := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_RTP_CALLBACK}
+{$define FF_API_RTP_CALLBACK := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_VBV_DELAY}
+{$define FF_API_VBV_DELAY := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_CODER_TYPE}
+{$define FF_API_CODER_TYPE := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_STAT_BITS}
+{$define FF_API_STAT_BITS := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_PRIVATE_OPT}
+{$define FF_API_PRIVATE_OPT := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_ASS_TIMING}
+{$define FF_API_ASS_TIMING := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_OLD_BSF}
+{$define FF_API_OLD_BSF := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_COPY_CONTEXT}
+{$define FF_API_COPY_CONTEXT := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_GET_CONTEXT_DEFAULTS}
+{$define FF_API_GET_CONTEXT_DEFAULTS := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_NVENC_OLD_NAME}
+{$define FF_API_NVENC_OLD_NAME := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_STRUCT_VAAPI_CONTEXT}
+{$define FF_API_STRUCT_VAAPI_CONTEXT := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_MERGE_SD_API}
+{$define FF_API_MERGE_SD_API := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_TAG_STRING}
+{$define FF_API_TAG_STRING := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_GETCHROMA}
+{$define FF_API_GETCHROMA := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_CODEC_GET_SET}
+{$define FF_API_CODEC_GET_SET := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_USER_VISIBLE_AVHWACCEL}
+{$define FF_API_USER_VISIBLE_AVHWACCEL := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_LOCKMGR}
+{$define FF_API_LOCKMGR := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_NEXT}
+{$define FF_API_NEXT := (LIBAVCODEC_VERSION_MAJOR < 59)}
+{$endif}
+
+(* avutil defines *)
+{$ifndef FF_API_VAAPI}
+{$define FF_API_VAAPI := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_FRAME_QP}
+{$define FF_API_FRAME_QP := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_PLUS1_MINUS1}
+{$define FF_API_PLUS1_MINUS1 := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_ERROR_FRAME}
+{$define FF_API_ERROR_FRAME := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_PKT_PTS}
+{$define FF_API_PKT_PTS := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_CRYPTO_SIZE_T}
+{$define FF_API_CRYPTO_SIZE_T := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_FRAME_GET_SET}
+{$define FF_API_FRAME_GET_SET := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+{$ifndef FF_API_PSEUDOPAL}
+{$define FF_API_PSEUDOPAL := (LIBAVUTIL_VERSION_MAJOR < 57)}
+{$endif}
+
+(** avformat FF_API defines *)
+{$ifndef FF_API_COMPUTE_PKT_FIELDS2}
+{$define FF_API_COMPUTE_PKT_FIELDS2 := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_OLD_OPEN_CALLBACKS}
+{$define FF_API_OLD_OPEN_CALLBACKS := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_LAVF_AVCTX}
+{$define FF_API_LAVF_AVCTX := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_HTTP_USER_AGENT}
+{$define FF_API_HTTP_USER_AGENT := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_HLS_WRAP}
+{$define FF_API_HLS_WRAP := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_LAVF_KEEPSIDE_FLAG}
+{$define FF_API_LAVF_KEEPSIDE_FLAG := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_OLD_ROTATE_API}
+{$define FF_API_OLD_ROTATE_API := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_FORMAT_GET_SET}
+{$define FF_API_FORMAT_GET_SET := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_OLD_AVIO_EOF_0}
+{$define FF_API_OLD_AVIO_EOF_0 := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_LAVF_FFSERVER}
+{$define FF_API_LAVF_FFSERVER := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_FORMAT_FILENAME}
+{$define FF_API_FORMAT_FILENAME := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_OLD_RTSP_OPTIONS}
+{$define FF_API_OLD_RTSP_OPTIONS := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+{$ifndef FF_API_NEXT}
+{$define FF_API_NEXT := (LIBAVFORMAT_VERSION_MAJOR < 59)}
+{$endif}
+
+{$ifndef FF_API_R_FRAME_RATE}
+{$define FF_API_R_FRAME_RATE := 1}
+{$endif}
+
+(** swscale FF_API defines *)
+{$ifndef FF_API_SWS_VECTOR}
+{$define FF_API_SWS_VECTOR := (LIBSWSCALE_VERSION_MAJOR < 6)}
+{$endif}
+
+{$ENDIF PASDOC}
diff --git a/src/lib/ffmpeg-4.0/libavcodec/audioconvert.pas b/src/lib/ffmpeg-4.0/libavcodec/audioconvert.pas
new file mode 100644
index 00000000..cf6c96bb
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavcodec/audioconvert.pas
@@ -0,0 +1,294 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/channel_layout.h and libavcodec/audioconvert.h
+ * avutil version 52.66.100; avcodec version 55.52.102
+ *
+ *)
+
+(** libavutil/channel_layout.h **)
+
+(**
+ * @file
+ * audio channel layout utility functions
+ *)
+
+(**
+ * @defgroup channel_masks Audio channel masks
+ *
+ * A channel layout is a 64-bits integer with a bit set for every channel.
+ * The number of bits set must be equal to the number of channels.
+ * The value 0 means that the channel layout is not known.
+ * @note this data structure is not powerful enough to handle channels
+ * combinations that have the same channel multiple times, such as
+ * dual-mono.
+ *
+ *)
+const
+ {* Audio channel masks *}
+ AV_CH_FRONT_LEFT = $00000001;
+ AV_CH_FRONT_RIGHT = $00000002;
+ AV_CH_FRONT_CENTER = $00000004;
+ AV_CH_LOW_FREQUENCY = $00000008;
+ AV_CH_BACK_LEFT = $00000010;
+ AV_CH_BACK_RIGHT = $00000020;
+ AV_CH_FRONT_LEFT_OF_CENTER = $00000040;
+ AV_CH_FRONT_RIGHT_OF_CENTER = $00000080;
+ AV_CH_BACK_CENTER = $00000100;
+ AV_CH_SIDE_LEFT = $00000200;
+ AV_CH_SIDE_RIGHT = $00000400;
+ AV_CH_TOP_CENTER = $00000800;
+ AV_CH_TOP_FRONT_LEFT = $00001000;
+ AV_CH_TOP_FRONT_CENTER = $00002000;
+ AV_CH_TOP_FRONT_RIGHT = $00004000;
+ AV_CH_TOP_BACK_LEFT = $00008000;
+ AV_CH_TOP_BACK_CENTER = $00010000;
+ AV_CH_TOP_BACK_RIGHT = $00020000;
+ AV_CH_STEREO_LEFT = $20000000; ///< Stereo downmix.
+ AV_CH_STEREO_RIGHT = $40000000; ///< See AV_CH_STEREO_LEFT.
+ AV_CH_WIDE_LEFT = $0000000080000000;
+ AV_CH_WIDE_RIGHT = $0000000100000000;
+ AV_CH_SURROUND_DIRECT_LEFT = $0000000200000000;
+ AV_CH_SURROUND_DIRECT_RIGHT = $0000000400000000;
+ AV_CH_LOW_FREQUENCY_2 = $0000000800000000;
+
+(** Channel mask value used for AVCodecContext.request_channel_layout
+ * to indicate that the user requests the channel order of the decoder output
+ * to be the native codec channel order.
+ *)
+ AV_CH_LAYOUT_NATIVE = $8000000000000000;
+
+(**
+ * @}
+ * @defgroup channel_mask_c Audio channel convenience macros
+ * @{
+ * *)
+ AV_CH_LAYOUT_MONO = (AV_CH_FRONT_CENTER);
+ AV_CH_LAYOUT_STEREO = (AV_CH_FRONT_LEFT or AV_CH_FRONT_RIGHT);
+ AV_CH_LAYOUT_2POINT1 = (AV_CH_LAYOUT_STEREO or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_2_1 = (AV_CH_LAYOUT_STEREO or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_SURROUND = (AV_CH_LAYOUT_STEREO or AV_CH_FRONT_CENTER);
+ AV_CH_LAYOUT_3POINT1 = (AV_CH_LAYOUT_SURROUND or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_4POINT0 = (AV_CH_LAYOUT_SURROUND or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_4POINT1 = (AV_CH_LAYOUT_4POINT0 or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_2_2 = (AV_CH_LAYOUT_STEREO or AV_CH_SIDE_LEFT or AV_CH_SIDE_RIGHT);
+ AV_CH_LAYOUT_QUAD = (AV_CH_LAYOUT_STEREO or AV_CH_BACK_LEFT or AV_CH_BACK_RIGHT);
+ AV_CH_LAYOUT_5POINT0 = (AV_CH_LAYOUT_SURROUND or AV_CH_SIDE_LEFT or AV_CH_SIDE_RIGHT);
+ AV_CH_LAYOUT_5POINT1 = (AV_CH_LAYOUT_5POINT0 or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_5POINT0_BACK = (AV_CH_LAYOUT_SURROUND or AV_CH_BACK_LEFT or
+ AV_CH_BACK_RIGHT);
+ AV_CH_LAYOUT_5POINT1_BACK = (AV_CH_LAYOUT_5POINT0_BACK or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_6POINT0 = (AV_CH_LAYOUT_5POINT0 or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_6POINT0_FRONT = (AV_CH_LAYOUT_2_2 or AV_CH_FRONT_LEFT_OF_CENTER or
+ AV_CH_FRONT_RIGHT_OF_CENTER);
+ AV_CH_LAYOUT_HEXAGONAL = (AV_CH_LAYOUT_5POINT0_BACK or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_6POINT1 = (AV_CH_LAYOUT_5POINT1 or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_6POINT1_BACK = (AV_CH_LAYOUT_5POINT1_BACK or AV_CH_BACK_CENTER);
+ AV_CH_LAYOUT_6POINT1_FRONT = (AV_CH_LAYOUT_6POINT0_FRONT or AV_CH_LOW_FREQUENCY);
+ AV_CH_LAYOUT_7POINT0 = (AV_CH_LAYOUT_5POINT0 or AV_CH_BACK_LEFT or AV_CH_BACK_RIGHT);
+ AV_CH_LAYOUT_7POINT0_FRONT = (AV_CH_LAYOUT_5POINT0 or AV_CH_FRONT_LEFT_OF_CENTER or
+ AV_CH_FRONT_RIGHT_OF_CENTER);
+ AV_CH_LAYOUT_7POINT1 = (AV_CH_LAYOUT_5POINT1 or AV_CH_BACK_LEFT or AV_CH_BACK_RIGHT);
+ AV_CH_LAYOUT_7POINT1_WIDE = (AV_CH_LAYOUT_5POINT1 or AV_CH_FRONT_LEFT_OF_CENTER or
+ AV_CH_FRONT_RIGHT_OF_CENTER);
+ AV_CH_LAYOUT_OCTAGONAL = (AV_CH_LAYOUT_5POINT0 or AV_CH_BACK_LEFT or AV_CH_BACK_CENTER or
+ AV_CH_BACK_RIGHT);
+ AV_CH_LAYOUT_HEXADECAGONAL = (AV_CH_LAYOUT_OCTAGONAL or AV_CH_WIDE_LEFT or AV_CH_WIDE_RIGHT or AV_CH_TOP_BACK_LEFT or
+ AV_CH_TOP_BACK_RIGHT or AV_CH_TOP_BACK_CENTER or AV_CH_TOP_FRONT_CENTER or
+ AV_CH_TOP_FRONT_LEFT or AV_CH_TOP_FRONT_RIGHT);
+ AV_CH_LAYOUT_STEREO_DOWNMIX = (AV_CH_STEREO_LEFT or AV_CH_STEREO_RIGHT);
+
+type
+ TAVMatrixEncoding = (
+ AV_MATRIX_ENCODING_NONE,
+ AV_MATRIX_ENCODING_DOLBY,
+ AV_MATRIX_ENCODING_DPLII,
+ AV_MATRIX_ENCODING_DPLIIX,
+ AV_MATRIX_ENCODING_DPLIIZ,
+ AV_MATRIX_ENCODING_DOLBYEX,
+ AV_MATRIX_ENCODING_DOLBYHEADPHONE,
+ AV_MATRIX_ENCODING_NB
+ );
+
+(**
+ * Return a channel layout id that matches name, or 0 if no match is found.
+ *
+ * name can be one or several of the following notations,
+ * separated by '+' or '|':
+ * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0,
+ * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix);
+ * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC,
+ * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR);
+ * - a number of channels, in decimal, optionally followed by 'c', yielding
+ * the default channel layout for that number of channels (@see
+ * av_get_default_channel_layout);
+ * - a channel layout mask, in hexadecimal starting with "0x" (see the
+ * AV_CH_* macros).
+ *
+ * Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7"
+ *)
+function av_get_channel_layout(name: {const} PAnsiChar): cuint64;
+ cdecl; external av__util;
+
+(**
+ * Return a description of a channel layout.
+ * If nb_channels is <= 0, it is guessed from the channel_layout.
+ *
+ * @param buf put here the string containing the channel layout
+ * @param buf_size size in bytes of the buffer
+ *)
+procedure av_get_channel_layout_string(buf: PAnsiChar; buf_size: cint; nb_channels: cint; channel_layout: cuint64);
+ cdecl; external av__util;
+
+type
+// Type definition from libavutil/bprint.h
+// The actual record is padded to a certain number of bytes.
+// As of now (2013) this number is 1024.
+ PAVBPrint = ^TAVBPrint;
+ TAVBPrint = record
+ case integer of
+ 0 : (paddedRecord: array[1..1024] of byte);
+ 1 : (
+ str: PAnsiChar; //** string so far */
+ len: cuint; //** length so far */
+ size: cuint; //** allocated memory */
+ size_max: cuint; //** maximum allocated memory */
+ reserved_internal_buffer: Pchar
+ );
+ end;
+
+(**
+ * Append a description of a channel layout to a bprint buffer.
+ *)
+procedure av_bprint_channel_layout(bp: PAVBPrint; nb_channels: cint; channel_layout: cuint64);
+ cdecl; external av__util;
+
+(**
+ * Return the number of channels in the channel layout.
+ *)
+function av_get_channel_layout_nb_channels(channel_layout: cuint64): cint;
+ cdecl; external av__util;
+
+(**
+ * Return default channel layout for a given number of channels.
+ *)
+function av_get_default_channel_layout(nb_channels: cint): cint64;
+ cdecl; external av__util;
+
+(**
+ * Get the index of a channel in channel_layout.
+ *
+ * @param channel a channel layout describing exactly one channel which must be
+ * present in channel_layout.
+ *
+ * @return index of channel in channel_layout on success, a negative AVERROR
+ * on error.
+ *)
+function av_get_channel_layout_channel_index(channel_layout: cuint64;
+ channel: cuint64): cint;
+ cdecl; external av__util;
+
+(**
+ * Get the channel with the given index in channel_layout.
+ *)
+function av_channel_layout_extract_channel(channel_layout: cuint64; index: cint): cuint64;
+ cdecl; external av__util;
+
+(**
+ * Get the name of a given channel.
+ *
+ * @return channel name on success, NULL on error.
+ *)
+function av_get_channel_name(channel: cuint64): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Get the description of a given channel.
+ *
+ * @param channel a channel layout with a single channel
+ * @return channel description on success, NULL on error
+ *)
+function av_get_channel_description(channel: cuint64): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Get the value and name of a standard channel layout.
+ *
+ * @param[in] index index in an internal list, starting at 0
+ * @param[out] layout channel layout mask
+ * @param[out] name name of the layout
+ * @return 0 if the layout exists,
+ * <0 if index is beyond the limits
+ *)
+function av_get_standard_channel_layout(index: cuint; layout: Pcuint64;
+ name: {const} PPAnsiChar): cint;
+ cdecl; external av__util;
+
+{$IFDEF FF_API_AUDIO_CONVERT}
+
+(** libavcodec/audioconvert.h **)
+
+// type definition from libavcodec/audioconvert.c
+type
+ PAVAudioConvert = ^TAVAudioConvert;
+ TAVAudioConvert = record
+ in_channels, out_channels: cint;
+ fmt_pair: cint;
+ end;
+
+(**
+ * Create an audio sample format converter context
+ * @param out_fmt Output sample format
+ * @param out_channels Number of output channels
+ * @param in_fmt Input sample format
+ * @param in_channels Number of input channels
+ * @param[in] matrix Channel mixing matrix (of dimension in_channel*out_channels). Set to NULL to ignore.
+ * @param flags See AV_CPU_FLAG_xx
+ * @return NULL on error
+ *)
+function av_audio_convert_alloc(out_fmt: TAVSampleFormat; out_channels: cint;
+ in_fmt: TAVSampleFormat; in_channels: cint;
+ matrix: {const} Pcfloat; flags: cint): PAVAudioConvert;
+ cdecl; external av__codec;
+
+(**
+ * Free audio sample format converter context
+ *)
+procedure av_audio_convert_free(ctx: PAVAudioConvert);
+ cdecl; external av__codec;
+
+type
+ P6 = array [1..6] of pointer;
+ I6 = array [1..6] of cint;
+
+(**
+ * Convert between audio sample formats
+ * @param[in] out array of output buffers for each channel. set to NULL to ignore processing of the given channel.
+ * @param[in] out_stride distance between consecutive output samples (measured in bytes)
+ * @param[in] in array of input buffers for each channel
+ * @param[in] in_stride distance between consecutive input samples (measured in bytes)
+ * @param len length of audio frame size (measured in samples)
+ *)
+function av_audio_convert(ctx: PAVAudioConvert;
+ out[6]: {const} P6; out_stride[6]: {const} I6;
+ in[6]: {const} P6; in_stride[6]: {const} I6; len: cint): cint;
+ cdecl; external av__codec;
+
+{$IFEND}
diff --git a/src/lib/ffmpeg-4.0/libavutil/buffer.pas b/src/lib/ffmpeg-4.0/libavutil/buffer.pas
new file mode 100644
index 00000000..5d7a747b
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/buffer.pas
@@ -0,0 +1,310 @@
+(*
+ * AVOptions
+ * copyright (c) 2005 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/buffer.h
+ * avutil version 54.7.100
+ *
+ *)
+
+const
+(**
+ * Always treat the buffer as read-only, even when it has only one
+ * reference.
+ *)
+ AV_BUFFER_FLAG_READONLY = (1 << 0);
+
+type
+(**
+ * @defgroup lavu_buffer AVBuffer
+ * @ingroup lavu_data
+ *
+ * @
+ * AVBuffer is an API for reference-counted data buffers.
+ *
+ * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer
+ * represents the data buffer itself; it is opaque and not meant to be accessed
+ * by the caller directly, but only through AVBufferRef. However, the caller may
+ * e.g. compare two AVBuffer pointers to check whether two different references
+ * are describing the same data buffer. AVBufferRef represents a single
+ * reference to an AVBuffer and it is the object that may be manipulated by the
+ * caller directly.
+ *
+ * There are two functions provided for creating a new AVBuffer with a single
+ * reference -- av_buffer_alloc() to just allocate a new buffer, and
+ * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing
+ * reference, additional references may be created with av_buffer_ref().
+ * Use av_buffer_unref() to free a reference (this will automatically free the
+ * data once all the references are freed).
+ *
+ * The convention throughout this API and the rest of FFmpeg is such that the
+ * buffer is considered writable if there exists only one reference to it (and
+ * it has not been marked as read-only). The av_buffer_is_writable() function is
+ * provided to check whether this is true and av_buffer_make_writable() will
+ * automatically create a new writable buffer when necessary.
+ * Of course nothing prevents the calling code from violating this convention,
+ * however that is safe only when all the existing references are under its
+ * control.
+ *
+ * @note Referencing and unreferencing the buffers is thread-safe and thus
+ * may be done from multiple threads simultaneously without any need for
+ * additional locking.
+ *
+ * @note Two different references to the same buffer can point to different
+ * parts of the buffer (i.e. their AVBufferRef.data will not be equal).
+ *)
+
+(**
+ * A reference counted buffer type. It is opaque and is meant to be used through
+ * references (AVBufferRef).
+ *)
+ TAVBuffer = record
+ end;
+
+(**
+ * A reference to a data buffer.
+ *
+ * The size of this struct is not a part of the public ABI and it is not meant
+ * to be allocated directly.
+ *)
+ PPAVBufferRef = ^PAVBufferRef;
+ PAVBufferRef = ^TAVBufferRef;
+ TAVBufferRef = record
+ buffer: TAVBuffer;
+ (**
+ * The data buffer. It is considered writable if and only if
+ * this is the only reference to the buffer, in which case
+ * av_buffer_is_writable() returns 1.
+ *)
+ data: PByte;
+ (**
+ * Size of data in bytes.
+ *)
+ size: cint;
+ end;
+
+ //callbacks used in the functions av_buffer_create and av_buffer_pool_init respectively
+ TFree = procedure(opaque: pointer; data: pbyte);
+ TAlloc = function(size: cint): PAVBufferRef;
+ TAlloc2 = function(opaque: pointer; size: cint): PAVBufferRef;
+ TPoolFree = procedure(opaque: pointer);
+
+(**
+ * The buffer pool. This structure is opaque and not meant to be accessed
+ * directly. It is allocated with av_buffer_pool_init() and freed with
+ * av_buffer_pool_uninit().
+ *)
+ PPAVBufferPool = ^PAVBufferPool;
+ PAVBufferPool = ^TAVBufferPool;
+ TAVBufferPool = record
+ end;
+
+(**
+ * Allocate an AVBuffer of the given size using av_malloc().
+ *
+ * @return an AVBufferRef of given size or NULL when out of memory
+ *)
+function av_buffer_alloc(size: cint): PAVBufferRef;
+ cdecl; external av__util;
+
+(**
+ * Same as av_buffer_alloc(), except the returned buffer will be initialized
+ * to zero.
+ *)
+function av_buffer_allocz(size: cint): PAVBufferRef;
+ cdecl; external av__util;
+
+(**
+ * Create an AVBuffer from an existing array.
+ *
+ * If this function is successful, data is owned by the AVBuffer. The caller may
+ * only access data through the returned AVBufferRef and references derived from
+ * it.
+ * If this function fails, data is left untouched.
+ * @param data data array
+ * @param size size of data in bytes
+ * @param free a callback for freeing this buffer's data
+ * @param opaque parameter to be got for processing or passed to free
+ * @param flags a combination of AV_BUFFER_FLAG_*
+ *
+ * @return an AVBufferRef referring to data on success, NULL on failure.
+ *)
+
+function av_buffer_create(data: PByte; size: cint;
+ free: TFree;
+ opaque: pointer; flags: cint): PAVBufferRef;
+ cdecl; external av__util;
+
+(**
+ * Default free callback, which calls av_free() on the buffer data.
+ * This function is meant to be passed to av_buffer_create(), not called
+ * directly.
+ *)
+procedure av_buffer_default_free(opaque: pointer; data: pbyte);
+ cdecl; external av__util;
+
+(**
+ * Create a new reference to an AVBuffer.
+ *
+ * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on
+ * failure.
+ *)
+function av_buffer_ref(buf: PAVBufferRef): PAVBufferRef;
+ cdecl; external av__util;
+
+(**
+ * Free a given reference and automatically free the buffer if there are no more
+ * references to it.
+ *
+ * @param buf the reference to be freed. The pointer is set to NULL on return.
+ *)
+procedure av_buffer_unref(buf: PPAVBufferRef);
+ cdecl; external av__util;
+
+(**
+ * @return 1 if the caller may write to the data referred to by buf (which is
+ * true if and only if buf is the only reference to the underlying AVBuffer).
+ * Return 0 otherwise.
+ * A positive answer is valid until av_buffer_ref() is called on buf.
+ *)
+function av_buffer_is_writable(buf: {const} PAVBufferRef): cint;
+ cdecl; external av__util;
+
+(**
+ * @return the opaque parameter set by av_buffer_create.
+ *)
+procedure av_buffer_get_opaque(buf: {const} PAVBufferRef);
+ cdecl; external av__util;
+
+function av_buffer_get_ref_count(buf: {const} PAVBufferRef): cint;
+ cdecl; external av__util;
+
+(**
+ * Create a writable reference from a given buffer reference, avoiding data copy
+ * if possible.
+ *
+ * @param buf buffer reference to make writable. On success, buf is either left
+ * untouched, or it is unreferenced and a new writable AVBufferRef is
+ * written in its place. On failure, buf is left untouched.
+ * @return 0 on success, a negative AVERROR on failure.
+ *)
+function av_buffer_make_writable(buf: PPAVBufferRef): cint;
+ cdecl; external av__util;
+
+(**
+ * Reallocate a given buffer.
+ *
+ * @param buf a buffer reference to reallocate. On success, buf will be
+ * unreferenced and a new reference with the required size will be
+ * written in its place. On failure buf will be left untouched. *buf
+ * may be NULL, then a new buffer is allocated.
+ * @param size required new buffer size.
+ * @return 0 on success, a negative AVERROR on failure.
+ *
+ * @note the buffer is actually reallocated with av_realloc() only if it was
+ * initially allocated through av_buffer_realloc(NULL) and there is only one
+ * reference to it (i.e. the one passed to this function). In all other cases
+ * a new buffer is allocated and the data is copied.
+ *)
+function av_buffer_realloc(buf: PPAVBufferRef; size: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * @defgroup lavu_bufferpool AVBufferPool
+ * @ingroup lavu_data
+ *
+ * @
+ * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers.
+ *
+ * Frequently allocating and freeing large buffers may be slow. AVBufferPool is
+ * meant to solve this in cases when the caller needs a set of buffers of the
+ * same size (the most obvious use case being buffers for raw video or audio
+ * frames).
+ *
+ * At the beginning, the user must call av_buffer_pool_init() to create the
+ * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to
+ * get a reference to a new buffer, similar to av_buffer_alloc(). This new
+ * reference works in all aspects the same way as the one created by
+ * av_buffer_alloc(). However, when the last reference to this buffer is
+ * unreferenced, it is returned to the pool instead of being freed and will be
+ * reused for subsequent av_buffer_pool_get() calls.
+ *
+ * When the caller is done with the pool and no longer needs to allocate any new
+ * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable.
+ * Once all the buffers are released, it will automatically be freed.
+ *
+ * Allocating and releasing buffers with this API is thread-safe as long as
+ * either the default alloc callback is used, or the user-supplied one is
+ * thread-safe.
+ *)
+
+(**
+ * Allocate and initialize a buffer pool.
+ *
+ * @param size size of each buffer in this pool
+ * @param alloc a function that will be used to allocate new buffers when the
+ * pool is empty. May be NULL, then the default allocator will be used
+ * (av_buffer_alloc()).
+ * @return newly created buffer pool on success, NULL on error.
+ *)
+function av_buffer_pool_init(size: cint; alloc: TAlloc): PAVBufferPool;
+ cdecl; external av__util;
+
+(**
+ * Allocate and initialize a buffer pool with a more complex allocator.
+ *
+ * @param size size of each buffer in this pool
+ * @param opaque arbitrary user data used by the allocator
+ * @param alloc a function that will be used to allocate new buffers when the
+ * pool is empty.
+ * @param pool_free a function that will be called immediately before the pool
+ * is freed. I.e. after av_buffer_pool_uninit() is called
+ * by the caller and all the frames are returned to the pool
+ * and freed. It is intended to uninitialize the user opaque
+ * data.
+ * @return newly created buffer pool on success, NULL on error.
+ *)
+function av_buffer_pool_init2(size: cint; opaque: pointer;
+ alloc: TAlloc2;
+ pool_free: TPoolFree): PAVBufferPool;
+ cdecl; external av__util;
+
+(**
+ * Mark the pool as being available for freeing. It will actually be freed only
+ * once all the allocated buffers associated with the pool are released. Thus it
+ * is safe to call this function while some of the allocated buffers are still
+ * in use.
+ *
+ * @param pool pointer to the pool to be freed. It will be set to NULL.
+ *)
+procedure av_buffer_pool_uninit(pool: PPAVBufferPool);
+ cdecl; external av__util;
+
+(**
+ * Allocate a new AVBuffer, reusing an old buffer from the pool when available.
+ * This function may be called simultaneously from multiple threads.
+ *
+ * @return a reference to the new buffer on success, NULL on error.
+ *)
+function av_buffer_pool_get(pool: PAVBufferPool): PAVBufferRef;
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/cpu.pas b/src/lib/ffmpeg-4.0/libavutil/cpu.pas
new file mode 100644
index 00000000..32d565ec
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/cpu.pas
@@ -0,0 +1,135 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/cpu.h
+ * avutil version 54.7.100
+ *
+ *)
+
+const
+
+ AV_CPU_FLAG_FORCE = $80000000; (* force usage of selected flags (OR) *)
+
+ (* lower 16 bits - CPU features *)
+ AV_CPU_FLAG_MMX = $0001; ///< standard MMX
+ AV_CPU_FLAG_MMXEXT = $0002; ///< SSE integer functions or AMD MMX ext
+ AV_CPU_FLAG_MMX2 = $0002; ///< SSE integer functions or AMD MMX ext
+ AV_CPU_FLAG_3DNOW = $0004; ///< AMD 3DNOW
+ AV_CPU_FLAG_SSE = $0008; ///< SSE functions
+ AV_CPU_FLAG_SSE2 = $0010; ///< PIV SSE2 functions
+ AV_CPU_FLAG_SSE2SLOW = $40000000; ///< SSE2 supported, but usually not faster
+ ///< than regular MMX/SSE (e.g. Core1)
+ AV_CPU_FLAG_3DNOWEXT = $0020; ///< AMD 3DNowExt
+ AV_CPU_FLAG_SSE3 = $0040; ///< Prescott SSE3 functions
+ AV_CPU_FLAG_SSE3SLOW = $20000000; ///< SSE3 supported, but usually not faster
+ ///< than regular MMX/SSE (e.g. Core1)
+ AV_CPU_FLAG_SSSE3 = $0080; ///< Conroe SSSE3 functions
+ AV_CPU_FLAG_ATOM = $10000000; ///< Atom processor, some SSSE3 instructions are slower
+ AV_CPU_FLAG_SSE4 = $0100; ///< Penryn SSE4.1 functions
+ AV_CPU_FLAG_SSE42 = $0200; ///< Nehalem SSE4.2 functions
+ AV_CPU_FLAG_AESNI = $80000; ///< Advanced Encryption Standard functions
+ AV_CPU_FLAG_AVX = $4000; ///< AVX functions: requires OS support even if YMM registers aren't used
+ AV_CPU_FLAG_AVXSLOW = $8000000; ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer)
+ AV_CPU_FLAG_XOP = $0400; ///< Bulldozer XOP functions
+ AV_CPU_FLAG_FMA4 = $0800; ///< Bulldozer FMA4 functions
+
+ AV_CPU_FLAG_CMOV = $1000; ///< supports cmov instruction
+
+ AV_CPU_FLAG_AVX2 = $8000; ///< AVX2 functions: requires OS support even if YMM registers aren't used
+ AV_CPU_FLAG_FMA3 = $10000; ///< Haswell FMA3 functions
+ AV_CPU_FLAG_BMI1 = $20000; ///< Bit Manipulation Instruction Set 1
+ AV_CPU_FLAG_BMI2 = $40000; ///< Bit Manipulation Instruction Set 2
+ AV_CPU_FLAG_AVX512 = $100000; ///< AVX-512 functions: requires OS support even if YMM/ZMM registers aren't used
+
+ AV_CPU_FLAG_ALTIVEC = $0001; ///< standard
+ AV_CPU_FLAG_VSX = $0002; ///< ISA 2.06
+ AV_CPU_FLAG_POWER8 = $0004; ///< ISA 2.07
+
+ AV_CPU_FLAG_ARMV5TE = (1 << 0);
+ AV_CPU_FLAG_ARMV6 = (1 << 1);
+ AV_CPU_FLAG_ARMV6T2 = (1 << 2);
+ AV_CPU_FLAG_VFP = (1 << 3);
+ AV_CPU_FLAG_VFPV3 = (1 << 4);
+ AV_CPU_FLAG_NEON = (1 << 5);
+ AV_CPU_FLAG_ARMV8 = (1 << 6);
+ AV_CPU_FLAG_VFP_VM = (1 << 7); ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations
+ AV_CPU_FLAG_SETEND = (1 <<16);
+
+(**
+ * Return the flags which specify extensions supported by the CPU.
+ * The returned value is affected by av_force_cpu_flags() if that was used
+ * before. So av_get_cpu_flags() can easily be used in an application to
+ * detect the enabled cpu flags.
+ *)
+function av_get_cpu_flags(): cint;
+ cdecl; external av__util;
+
+(**
+ * Disables cpu detection and forces the specified flags.
+ * -1 is a special case that disables forcing of specific flags.
+ *)
+procedure av_force_cpu_flags(flags: cint);
+ cdecl; external av__util;
+
+(**
+ * Set a mask on flags returned by av_get_cpu_flags().
+ * This function is mainly useful for testing.
+ * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible
+ *)
+procedure av_set_cpu_flags_mask(mask: cint);
+ cdecl; external av__util; deprecated;
+
+(**
+ * Parse CPU flags from a string.
+ *
+ * The returned flags contain the specified flags as well as related unspecified flags.
+ *
+ * This function exists only for compatibility with libav.
+ * Please use av_parse_cpu_caps() when possible.
+ * @return a combination of AV_CPU_* flags, negative on error.
+ *)
+function av_parse_cpu_flags(s: {const} PAnsiChar): cint;
+ cdecl; external av__util; deprecated;
+
+(**
+ * Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
+ *
+ * @return negative on error.
+ *)
+function av_parse_cpu_caps(flags: Pcuint; s: {const} PAnsiChar): cint;
+ cdecl; external av__util;
+
+(**
+ * @return the number of logical CPU cores present.
+ *)
+function av_cpu_count(): cint;
+ cdecl; external av__util;
+
+(**
+ * Get the maximum data alignment that may be required by FFmpeg.
+ *
+ * Note that this is affected by the build configuration and the CPU flags mask,
+ * so e.g. if the CPU supports AVX, but libavutil has been built with
+ * --disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through
+ * av_set_cpu_flags_mask(), then this function will behave as if AVX is not
+ * present.
+ *)
+function av_cpu_max_align(): size_t;
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/dict.pas b/src/lib/ffmpeg-4.0/libavutil/dict.pas
new file mode 100644
index 00000000..ef54610c
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/dict.pas
@@ -0,0 +1,168 @@
+(*
+ * AVDictionary
+ * copyright (c) 2011 Karl-Michael Schindler
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ *
+ * Conversion of libavutil/dict.h
+ * avutil version 54.7.100
+ *
+ *)
+
+const
+ AV_DICT_MATCH_CASE = 1;
+ AV_DICT_IGNORE_SUFFIX = 2;
+ AV_DICT_DONT_STRDUP_KEY = 4; (**< Take ownership of a key that's been
+ allocated with av_malloc() or another memory allocation function. *)
+ AV_DICT_DONT_STRDUP_VAL = 8; (**< Take ownership of a value that's been
+ allocated with av_malloc() or another memory allocation function. *)
+ AV_DICT_DONT_OVERWRITE = 16; (**< Don't overwrite existing entries. *)
+ AV_DICT_APPEND = 32; (**< If the entry already exists, append to it. Note that no
+ delimiter is added, the strings are simply concatenated. *)
+ AV_DICT_MULTIKEY = 64; (**< Allow to store several equal keys in the dictionary *)
+
+type
+ PAVDictionaryEntry = ^TAVDictionaryEntry;
+ TAVDictionaryEntry = record
+ key: PAnsiChar;
+ value: PAnsiChar;
+ end;
+
+(* with the "help" of libavutil/internal.h: *)
+
+ PPAVDictionary = ^PAVDictionary;
+ PAVDictionary = ^TAVDictionary;
+ TAVDictionary = record
+ count: cint;
+ elems: PAVDictionaryEntry;
+ end;
+
+(**
+ * Get a dictionary entry with matching key.
+ *
+ * The returned entry key or value must not be changed, or it will
+ * cause undefined behavior.
+ *
+ * To iterate through all the dictionary entries, you can set the matching key
+ * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag.
+ *
+ * @param key matching key
+ * @param prev Set to the previous matching element to find the next.
+ * If set to NULL the first matching element is returned.
+ * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved
+ * @return found entry or NULL in case no matching entry was found in the dictionary
+ *)
+function av_dict_get({const} m: PAVDictionary; {const} key: PAnsiChar; {const} prev: PAVDictionaryEntry; flags: cint): PAVDictionaryEntry;
+ cdecl; external av__util;
+
+(**
+ * Get number of entries in dictionary.
+ *
+ * @param m dictionary
+ * @return number of entries in dictionary
+ *)
+function av_dict_count({const} m: PAVDictionary): cint;
+ cdecl; external av__util;
+
+(**
+ * Set the given entry in *pm, overwriting an existing entry.
+ *
+ * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set,
+ * these arguments will be freed on error.
+ *
+ * Warning: Adding a new entry to a dictionary invalidates all existing entries
+ * previously returned with av_dict_get.
+ *
+ * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL
+ * a dictionary struct is allocated and put in *pm.
+ * @param key entry key to add to *pm (will either be av_strduped or added as a new key depending on flags)
+ * @param value entry value to add to *pm (will be av_strduped or added as a new key depending on flags).
+ * Passing a NULL value will cause an existing entry to be deleted.
+ * @return >= 0 on success otherwise an error code <0
+ *)
+function av_dict_set(var pm: PAVDictionary; {const} key: PAnsiChar; {const} value: PAnsiChar; flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Convenience wrapper for av_dict_set that converts the value to a string
+ * and stores it.
+ *
+ * Note: If AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error.
+ *)
+function av_dict_set_int(var pm: PAVDictionary; {const} key: PAnsiChar;
+ value: cint64; flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Parse the key/value pairs list and add the parsed entries to a dictionary.
+ *
+ * In case of failure, all the successfully set entries are stored in
+ * *pm. You may need to manually free the created dictionary.
+ *
+ * @param key_val_sep a 0-terminated list of characters used to separate
+ * key from value
+ * @param pairs_sep a 0-terminated list of characters used to separate
+ * two pairs from each other
+ * @param flags flags to use when adding to dictionary.
+ * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL
+ * are ignored since the key/value tokens will always
+ * be duplicated.
+ * @return 0 on success, negative AVERROR code on failure
+ *)
+function av_dict_parse_string(var pm: PAVDictionary; {const} str: PAnsiChar;
+ {const} key_val_sep: PAnsiChar; {const} pairs_sep: PAnsiChar;
+ flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Copy entries from one AVDictionary struct into another.
+ * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL,
+ * this function will allocate a struct for you and put it in *dst
+ * @param src pointer to source AVDictionary struct
+ * @param flags flags to use when setting entries in *dst
+ * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag
+ * @return 0 on success, negative AVERROR code on failure. If dst was allocated
+ * by this function, callers should free the associated memory.
+ *)
+function av_dict_copy(var dst: PAVDictionary; {const} src: PAVDictionary; flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Get dictionary entries as a string.
+ *
+ * Create a string containing dictionary's entries.
+ * Such string may be passed back to av_dict_parse_string().
+ * @note String is escaped with backslashes ('\').
+ *
+ * @param[in] m dictionary
+ * @param[out] buffer Pointer to buffer that will be allocated with string containg entries.
+ * Buffer must be freed by the caller when is no longer needed.
+ * @param[in] key_val_sep character used to separate key from value
+ * @param[in] pairs_sep character used to separate two pairs from each other
+ * @return >= 0 on success, negative on error
+ * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same.
+ *)
+function av_dict_get_string({const} m: PAVDictionary; buffer: PPAnsiChar;
+ {const} key_val_sep: AnsiChar; {const} pairs_sep: AnsiChar): cint;
+ cdecl; external av__util;
+
+(**
+ * Free all the memory allocated for an AVDictionary struct
+ * and all keys and values.
+ *)
+procedure av_dict_free(var m: PAVDictionary);
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/error.pas b/src/lib/ffmpeg-4.0/libavutil/error.pas
new file mode 100644
index 00000000..f972aa7d
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/error.pas
@@ -0,0 +1,169 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/error.h
+ * avutil version 54.7.100
+ *
+ *)
+
+(**
+ * @file
+ * error code definitions
+ *)
+
+(**
+ * @addtogroup lavu_error
+ *
+ * @
+ *)
+
+{* error handling *}
+
+const
+{$IFDEF UNIX}
+ ENOENT = ESysENOENT;
+ EIO = ESysEIO;
+ ENOMEM = ESysENOMEM;
+ EINVAL = ESysEINVAL;
+ EDOM = ESysEDOM;
+ ENOSYS = ESysENOSYS;
+ EILSEQ = ESysEILSEQ;
+ EPIPE = ESysEPIPE;
+ EAGAIN = ESysEAGAIN;
+{$ELSE}
+ ENOENT = 2;
+ EIO = 5;
+ EAGAIN = 11;
+ ENOMEM = 12;
+ EINVAL = 22;
+ EPIPE = 32; // just an assumption. needs to be checked.
+ EDOM = 33;
+ {$IFDEF MSWINDOWS}
+ // Note: we assume that ffmpeg was compiled with MinGW.
+ // This must be changed if DLLs were compiled with cygwin.
+ ENOSYS = 40; // MSVC/MINGW: 40, CYGWIN: 88, LINUX/FPC: 38
+ EILSEQ = 42; // MSVC/MINGW: 42, CYGWIN: 138, LINUX/FPC: 84
+ {$ENDIF}
+{$ENDIF}
+
+(**
+ * We need the sign of the error, because some platforms have
+ * E* and errno already negated. The previous version failed
+ * with Delphi, because it needed EINVAL defined.
+ * Warning: This code is platform dependent and assumes constants
+ * to be 32 bit.
+ * This version does the following steps:
+ * 1) shr 30: shifts the sign bit to bit position 2
+ * 2) and $00000002: sets all other bits to zero
+ * positive EINVAL gives 0, negative gives 2
+ * 3) - 1: positive EINVAL gives -1, negative 1
+ *)
+const
+ AVERROR_SIGN = (EINVAL shr 30) and $00000002 - 1;
+
+(*
+#if EDOM > 0
+#define AVERROR(e) (-(e)) {**< Returns a negative error code from a POSIX error code, to return from library functions. *}
+#define AVUNERROR(e) (-(e)) {**< Returns a POSIX error code from a library function error return value. *}
+#else
+{* Some platforms have E* and errno already negated. *}
+#define AVERROR(e) (e)
+#define AVUNERROR(e) (e)
+#endif
+*)
+function AVERROR(e: integer): integer;
+
+const
+
+ // Note: function calls as constant-initializers are invalid
+ AVERROR_BSF_NOT_FOUND = -(ord($F8) or (ord('B') shl 8) or (ord('S') shl 16) or (ord('F') shl 24)); ///< Bitstream filter not found
+ AVERROR_BUG = -(ord('B') or (ord('U') shl 8) or (ord('G') shl 16) or (ord('!') shl 24)); ///< Internal bug, also see AVERROR_BUG2
+ AVERROR_BUFFER_TOO_SMALL = -(ord('B') or (ord('U') shl 8) or (ord('F') shl 16) or (ord('S') shl 24)); ///< Buffer too small
+ AVERROR_DECODER_NOT_FOUND = -(ord($F8) or (ord('D') shl 8) or (ord('E') shl 16) or (ord('C') shl 24)); ///< Decoder not found
+ AVERROR_DEMUXER_NOT_FOUND = -(ord($F8) or (ord('D') shl 8) or (ord('E') shl 16) or (ord('M') shl 24)); ///< Demuxer not found
+ AVERROR_ENCODER_NOT_FOUND = -(ord($F8) or (ord('E') shl 8) or (ord('N') shl 16) or (ord('C') shl 24)); ///< Encoder not found
+ AVERROR_EOF = -(ord('E') or (ord('O') shl 8) or (ord('F') shl 16) or (ord(' ') shl 24)); ///< End of file
+ AVERROR_EXIT = -(ord('E') or (ord('X') shl 8) or (ord('I') shl 16) or (ord('T') shl 24)); ///< Immediate exit was requested; the called function should not be restarted
+ AVERROR_EXTERNAL = -(ord('E') or (ord('X') shl 8) or (ord('T') shl 16) or (ord(' ') shl 24)); ///< Generic error in an external library
+ AVERROR_FILTER_NOT_FOUND = -(ord($F8) or (ord('F') shl 8) or (ord('I') shl 16) or (ord('L') shl 24)); ///< Filter not found
+ AVERROR_INVALIDDATA = -(ord('I') or (ord('N') shl 8) or (ord('D') shl 16) or (ord('A') shl 24)); ///< Invalid data found when processing input
+ AVERROR_MUXER_NOT_FOUND = -(ord($F8) or (ord('M') shl 8) or (ord('U') shl 16) or (ord('X') shl 24)); ///< Muxer not found
+ AVERROR_OPTION_NOT_FOUND = -(ord($F8) or (ord('O') shl 8) or (ord('P') shl 16) or (ord('T') shl 24)); ///< Option not found
+ AVERROR_PATCHWELCOME = -(ord('P') or (ord('A') shl 8) or (ord('W') shl 16) or (ord('E') shl 24)); ///< Not yet implemented in FFmpeg, patches welcome
+ AVERROR_PROTOCOL_NOT_FOUND = -(ord($F8) or (ord('P') shl 8) or (ord('R') shl 16) or (ord('O') shl 24)); ///< Protocol not found
+ AVERROR_STREAM_NOT_FOUND = -(ord($F8) or (ord('S') shl 8) or (ord('T') shl 16) or (ord('R') shl 24)); ///< Stream not found
+
+(**
+ * This is semantically identical to AVERROR_BUG
+ * it has been introduced in Libav after our AVERROR_BUG and with a modified value.
+ *)
+ AVERROR_BUG2 = -(ord('B') or (ord('U') shl 8) or (ord('G') shl 16) or (ord(' ') shl 24));
+ AVERROR_UNKNOWN = -(ord('U') or (ord('N') shl 8) or (ord('K') shl 16) or (ord('N') shl 24)); ///< Unknown error, typically from an external library
+ AVERROR_EXPERIMENTAL = -($2bb2afa8); ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
+ AVERROR_INPUT_CHANGED = -($636e6701); ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED)
+ AVERROR_OUTPUT_CHANGED = -($636e6702); ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED)
+(* HTTP & RTSP errors *)
+ AVERROR_HTTP_BAD_REQUEST = -(ord($F8) or (ord('4') shl 8) or (ord('0') shl 16) or (ord('0') shl 24));
+ AVERROR_HTTP_UNAUTHORIZED = -(ord($F8) or (ord('4') shl 8) or (ord('0') shl 16) or (ord('1') shl 24));
+ AVERROR_HTTP_FORBIDDEN = -(ord($F8) or (ord('4') shl 8) or (ord('0') shl 16) or (ord('3') shl 24));
+ AVERROR_HTTP_NOT_FOUND = -(ord($F8) or (ord('4') shl 8) or (ord('0') shl 16) or (ord('4') shl 24));
+ AVERROR_HTTP_OTHER_4XX = -(ord($F8) or (ord('4') shl 8) or (ord('X') shl 16) or (ord('X') shl 24));
+ AVERROR_HTTP_SERVER_ERROR = -(ord($F8) or (ord('5') shl 8) or (ord('X') shl 16) or (ord('X') shl 24));
+
+ AV_ERROR_MAX_STRING_SIZE = 64;
+
+(*
+ * Put a description of the AVERROR code errnum in errbuf.
+ * In case of failure the global variable errno is set to indicate the
+ * error. Even in case of failure av_strerror() will print a generic
+ * error message indicating the errnum provided to errbuf.
+ *
+ * @param errnum error code to describe
+ * @param errbuf buffer to which description is written
+ * @param errbuf_size the size in bytes of errbuf
+ * @return 0 on success, a negative value if a description for errnum
+ * cannot be found
+ *)
+function av_strerror(errnum: cint; errbuf: PAnsiChar; errbuf_size: size_t): cint;
+ cdecl; external av__util;
+
+(**
+ * Fill the provided buffer with a string containing an error string
+ * corresponding to the AVERROR code errnum.
+ *
+ * @param errbuf a buffer
+ * @param errbuf_size size in bytes of errbuf
+ * @param errnum error code to describe
+ * @return the buffer in input, filled with the error description
+ * @see av_strerror()
+ *)
+function av_make_error_string(errbuf: Pchar; errbuf_size: size_t; errnum: cint): Pchar; {$IFDEF HasInline}inline;{$ENDIF}
+// Note: defined in avutil.pas
+
+(**
+ * Convenience macro, the return value should be used only directly in
+ * function arguments but never stand-alone.
+ *)
+function av_err2str(errnum: cint): pchar; {$IFDEF HasInline}inline;{$ENDIF}
+// Note: defined in avutil.pas
+
+(**
+ * @}
+ *)
diff --git a/src/lib/ffmpeg-4.0/libavutil/frame.pas b/src/lib/ffmpeg-4.0/libavutil/frame.pas
new file mode 100644
index 00000000..f10e2ff2
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/frame.pas
@@ -0,0 +1,928 @@
+(*
+ * AVOptions
+ * copyright (c) 2005 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/frame.h
+ * avutil version 54.7.100
+ *
+*)
+
+const
+ AV_NUM_DATA_POINTERS = 8;
+
+ (** from the definitions of TAVFrame *)
+
+ (**
+ * The frame data may be corrupted, e.g. due to decoding errors.
+ *)
+ AV_FRAME_FLAG_CORRUPT = (1 << 0);
+ (**
+ * A flag to mark the frames which need to be decoded, but shouldn't be output.
+ *)
+ AV_FRAME_FLAG_DISCARD = (1 << 2);
+
+ FF_DECODE_ERROR_INVALID_BITSTREAM = 1;
+ FF_DECODE_ERROR_MISSING_REFERENCE = 2;
+
+
+type
+(* is already in pixfmt.pas
+ TAVColorSpace = (
+ AVCOL_SPC_RGB = 0,
+ AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
+ AVCOL_SPC_UNSPECIFIED = 2,
+ AVCOL_SPC_FCC = 4,
+ AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
+ AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
+ AVCOL_SPC_SMPTE240M_ = 7,
+ AVCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
+ AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system
+ AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system
+ AVCOL_SPC_NB ///< Not part of ABI
+ );
+
+ TAVColorRange = (
+ AVCOL_RANGE_UNSPECIFIED = 0,
+ AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
+ AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
+ AVCOL_RANGE_NB ///< Not part of ABI
+ );
+*)
+
+(* Note: AVPanScan is defined in avcodec.h but is here to avoid reference problems - Brian-ch 28/09/2014
+ *
+ * Pan Scan area.
+ * This specifies the area which should be displayed.
+ * Note there may be multiple such areas for one frame.
+ *)
+ PAVPanScan = ^TAVPanScan;
+ TAVPanScan = record {24}
+ (*** id.
+ * - encoding: set by user.
+ * - decoding: set by libavcodec. *)
+ id: cint;
+
+ (*** width and height in 1/16 pel
+ * - encoding: set by user.
+ * - decoding: set by libavcodec. *)
+ width: cint;
+ height: cint;
+
+ (*** position of the top left corner in 1/16 pel for up to 3 fields/frames.
+ * - encoding: set by user.
+ * - decoding: set by libavcodec. *)
+ position: array [0..2] of array [0..1] of cint16;
+ end; {TAVPanScan}
+
+ (**
+ * @defgroup lavu_frame AVFrame
+ * @ingroup lavu_data
+ *
+ * @
+ * AVFrame is an abstraction for reference-counted raw multimedia data.
+ *)
+ TAVFrameSideDataType = (
+ (**
+ * The data is the AVPanScan struct defined in libavcodec.
+ *)
+ AV_FRAME_DATA_PANSCAN,
+ (**
+ * ATSC A53 Part 4 Closed Captions.
+ * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data.
+ * The number of bytes of CC data is AVFrameSideData.size.
+ *)
+ AV_FRAME_DATA_A53_CC,
+ (**
+ * Stereoscopic 3d metadata.
+ * The data is the AVStereo3D struct defined in libavutil/stereo3d.h.
+ *)
+ AV_FRAME_DATA_STEREO3D,
+ (**
+ * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
+ *)
+ AV_FRAME_DATA_MATRIXENCODING,
+ (**
+ * Metadata relevant to a downmix procedure.
+ * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h.
+ *)
+ AV_FRAME_DATA_DOWNMIX_INFO,
+ (**
+ * ReplayGain information in the form of the AVReplayGain struct.
+ *)
+ AV_FRAME_DATA_REPLAYGAIN,
+ (**
+ * This side data contains a 3x3 transformation matrix describing an affine
+ * transformation that needs to be applied to the frame for correct
+ * presentation.
+ *
+ * See libavutil/display.h for a detailed description of the data.
+ *)
+ AV_FRAME_DATA_DISPLAYMATRIX,
+ (**
+ * Active Format Description data consisting of a single byte as specified
+ * in ETSI TS 101 154 using AVActiveFormatDescription enum.
+ *)
+ AV_FRAME_DATA_AFD,
+ (**
+ * Motion vectors exported by some codecs (on demand through the export_mvs
+ * flag set in the libavcodec AVCodecContext flags2 option).
+ * The data is the AVMotionVector struct defined in
+ * libavutil/motion_vector.h.
+ *)
+ AV_FRAME_DATA_MOTION_VECTORS,
+ (**
+ * Recommmends skipping the specified number of samples. This is exported
+ * only if the "skip_manual" AVOption is set in libavcodec.
+ * This has the same format as AV_PKT_DATA_SKIP_SAMPLES.
+ * @code
+ * u32le number of samples to skip from start of this packet
+ * u32le number of samples to skip from end of this packet
+ * u8 reason for start skip
+ * u8 reason for end skip (0=padding silence, 1=convergence)
+ * @endcode
+ *)
+ AV_FRAME_DATA_SKIP_SAMPLES,
+ (**
+ * This side data must be associated with an audio frame and corresponds to
+ * enum AVAudioServiceType defined in avcodec.h.
+ *)
+ AV_FRAME_DATA_AUDIO_SERVICE_TYPE,
+ (**
+ * Mastering display metadata associated with a video frame. The payload is
+ * an AVMasteringDisplayMetadata type and contains information about the
+ * mastering display color volume.
+ *)
+ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA,
+ (**
+ * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer.
+ * This is set on the first frame of a GOP that has a temporal reference of 0.
+ *)
+ AV_FRAME_DATA_GOP_TIMECODE,
+ (**
+ * The data represents the AVSphericalMapping structure defined in
+ * libavutil/spherical.h.
+ *)
+ AV_FRAME_DATA_SPHERICAL,
+ (**
+ * Content light level (based on CTA-861.3). This payload contains data in
+ * the form of the AVContentLightMetadata struct.
+ *)
+ AV_FRAME_DATA_CONTENT_LIGHT_LEVEL,
+ (**
+ * The data contains an ICC profile as an opaque octet buffer following the
+ * format described by ISO 15076-1 with an optional name defined in the
+ * metadata key entry "name".
+ *)
+ AV_FRAME_DATA_ICC_PROFILE,
+{$IFDEF FF_API_FRAME_QP}
+ (**
+ * Implementation-specific description of the format of AV_FRAME_QP_TABLE_DATA.
+ * The contents of this side data are undocumented and internal; use
+ * av_frame_set_qp_table() and av_frame_get_qp_table() to access this in a
+ * meaningful way instead.
+ */)
+ AV_FRAME_DATA_QP_TABLE_PROPERTIES,
+
+ (**
+ * Raw QP table data. Its format is described by
+ * AV_FRAME_DATA_QP_TABLE_PROPERTIES. Use av_frame_set_qp_table() and
+ * av_frame_get_qp_table() to access this instead.
+ *)
+ AV_FRAME_DATA_QP_TABLE_DATA
+{$ENDIF}
+ );
+
+ TAVActiveFormatDescription = (
+ AV_AFD_SAME = 8,
+ AV_AFD_4_3 = 9,
+ AV_AFD_16_9 = 10,
+ AV_AFD_14_9 = 11,
+ AV_AFD_4_3_SP_14_9 = 13,
+ AV_AFD_16_9_SP_14_9 = 14,
+ AV_AFD_SP_4_3 = 15
+ ); {TAVActiveFormatDescription}
+
+ PAVFrameSideData = ^TAVFrameSideData;
+(**
+ * Structure to hold side data for an AVFrame.
+ *
+ * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added
+ * to the end with a minor bump.
+ *)
+ TAVFrameSideData = record
+ type_: TAVFrameSideDataType;
+ data: PByte;
+ size: cint;
+ metadata: TAVDictionary;
+ buf: PAVBufferRef;
+ end; {TAVFrameSideData}
+
+(**
+ * This structure describes decoded (raw) audio or video data.
+ *
+ * AVFrame must be allocated using av_frame_alloc(). Note that this only
+ * allocates the AVFrame itself, the buffers for the data must be managed
+ * through other means (see below).
+ * AVFrame must be freed with av_frame_free().
+ *
+ * AVFrame is typically allocated once and then reused multiple times to hold
+ * different data (e.g. a single AVFrame to hold frames received from a
+ * decoder). In such a case, av_frame_unref() will free any references held by
+ * the frame and reset it to its original clean state before it
+ * is reused again.
+ *
+ * The data described by an AVFrame is usually reference counted through the
+ * AVBuffer API. The underlying buffer references are stored in AVFrame.buf /
+ * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at
+ * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case,
+ * every single data plane must be contained in one of the buffers in
+ * AVFrame.buf or AVFrame.extended_buf.
+ * There may be a single buffer for all the data, or one separate buffer for
+ * each plane, or anything in between.
+ *
+ * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
+ * to the end with a minor bump.
+ *
+ * Fields can be accessed through AVOptions, the name string used, matches the
+ * C structure field name for fields accessible through AVOptions. The AVClass
+ * for AVFrame can be obtained from avcodec_get_frame_class()
+ *)
+ PPAVFrame = ^PAVFrame;
+ PAVFrame = ^TAVFrame;
+ TAVFrame = record
+ (**
+ * pointer to the picture/channel planes.
+ * This might be different from the first allocated byte
+ *
+ * Some decoders access areas outside 0,0 - width,height, please
+ * see avcodec_align_dimensions2(). Some filters and swscale can read
+ * up to 16 bytes beyond the planes, if these filters are to be used,
+ * then 16 extra bytes must be allocated.
+ *
+ * NOTE: Except for hwaccel formats, pointers not needed by the format
+ * MUST be set to NULL.
+ *)
+ data: array [0..AV_NUM_DATA_POINTERS - 1] of pbyte;
+
+ (**
+ * For video, size in bytes of each picture line.
+ * For audio, size in bytes of each plane.
+ *
+ * For audio, only linesize[0] may be set. For planar audio, each channel
+ * plane must be the same size.
+ *
+ * For video the linesizes should be multiples of the CPUs alignment
+ * preference, this is 16 or 32 for modern desktop CPUs.
+ * Some code requires such alignment other code can be slower without
+ * correct alignment, for yet other it makes no difference.
+ *
+ * @note The linesize may be larger than the size of usable data -- there
+ * may be extra padding present for performance reasons.
+ *)
+ linesize: array [0..AV_NUM_DATA_POINTERS - 1] of cint;
+
+ (**
+ * pointers to the data planes/channels.
+ *
+ * For video, this should simply point to data[].
+ *
+ * For planar audio, each channel has a separate data pointer, and
+ * linesize[0] contains the size of each channel buffer.
+ * For packed audio, there is just one data pointer, and linesize[0]
+ * contains the total size of the buffer for all channels.
+ *
+ * Note: Both data and extended_data will always be set by get_buffer(),
+ * but for planar audio with more channels that can fit in data,
+ * extended_data must be used in order to access all channels.
+ *)
+ extended_data: ^pbyte;
+
+ (**
+ * @name Video dimensions
+ * Video frames only. The coded dimensions (in pixels) of the video frame,
+ * i.e. the size of the rectangle that contains some well-defined values.
+ *
+ * @note The part of the frame intended for display/presentation is further
+ * restricted by the @ref cropping "Cropping rectangle".
+ *)
+ width, height: cint;
+ (**
+ * number of audio samples (per channel) described by this frame
+ *)
+ nb_samples: cint;
+
+ (**
+ * format of the frame, -1 if unknown or unset
+ * Values correspond to enum AVPixelFormat for video frames,
+ * enum AVSampleFormat for audio)
+ *)
+ format: cint;
+
+ (**
+ * 1 -> keyframe, 0-> not
+ *)
+ key_frame: cint;
+
+ (**
+ * Picture type of the frame
+ *)
+ pict_type: TAVPictureType;
+
+ (**
+ * sample aspect ratio for the video frame, 0/1 if unknown/unspecified
+ *)
+ sample_aspect_ratio: TAVRational;
+
+ (**
+ * presentation timestamp in time_base units (time when frame should be shown to user)
+ *)
+ pts: cint64;
+
+{$IFDEF FF_API_PKT_PTS}
+ (**
+ * PTS copied from the AVPacket that was decoded to produce this frame.
+ *)
+ pkt_pts: cint64; {deprecated}
+{$ENDIF}
+
+ (**
+ * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used)
+ * This is also the Presentation time of this AVFrame calculated from
+ * only AVPacket.dts values without pts values.
+ *)
+ pkt_dts: cint64;
+
+ (**
+ * picture number in bitstream order
+ *)
+ coded_picture_number: cint;
+
+ (**
+ * picture number in display order
+ *)
+ display_picture_number: cint;
+
+ (**
+ * quality (between 1 (good) and FF_LAMBDA_MAX (bad))
+ *)
+ quality: cint;
+
+ (**
+ * for some private data of the user
+ *)
+ opaque: pointer;
+
+{$IFDEF FF_API_ERROR_FRAME}
+ (**
+ * @deprecated unused
+ *)
+ error: array [0..AV_NUM_DATA_POINTERS - 1] of cuint64; {deprecated}
+{$ENDIF}
+
+ (**
+ * When decoding, this signals how much the picture must be delayed.
+ * extra_delay = repeat_pict / (2*fps)
+ *)
+ repeat_pict: cint;
+
+ (**
+ * The content of the picture is interlaced.
+ *)
+ interlaced_frame: cint;
+
+ (**
+ * If the content is interlaced, is top field displayed first.
+ *)
+ top_field_first: cint;
+
+ (**
+ * Tell user application that palette has changed from previous frame.
+ *)
+ palette_has_changed: cint;
+
+ (**
+ * reordered opaque 64 bits (generally an integer or a double precision float
+ * PTS but can be anything).
+ * The user sets AVCodecContext.reordered_opaque to represent the input at
+ * that time,
+ * the decoder reorders values as needed and sets AVFrame.reordered_opaque
+ * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
+ * @deprecated in favor of pkt_pts
+ *)
+ reordered_opaque: cint64;
+
+ (**
+ * Sample rate of the audio data.
+ *)
+ sample_rate: cint;
+
+ (**
+ * Channel layout of the audio data.
+ *)
+ channel_layout: cuint64;
+
+ (**
+ * AVBuffer references backing the data for this frame. If all elements of
+ * this array are NULL, then this frame is not reference counted. This array
+ * must be filled contiguously -- if buf[i] is non-NULL then buf[j] must
+ * also be non-NULL for all j < i.
+ *
+ * There may be at most one AVBuffer per data plane, so for video this array
+ * always contains all the references. For planar audio with more than
+ * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in
+ * this array. Then the extra AVBufferRef pointers are stored in the
+ * extended_buf array.
+ *)
+ buf: array [0..AV_NUM_DATA_POINTERS - 1] of PAVBufferRef;
+
+ (**
+ * For planar audio which requires more than AV_NUM_DATA_POINTERS
+ * AVBufferRef pointers, this array will hold all the references which
+ * cannot fit into AVFrame.buf.
+ *
+ * Note that this is different from AVFrame.extended_data, which always
+ * contains all the pointers. This array only contains the extra pointers,
+ * which cannot fit into AVFrame.buf.
+ *
+ * This array is always allocated using av_malloc() by whoever constructs
+ * the frame. It is freed in av_frame_unref().
+ *)
+ extended_buf: PPAVBufferRef;
+
+ (**
+ * Number of elements in extended_buf.
+ *)
+ nb_extended_buf: cint;
+
+ side_data: ^PAVFrameSideData;
+ nb_side_data: cint;
+
+ (**
+ * @defgroup lavu_frame_flags AV_FRAME_FLAGS
+ * @ingroup lavu_frame
+ * Flags describing additional frame properties.
+ *
+ * @
+ *)
+
+ (**
+ * Frame flags, a combination of @ref lavu_frame_flags
+ *)
+ flags: cint;
+
+ (**
+ * MPEG vs JPEG YUV range.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ color_range: TAVColorRange;
+
+ color_primaries: TAVColorPrimaries;
+
+ color_trc: TAVColorTransferCharacteristic;
+
+ (**
+ * YUV colorspace type.
+ * - encoding: Set by user
+ * - decoding: Set by libavcodec
+ *)
+ colorspace: TAVColorSpace;
+
+ chroma_location: TAVChromaLocation;
+
+ (**
+ * frame timestamp estimated using various heuristics, in stream time base
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ best_effort_timestamp: cint64;
+
+ (**
+ * reordered pos from the last AVPacket that has been input into the decoder
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_pos: cint64;
+
+ (**
+ * duration of the corresponding packet, expressed in
+ * AVStream->time_base units, 0 if unknown.
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ pkt_duration: cint64;
+
+ (**
+ * metadata.
+ * - encoding: Set by user.
+ * - decoding: Set by libavcodec.
+ *)
+ metadata: PAVDictionary;
+
+ (**
+ * decode error flags of the frame, set to a combination of
+ * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
+ * were errors during the decoding.
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ decode_error_flags: cint;
+
+ (**
+ * number of audio channels, only used for audio.
+ * - encoding: unused
+ * - decoding: Read by user.
+ *)
+ channels: cint;
+
+ (**
+ * size of the corresponding packet containing the compressed
+ * frame.
+ * It is set to a negative value if unknown.
+ * - encoding: unused
+ * - decoding: set by libavcodec, read by user.
+ *)
+ pkt_size: cint;
+
+{$IFDEF FF_API_FRAME_QP}
+ (**
+ * QP table
+ *)
+ qscale_table: PByte; {deprecated}
+ (**
+ * QP store stride
+ *)
+ qstride: cint; {deprecated}
+
+ qscale_type: cint; {deprecated}
+
+ qp_table_buf: PAVBufferRef; {deprecated}
+{$ENDIF}
+ (**
+ * For hwaccel-format frames, this should be a reference to the
+ * AVHWFramesContext describing the frame.
+ *)
+ hw_frames_ctx: PAVBufferRef;
+
+ (**
+ * AVBufferRef for free use by the API user. FFmpeg will never check the
+ * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
+ * the frame is unreferenced. av_frame_copy_props() calls create a new
+ * reference with av_buffer_ref() for the target frame's opaque_ref field.
+ *
+ * This is unrelated to the opaque field, although it serves a similar
+ * purpose.
+ *)
+ opaque_ref: PAVBufferRef;
+
+ (**
+ * @anchor cropping
+ * @name Cropping
+ * Video frames only. The number of pixels to discard from the the
+ * top/bottom/left/right border of the frame to obtain the sub-rectangle of
+ * the frame intended for presentation.
+ *)
+ crop_top: size_t;
+ crop_bottom: size_t;
+ crop_left: size_t;
+ crop_right: size_t;
+ (**
+ * AVBufferRef for internal use by a single libav* library.
+ * Must not be used to transfer data between libraries.
+ * Has to be NULL when ownership of the frame leaves the respective library.
+ *
+ * Code outside the FFmpeg libs should never check or change the contents of the buffer ref.
+ *
+ * FFmpeg calls av_buffer_unref() on it when the frame is unreferenced.
+ * av_frame_copy_props() calls create a new reference with av_buffer_ref()
+ * for the target frame's private_ref field.
+ *)
+ private_ref: PAVBufferRef;
+ end; {TAVFrame}
+
+{$IFDEF FF_API_FRAME_GET_SET}
+(**
+ * Accessors for some AVFrame fields. These used to be provided for ABI
+ * compatibility, and do not need to be used anymore.
+ *)
+function av_frame_get_best_effort_timestamp(frame: {const} PAVFrame): cint64;
+ cdecl; external av__codec; overload; deprecated;
+procedure av_frame_set_best_effort_timestamp(frame: PAVFrame; val: cint64);
+ cdecl; external av__codec; overload; deprecated;
+function av_frame_get_pkt_duration (frame: {const} PAVFrame): cint64;
+ cdecl; external av__codec; overload; deprecated;
+procedure av_frame_get_pkt_duration (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec; overload; deprecated;
+function av_frame_get_pkt_pos (frame: {const} PAVFrame): cint64;
+ cdecl; external av__codec; overload; deprecated;
+procedure av_frame_get_pkt_pos (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec; overload; deprecated;
+function av_frame_get_channel_layout (frame: {const} PAVFrame): cint64;
+ cdecl; external av__codec; overload; deprecated;
+procedure av_frame_get_channel_layout (frame: PAVFrame; val: cint64);
+ cdecl; external av__codec; overload; deprecated;
+function av_frame_get_channels (frame: {const} PAVFrame): cint;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_channels (frame: PAVFrame; val: cint);
+ cdecl; external av__codec; deprecated;
+function av_frame_get_sample_rate (frame: {const} PAVFrame): cint;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_sample_rate (frame: PAVFrame; val: cint);
+ cdecl; external av__codec; deprecated;
+function av_frame_get_metadata (frame: {const} PAVFrame): PAVDictionary;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_metadata (frame: PAVFrame; val: PAVDictionary);
+ cdecl; external av__codec; deprecated;
+function av_frame_get_decode_error_flags (frame: {const} PAVFrame): cint;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_decode_error_flags (frame: PAVFrame; val: cint);
+ cdecl; external av__codec; deprecated;
+function av_frame_get_pkt_size (frame: {const} PAVFrame): cint;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_pkt_size (frame: PAVFrame; val: cint);
+ cdecl; external av__codec; deprecated;
+function avpriv_frame_get_metadatap(frame: PAVFrame): PPAVDictionary;
+ cdecl; external av__codec; deprecated;
+{$IFDEF FF_API_FRAME_QP}
+function av_frame_get_qp_table(f: PAVFrame; stride: pcint; type_: pcint): PByte;
+ cdecl; external av__codec; deprecated;
+function av_frame_set_qp_table(f: PAVFrame; buf: PAVBufferRef; stride: cint; type_: cint): cint;
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+function av_frame_get_colorspace(frame: {const} PAVFrame): TAVColorSpace;
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_colorspace(frame: PAVFrame; val: TAVColorSpace);
+ cdecl; external av__codec; deprecated;
+procedure av_frame_set_color_range(frame: PAVFrame; val: TAVColorSpace);
+ cdecl; external av__codec; deprecated;
+{$ENDIF}
+
+(**
+ * Get the name of a colorspace.
+ * @return a static string identifying the colorspace; can be NULL.
+ *)
+function av_get_colorspace_name(val: TAVColorSpace): PAnsiChar;
+ cdecl; external av__codec;
+
+(**
+ * Allocate an AVFrame and set its fields to default values. The resulting
+ * struct must be freed using av_frame_free().
+ *
+ * @return An AVFrame filled with default values or NULL on failure.
+ *
+ * @note this only allocates the AVFrame itself, not the data buffers. Those
+ * must be allocated through other means, e.g. with av_frame_get_buffer() or
+ * manually.
+ *)
+function av_frame_alloc(): PAVFrame;
+ cdecl; external av__util;
+
+(**
+ * Free the frame and any dynamically allocated objects in it,
+ * e.g. extended_data. If the frame is reference counted, it will be
+ * unreferenced first.
+ *
+ * @param frame frame to be freed. The pointer will be set to NULL.
+ *)
+procedure av_frame_free(frame: PPAVFrame);
+ cdecl; external av__codec;
+
+(**
+ * Set up a new reference to the data described by the source frame.
+ *
+ * Copy frame properties from src to dst and create a new reference for each
+ * AVBufferRef from src.
+ *
+ * If src is not reference counted, new buffers are allocated and the data is
+ * copied.
+ *
+ * @warning: dst MUST have been either unreferenced with av_frame_unref(dst),
+ * or newly allocated with av_frame_alloc() before calling this
+ * function, or undefined behavior will occur.
+ *
+ * @return 0 on success, a negative AVERROR on error
+ *)
+function av_frame_ref(dst: PAVFrame; src: {const} PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Create a new frame that references the same data as src.
+ *
+ * This is a shortcut for av_frame_alloc()+av_frame_ref().
+ *
+ * @return newly created AVFrame on success, NULL on error.
+ *)
+function av_frame_clone(src: {const} PAVFrame): PAVFrame;
+ cdecl; external av__codec;
+
+(**
+ * Unreference all the buffers referenced by frame and reset the frame fields.
+ *)
+procedure av_frame_unref(frame: PAVFrame);
+ cdecl; external av__util;
+
+(**
+ * Move everything contained in src to dst and reset src.
+ *
+ * @warning: dst is not unreferenced, but directly overwritten without reading
+ * or deallocating its contents. Call av_frame_unref(dst) manually
+ * before calling this function to ensure that no memory is leaked.
+ *)
+procedure av_frame_move_ref(dst, src: PAVFrame);
+ cdecl; external av__codec;
+
+(**
+ * Allocate new buffer(s) for audio or video data.
+ *
+ * The following fields must be set on frame before calling this function:
+ * - format (pixel format for video, sample format for audio)
+ * - width and height for video
+ * - nb_samples and channel_layout for audio
+ *
+ * This function will fill AVFrame.data and AVFrame.buf arrays and, if
+ * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf.
+ * For planar formats, one buffer will be allocated for each plane.
+ *
+ * @warning: if frame already has been allocated, calling this function will
+ * leak memory. In addition, undefined behavior can occur in certain
+ * cases.
+ *
+ * @param frame frame in which to store the new buffers.
+ * @param align Required buffer size alignment. If equal to 0, alignment will be
+ * chosen automatically for the current CPU. It is highly
+ * recommended to pass 0 here unless you know what you are doing.
+ *
+ * @return 0 on success, a negative AVERROR on error.
+ *)
+function av_frame_get_buffer(frame: PAVFrame; align: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * Check if the frame data is writable.
+ *
+ * @return A positive value if the frame data is writable (which is true if and
+ * only if each of the underlying buffers has only one reference, namely the one
+ * stored in this frame). Return 0 otherwise.
+ *
+ * If 1 is returned the answer is valid until av_buffer_ref() is called on any
+ * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly).
+ *
+ * @see av_frame_make_writable(), av_buffer_is_writable()
+ *)
+function av_frame_is_writable(frame: PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Ensure that the frame data is writable, avoiding data copy if possible.
+ *
+ * Do nothing if the frame is writable, allocate new buffers and copy the data
+ * if it is not.
+ *
+ * @return 0 on success, a negative AVERROR on error.
+ *
+ * @see av_frame_is_writable(), av_buffer_is_writable(),
+ * av_buffer_make_writable()
+ *)
+function av_frame_make_writable(frame: PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Copy the frame data from src to dst.
+ *
+ * This function does not allocate anything, dst must be already initialized and
+ * allocated with the same parameters as src.
+ *
+ * This function only copies the frame data (i.e. the contents of the data /
+ * extended data arrays), not any other properties.
+ *
+ * @return >= 0 on success, a negative AVERROR on error.
+ *)
+function av_frame_copy(dst: PAVFrame; src: {const} PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Copy only "metadata" fields from src to dst.
+ *
+ * Metadata for the purpose of this function are those fields that do not affect
+ * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample
+ * aspect ratio (for video), but not width/height or channel layout.
+ * Side data is also copied.
+ *)
+function av_frame_copy_props(dst: PAVFrame; src: {const} PAVFrame): cint;
+ cdecl; external av__codec;
+
+(**
+ * Get the buffer reference a given data plane is stored in.
+ *
+ * @param plane index of the data plane of interest in frame->extended_data.
+ *
+ * @return the buffer reference that contains the plane or NULL if the input
+ * frame is not valid.
+ *)
+function av_frame_get_plane_buffer(frame: PAVFrame; plane: cint): PAVBufferRef;
+ cdecl; external av__codec;
+
+(**
+ * Add a new side data to a frame.
+ *
+ * @param frame a frame to which the side data should be added
+ * @param type type of the added side data
+ * @param size size of the side data
+ *
+ * @return newly added side data on success, NULL on error
+ *)
+function av_frame_new_side_data(frame: PAVFrame;
+ type_: TAVFrameSideDataType;
+ size: cint): PAVFrameSideData;
+ cdecl; external av__codec;
+
+(**
+ * Add a new side data to a frame from an existing AVBufferRef
+ *
+ * @param frame a frame to which the side data should be added
+ * @param type the type of the added side data
+ * @param buf an AVBufferRef to add as side data. The ownership of
+ * the reference is transferred to the frame.
+ *
+ * @return newly added side data on success, NULL on error. On failure
+ * the frame is unchanged and the AVBufferRef remains owned by
+ * the caller.
+ *)
+function av_frame_new_side_data_from_buf(frame: PAVFrame;
+ type_: TAVFrameSideDataType;
+ buf: PAVBufferRef): PAVFrameSideData;
+ cdecl; external av__codec;
+
+(**
+ * @return a pointer to the side data of a given type on success, NULL if there
+ * is no side data with such type in this frame.
+ *)
+function av_frame_get_side_data(frame: {const} PAVFrame; type_: TAVFrameSideDataType): PAVFrameSideData;
+ cdecl; external av__codec;
+
+(**
+ * If side data of the supplied type exists in the frame, free it and remove it
+ * from the frame.
+ *)
+procedure av_frame_remove_side_data(frame: PAVFrame; type_: TAVFrameSideDataType);
+ cdecl; external av__codec;
+
+
+(**
+ * Flags for frame cropping.
+ *)
+const
+ (**
+ * Apply the maximum possible cropping, even if it requires setting the
+ * AVFrame.data[] entries to unaligned pointers. Passing unaligned data
+ * to FFmpeg API is generally not allowed, and causes undefined behavior
+ * (such as crashes). You can pass unaligned data only to FFmpeg APIs that
+ * are explicitly documented to accept it. Use this flag only if you
+ * absolutely know what you are doing.
+ *)
+ AV_FRAME_CROP_UNALIGNED = 1 << 0;
+
+(**
+ * Crop the given video AVFrame according to its crop_left/crop_top/crop_right/
+ * crop_bottom fields. If cropping is successful, the function will adjust the
+ * data pointers and the width/height fields, and set the crop fields to 0.
+ *
+ * In all cases, the cropping boundaries will be rounded to the inherent
+ * alignment of the pixel format. In some cases, such as for opaque hwaccel
+ * formats, the left/top cropping is ignored. The crop fields are set to 0 even
+ * if the cropping was rounded or ignored.
+ *
+ * @param frame the frame which should be cropped
+ * @param flags Some combination of AV_FRAME_CROP_* flags, or 0.
+ *
+ * @return >= 0 on success, a negative AVERROR on error. If the cropping fields
+ * were invalid, AVERROR(ERANGE) is returned, and nothing is changed.
+ *)
+function av_frame_apply_cropping(frame: PAVFrame; flags: cint): cint;
+ cdecl; external av__codec;
+
+(**
+ * @return a string identifying the side data type
+ *)
+function av_frame_side_data_name(type_: TAVFrameSideDataType): PAnsiChar;
+ cdecl; external av__codec;
diff --git a/src/lib/ffmpeg-4.0/libavutil/log.pas b/src/lib/ffmpeg-4.0/libavutil/log.pas
new file mode 100644
index 00000000..f8621644
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/log.pas
@@ -0,0 +1,530 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/log.h
+ * avutil version 54.7.100
+ *
+ *)
+
+(**
+ * @file
+ * log
+ *)
+
+type
+ (* from opt.h *)
+ TAVOptionType = (
+ AV_OPT_TYPE_FLAGS,
+ AV_OPT_TYPE_INT,
+ AV_OPT_TYPE_INT64,
+ AV_OPT_TYPE_DOUBLE,
+ AV_OPT_TYPE_FLOAT,
+ AV_OPT_TYPE_STRING,
+ AV_OPT_TYPE_RATIONAL,
+ AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length
+ AV_OPT_TYPE_DICT,
+ AV_OPT_TYPE_UINT64,
+ AV_OPT_TYPE_CONST,
+ AV_OPT_TYPE_BOOL,
+ AV_OPT_TYPE_CHANNEL_LAYOUT,
+ AV_OPT_TYPE_COLOR,
+ AV_OPT_TYPE_DURATION,
+ AV_OPT_TYPE_PIXEL_FMT,
+ AV_OPT_TYPE_SAMPLE_FMT,
+ AV_OPT_TYPE_IMAGE_SIZE, ///< offset must point to two consecutive integers
+ AV_OPT_TYPE_VIDEO_RATE ///< offset must point to AVRational
+ );
+
+const
+ AV_OPT_FLAG_ENCODING_PARAM = 1; ///< a generic parameter which can be set by the user for muxing or encoding
+ AV_OPT_FLAG_DECODING_PARAM = 2; ///< a generic parameter which can be set by the user for demuxing or decoding
+ AV_OPT_FLAG_AUDIO_PARAM = 8;
+ AV_OPT_FLAG_VIDEO_PARAM = 16;
+ AV_OPT_FLAG_SUBTITLE_PARAM = 32;
+ (**
+ * The option is intended for exporting values to the caller.
+ *)
+ AV_OPT_FLAG_EXPORT = 64;
+ (**
+ * The option may not be set through the AVOptions API, only read.
+ * This flag only makes sense when AV_OPT_FLAG_EXPORT is also set.
+ *)
+ AV_OPT_FLAG_READONLY = 128;
+ AV_OPT_FLAG_BSF_PARAM = 1 shl 8; ///< a generic parameter which can be set by the user for bit stream filtering
+ AV_OPT_FLAG_FILTERING_PARAM = 1 shl 16; ///< a generic parameter which can be set by the user for filtering
+
+type
+ (**
+ * AVOption
+ *)
+ PAVOption = ^TAVOption;
+ TAVOption = record
+ name: {const} PAnsiChar;
+
+ (**
+ * short English help text
+ * @todo What about other languages?
+ *)
+ help: {const} PAnsiChar;
+
+ (**
+ * The offset relative to the context structure where the option
+ * value is stored. It should be 0 for named constants.
+ *)
+ offset: cint;
+ type_: TAVOptionType;
+
+ (**
+ * the default value for scalar options
+ *)
+ default_val: record
+ case cint of
+ 0: (i64: cint64);
+ 1: (dbl: cdouble);
+ 2: (str: PAnsiChar);
+ (* TODO those are unused now *)
+ 3: (q: TAVRational);
+ end;
+ min: cdouble; ///< minimum valid value for the option
+ max: cdouble; ///< maximum valid value for the option
+
+ flags: cint;
+//FIXME think about enc-audio, ... style flags
+
+ (**
+ * The logical unit to which the option belongs. Non-constant
+ * options and corresponding named constants share the same
+ * unit. May be NULL.
+ *)
+ unit_: {const} PAnsiChar;
+ end;
+
+type
+ PAVClassCategory = ^TAVClassCategory;
+ TAVClassCategory = (
+ AV_CLASS_CATEGORY_NA = 0,
+ AV_CLASS_CATEGORY_INPUT,
+ AV_CLASS_CATEGORY_OUTPUT,
+ AV_CLASS_CATEGORY_MUXER,
+ AV_CLASS_CATEGORY_DEMUXER,
+ AV_CLASS_CATEGORY_ENCODER,
+ AV_CLASS_CATEGORY_DECODER,
+ AV_CLASS_CATEGORY_FILTER,
+ AV_CLASS_CATEGORY_BITSTREAM_FILTER,
+ AV_CLASS_CATEGORY_SWSCALER,
+ AV_CLASS_CATEGORY_SWRESAMPLER,
+ AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40,
+ AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
+ AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
+ AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
+ AV_CLASS_CATEGORY_DEVICE_OUTPUT,
+ AV_CLASS_CATEGORY_DEVICE_INPUT,
+ AV_CLASS_CATEGORY_NB ///< not part of ABI/API
+ );
+
+(*
+#define AV_IS_INPUT_DEVICE(category) \
+ (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \
+ ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \
+ ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT))
+
+#define AV_IS_OUTPUT_DEVICE(category) \
+ (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \
+ ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \
+ ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT))
+*)
+
+// struct AVOptionRanges;
+
+ (**
+ * A single allowed range of values, or a single allowed value.
+ *)
+ PAVOptionRange = ^TAVOptionRange;
+ PPAVOptionRange = ^PAVOptionRange;
+ TAVOptionRange = record
+ str: {const} PAnsiChar;
+ (**
+ * Value range.
+ * For string ranges this represents the min/max length.
+ * For dimensions this represents the min/max pixel count or width/height in multi-component case.
+ *)
+ value_min, value_max: cdouble;
+ (**
+ * Value's component range.
+ * For string this represents the unicode range for chars, 0-127 limits to ASCII.
+ *)
+ component_min, component_max: cdouble;
+ (**
+ * Range flag.
+ * If set to 1 the struct encodes a range, if set to 0 a single value.
+ *)
+ is_range: cint;
+ end;
+
+ (**
+ * List of AVOptionRange structs.
+ *)
+ PAVOptionRanges = ^TAVOptionRanges;
+ PPAVOptionRanges = ^PAVOptionRanges;
+ TAVOptionRanges = record
+ (**
+ * Array of option ranges.
+ *
+ * Most of option types use just one component.
+ * Following describes multi-component option types:
+ *
+ * AV_OPT_TYPE_IMAGE_SIZE:
+ * component index 0: range of pixel count (width * height).
+ * component index 1: range of width.
+ * component index 2: range of height.
+ *
+ * @note To obtain multi-component version of this structure, user must
+ * provide AV_OPT_MULTI_COMPONENT_RANGE to av_opt_query_ranges or
+ * av_opt_query_ranges_default function.
+ *
+ * Multi-component range can be read as in following example:
+ *
+ * @code
+ * int range_index, component_index;
+ * AVOptionRanges *ranges;
+ * AVOptionRange *range[3]; //may require more than 3 in the future.
+ * av_opt_query_ranges(&ranges, obj, key, AV_OPT_MULTI_COMPONENT_RANGE);
+ * for (range_index = 0; range_index < ranges->nb_ranges; range_index++) {
+ * for (component_index = 0; component_index < ranges->nb_components; component_index++)
+ * range[component_index] = ranges->range[ranges->nb_ranges * component_index + range_index];
+ * //do something with range here.
+ * }
+ * av_opt_freep_ranges(&ranges);
+ * @endcode
+ *)
+ range: PPAVOptionRange;
+ (**
+ * Number of ranges per component.
+ *)
+ nb_ranges: cint;
+ (**
+ * Number of componentes.
+ *)
+ nb_components: cint;
+ end;
+
+(**
+ * Describe the class of an AVClass context structure. That is an
+ * arbitrary struct of which the first field is a pointer to an
+ * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
+ *)
+ PAVClass = ^TAVClass;
+ TAVClass = record
+ (**
+ * The name of the class; usually it is the same name as the
+ * context structure type to which the AVClass is associated.
+ *)
+ class_name: PAnsiChar;
+
+ (**
+ * A pointer to a function which returns the name of a context
+ * instance ctx associated with the class.
+ *)
+ item_name: function(ctx: pointer): PAnsiChar; cdecl;
+
+ (**
+ * a pointer to the first option specified in the class if any or NULL
+ *
+ * @see av_set_default_options()
+ *)
+ option: PAVOption;
+
+ (**
+ * LIBAVUTIL_VERSION with which this structure was created.
+ * This is used to allow fields to be added without requiring major
+ * version bumps everywhere.
+ *)
+ version: cint;
+
+ (**
+ * Offset in the structure where log_level_offset is stored.
+ * 0 means there is no such variable
+ *)
+ log_level_offset_offset: cint;
+
+ (**
+ * Offset in the structure where a pointer to the parent context for
+ * logging is stored. For example a decoder could pass its AVCodecContext
+ * to eval as such a parent context, which an av_log() implementation
+ * could then leverage to display the parent context.
+ * The offset can be NULL.
+ *)
+ parent_log_context_offset: cint;
+
+ (**
+ * Return next AVOptions-enabled child or NULL
+ *)
+ child_next: function (obj: pointer; prev: pointer): pointer; cdecl;
+
+ (**
+ * Return an AVClass corresponding to the next potential
+ * AVOptions-enabled child.
+ *
+ * The difference between child_next and this is that
+ * child_next iterates over _already existing_ objects, while
+ * child_class_next iterates over _all possible_ children.
+ *)
+ child_class_next: function (prev: {const} PAVClass): {const} PAVClass; cdecl;
+
+ (**
+ * Category used for visualization (like color)
+ * This is only set if the category is equal for all objects using this class.
+ * available since version (51 << 16 | 56 << 8 | 100)
+ *)
+ category: TAVClassCategory;
+
+ (**
+ * Callback to return the category.
+ * available since version (51 << 16 | 59 << 8 | 100)
+ *)
+ get_category: function (ctx: pointer): PAVClassCategory; cdecl;
+
+ (**
+ * Callback to return the supported/allowed ranges.
+ * available since version (52.12)
+ *)
+ query_ranges: function (P: PPAVOptionRanges; obj: pointer; key: {const} PAnsiChar; flags: cint): cint; cdecl;
+end;
+
+const
+(**
+ * Print no output.
+ *)
+ AV_LOG_QUIET = -8;
+
+(**
+ * Something went really wrong and we will crash now.
+ *)
+ AV_LOG_PANIC = 0;
+
+(**
+ * Something went wrong and recovery is not possible.
+ * For example, no header was found for a format which depends
+ * on headers or an illegal combination of parameters is used.
+ *)
+ AV_LOG_FATAL = 8;
+
+(**
+ * Something went wrong and cannot losslessly be recovered.
+ * However, not all future data is affected.
+ *)
+ AV_LOG_ERROR = 16;
+
+(**
+ * Something somehow does not look correct. This may or may not
+ * lead to problems. An example would be the use of '-vstrict -2'.
+ *)
+ AV_LOG_WARNING = 24;
+
+(**
+ * Standard information.
+ *)
+ AV_LOG_INFO = 32;
+
+(**
+ * Detailed information.
+ *)
+ AV_LOG_VERBOSE = 40;
+
+(**
+ * Stuff which is only useful for libav* developers.
+ *)
+ AV_LOG_DEBUG = 48;
+
+(**
+ * Extremely verbose debugging, useful for libav* development.
+ *)
+ AV_LOG_TRACE = 56;
+
+ AV_LOG_MAX_OFFSET = (AV_LOG_DEBUG - AV_LOG_QUIET);
+
+(**
+ * Sets additional colors for extended debugging sessions.
+ * @code
+ av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n");
+ @endcode
+ * Requires 256color terminal support. Uses outside debugging is not
+ * recommended.
+ *)
+{** to be translated if needed
+ AV_LOG_C(x) (x << 8)
+**}
+
+(**
+ * Send the specified message to the log if the level is less than or equal
+ * to the current av_log_level. By default, all logging messages are sent to
+ * stderr. This behavior can be altered by setting a different logging callback
+ * function.
+ * @see av_log_set_callback
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct or NULL if general log.
+ * @param level The importance level of the message expressed using a @ref
+ * lavu_log_constants "Logging Constant".
+ * @param fmt The format string (printf-compatible) that specifies how
+ * subsequent arguments are converted to output.
+ *)
+{** to be translated if needed
+void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
+**}
+
+type
+ va_list = pointer;
+
+(**
+ * Send the specified message to the log if the level is less than or equal
+ * to the current av_log_level. By default, all logging messages are sent to
+ * stderr. This behavior can be altered by setting a different logging callback
+ * function.
+ * @see av_log_set_callback
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message expressed using a @ref
+ * lavu_log_constants "Logging Constant".
+ * @param fmt The format string (printf-compatible) that specifies how
+ * subsequent arguments are converted to output.
+ * @param vl The arguments referenced by the format string.
+ *)
+procedure av_vlog(avcl: pointer; level: cint; fmt: {const} PAnsiChar; vl: va_list);
+ cdecl; external av__util;
+
+(**
+ * Get the current log level
+ *
+ * @see lavu_log_constants
+ *
+ * @return Current log level
+ *)
+function av_log_get_level(): cint;
+ cdecl; external av__util;
+
+(**
+ * Set the log level
+ *
+ * @see lavu_log_constants
+ *
+ * @param level Logging level
+ *)
+procedure av_log_set_level(level: cint);
+ cdecl; external av__util;
+
+(**
+ * Set the logging callback
+ *
+ * @note The callback must be thread safe, even if the application does not use
+ * threads itself as some codecs are multithreaded.
+ *
+ * @see av_log_default_callback
+ *
+ * @param callback A logging function with a compatible signature.
+ *)
+{** to be translated if needed
+void av_log_set_callback(void (*callback)(void*, int, const char*, va_list));
+**}
+
+(**
+ * Default logging callback
+ *
+ * It prints the message to stderr, optionally colorizing it.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ * pointer to an AVClass struct.
+ * @param level The importance level of the message expressed using a @ref
+ * lavu_log_constants "Logging Constant".
+ * @param fmt The format string (printf-compatible) that specifies how
+ * subsequent arguments are converted to output.
+ * @param vl The arguments referenced by the format string.
+ *)
+{** to be translated if needed
+void av_log_default_callback(void* avcl, int level, const char *fmt, va_list vl);
+**}
+
+(**
+ * Return the context name
+ *
+ * @param ctx The AVClass context
+ *
+ * @return The AVClass class_name
+ *)
+function av_default_item_name(ctx: pointer): PAnsiChar;
+ cdecl; external av__util;
+function av_default_get_category(ptr: pointer): TAVClassCategory;
+ cdecl; external av__util;
+
+(**
+ * Format a line of log the same way as the default callback.
+ * @param line buffer to receive the formatted line
+ * @param line_size size of the buffer
+ * @param print_prefix used to store whether the prefix must be printed;
+ * must point to a persistent integer initially set to 1
+ *)
+procedure av_log_format_line(ptr: pointer; level: cint; fmt: {const} PAnsiChar; vl: va_list;
+ line: PAnsiChar; line_size: cint; print_prefix: Pcint);
+ cdecl; external av__util;
+
+(**
+ * Format a line of log the same way as the default callback.
+ * @param line buffer to receive the formatted line;
+ * may be NULL if line_size is 0
+ * @param line_size size of the buffer; at most line_size-1 characters will
+ * be written to the buffer, plus one null terminator
+ * @param print_prefix used to store whether the prefix must be printed;
+ * must point to a persistent integer initially set to 1
+ * @return Returns a negative value if an error occurred, otherwise returns
+ * the number of characters that would have been written for a
+ * sufficiently large buffer, not including the terminating null
+ * character. If the return value is not less than line_size, it means
+ * that the log message was truncated to fit the buffer.
+ *)
+function av_log_format_line2(ptr: pointer; level: cint; fmt: {const} PAnsiChar; vl: va_list;
+ line: PAnsiChar; line_size: cint; print_prefix: Pcint): cint;
+ cdecl; external av__util;
+
+
+const
+(**
+ * Skip repeated messages, this requires the user app to use av_log() instead of
+ * (f)printf as the 2 would otherwise interfere and lead to
+ * "Last message repeated x times" messages below (f)printf messages with some
+ * bad luck.
+ * Also to receive the last, "last repeated" line if any, the user app must
+ * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end
+ *)
+ AV_LOG_SKIP_REPEATED = 1;
+
+(**
+ * Include the log severity in messages originating from codecs.
+ *
+ * Results in messages such as:
+ * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts
+ *)
+ AV_LOG_PRINT_LEVEL = 2;
+
+procedure av_log_set_flags(arg: cint);
+ cdecl; external av__util;
+
+function av_log_get_flags: cint;
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/mathematics.pas b/src/lib/ffmpeg-4.0/libavutil/mathematics.pas
new file mode 100644
index 00000000..f6df1368
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/mathematics.pas
@@ -0,0 +1,222 @@
+(*
+ * copyright (c) 2005-2012 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/mathematics.h
+ * avutil version 54.7.100
+ *
+ *)
+
+(**
+ * @file
+ * @addtogroup lavu_math
+ * Mathematical utilities for working with timestamp and time base.
+ *)
+
+const
+ M_E = 2.7182818284590452354; // e
+ M_LN2 = 0.69314718055994530942; // log_e 2
+ M_LN10 = 2.30258509299404568402; // log_e 10
+ M_LOG2_10 = 3.32192809488736234787; // log_2 10
+ M_PHI = 1.61803398874989484820; // phi / golden ratio
+ M_PI = 3.14159265358979323846; // pi
+ M_PI_2 = 1.57079632679489661923; // pi/2
+ M_SQRT1_2 = 0.70710678118654752440; // 1/sqrt(2)
+ M_SQRT2 = 1.41421356237309504880; // sqrt(2)
+ NAN = $7fc00000;
+ INFINITY = $7f800000;
+
+(**
+ * @addtogroup lavu_math
+ * @
+ *)
+
+type
+ (**
+ * Rounding methods.
+ *)
+ TAVRounding = (
+ AV_ROUND_ZERO = 0, ///< Round toward zero.
+ AV_ROUND_INF = 1, ///< Round away from zero.
+ AV_ROUND_DOWN = 2, ///< Round toward -infinity.
+ AV_ROUND_UP = 3, ///< Round toward +infinity.
+ AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
+ (**
+ * Flag telling rescaling functions to pass `INT64_MIN`/`MAX` through
+ * unchanged, avoiding special cases for #AV_NOPTS_VALUE.
+ *
+ * Unlike other values of the enumeration AVRounding, this value is a
+ * bitmask that must be used in conjunction with another value of the
+ * enumeration through a bitwise OR, in order to set behavior for normal
+ * cases.
+ *
+ * @code{.c}
+ * av_rescale_rnd(3, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX);
+ * // Rescaling 3:
+ * // Calculating 3 * 1 / 2
+ * // 3 / 2 is rounded up to 2
+ * // => 2
+ *
+ * av_rescale_rnd(AV_NOPTS_VALUE, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX);
+ * // Rescaling AV_NOPTS_VALUE:
+ * // AV_NOPTS_VALUE == INT64_MIN
+ * // AV_NOPTS_VALUE is passed through
+ * // => AV_NOPTS_VALUE
+ * @endcode
+ *)
+ AV_ROUND_PASS_MINMAX = 8192
+ );
+
+(**
+ * Compute the greatest common divisor of two integer operands.
+ *
+ * @param a,b Operands
+ * @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0;
+ * if a == 0 and b == 0, returns 0.
+ *)
+function av_gcd(a, b: cint64): cint64;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Rescale a 64-bit integer with rounding to nearest.
+ *
+ * The operation is mathematically equivalent to `a * b / c`, but writing that
+ * directly can overflow.
+ *
+ * This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF.
+ *
+ * @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd()
+ *)
+function av_rescale (a, b, c: cint64): cint64;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Rescale a 64-bit integer with specified rounding.
+ *
+ * The operation is mathematically equivalent to `a * b / c`, but writing that
+ * directly can overflow, and does not support different rounding methods.
+ *
+ * @see av_rescale(), av_rescale_q(), av_rescale_q_rnd()
+ *)
+function av_rescale_rnd (a, b, c: cint64; rnd: TAVRounding): cint64;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Rescale a 64-bit integer by 2 rational numbers.
+ *
+ * The operation is mathematically equivalent to `a * bq / cq`.
+ *
+ * This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF.
+ *
+ * @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd()
+ *)
+function av_rescale_q (a: cint64; bq, cq: TAVRational): cint64;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Rescale a 64-bit integer by 2 rational numbers with specified rounding.
+ *
+ * The operation is mathematically equivalent to `a * bq / cq`.
+ *
+ * @see av_rescale(), av_rescale_rnd(), av_rescale_q()
+ *)
+function av_rescale_q_rnd(a: cint64; bq, cq: TAVRational;
+ rnd: TAVRounding): cint64;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Compare two timestamps each in its own time base.
+ *
+ * @return One of the following values:
+ * - -1 if `ts_a` is before `ts_b`
+ * - 1 if `ts_a` is after `ts_b`
+ * - 0 if they represent the same position
+ *
+ * @warning
+ * The result of the function is undefined if one of the timestamps is outside
+ * the `int64_t` range when represented in the other's timebase.
+ *)
+function av_compare_ts(ts_a: cint64; tb_a: TAVRational; ts_b: cint64; tb_b: TAVRational): cint;
+ cdecl; external av__util;
+
+(**
+ * Compare the remainders of two integer operands divided by a common divisor.
+ *
+ * In other words, compare the least significant `log2(mod)` bits of integers
+ * `a` and `b`.
+ *
+ * @code{.c}
+ * av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2)
+ * av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02)
+ * @endcode
+ *
+ * @param a,b Operands
+ * @param mod Divisor; must be a power of 2
+ * @return
+ * - a negative value if `a % mod < b % mod`
+ * - a positive value if `a % mod > b % mod`
+ * - zero if `a % mod == b % mod`
+ *)
+function av_compare_mod(a, b, modVar: cuint64): cint64;
+ cdecl; external av__util;
+
+(**
+ * Rescale a timestamp while preserving known durations.
+ *
+ * This function is designed to be called per audio packet to scale the input
+ * timestamp to a different time base. Compared to a simple av_rescale_q()
+ * call, this function is robust against possible inconsistent frame durations.
+ *
+ * The `last` parameter is a state variable that must be preserved for all
+ * subsequent calls for the same stream. For the first call, `*last` should be
+ * initialized to #AV_NOPTS_VALUE.
+ *
+ * @param[in] in_tb Input time base
+ * @param[in] in_ts Input timestamp
+ * @param[in] fs_tb Duration time base; typically this is finer-grained
+ * (greater) than `in_tb` and `out_tb`
+ * @param[in] duration Duration till the next call to this function (i.e.
+ * duration of the current packet/frame)
+ * @param[in,out] last Pointer to a timestamp expressed in terms of
+ * `fs_tb`, acting as a state variable
+ * @param[in] out_tb Output timebase
+ * @return Timestamp expressed in terms of `out_tb`
+ *
+ * @note In the context of this function, "duration" is in term of samples, not
+ * seconds.
+ *)
+function av_rescale_delta(in_tb: TAVRational; in_ts: cint64; fs_tb: TAVRational; duration: cint; last: Pcint64; out_tb: TAVRational): cint64;
+ cdecl; external av__util;
+
+(**
+ * Add a value to a timestamp.
+ *
+ * This function guarantees that when the same value is repeatly added that
+ * no accumulation of rounding errors occurs.
+ *
+ * @param ts Input timestamp
+ * @param ts_tb Input timestamp timebase
+ * @param inc value to add to ts
+ * @param inc_tb inc timebase
+ *)
+function av_add_stable(ts_tb: TAVRational; ts: cint64; inc_tb: TAVRational; inc: cint64): cint64;
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/mem.pas b/src/lib/ffmpeg-4.0/libavutil/mem.pas
new file mode 100644
index 00000000..30a87899
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/mem.pas
@@ -0,0 +1,578 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/mem.h
+ * avutil version 52.66.100
+ *
+ *)
+
+(**
+ * @file
+ * error code definitions
+ *)
+
+(* Memory handling functions *)
+
+(**
+ * @defgroup lavu_mem_funcs Heap Management
+ * Functions responsible for allocating, freeing, and copying memory.
+ *
+ * All memory allocation functions have a built-in upper limit of `INT_MAX`
+ * bytes. This may be changed with av_max_alloc(), although exercise extreme
+ * caution when doing so.
+ *
+ * @{
+ *)
+
+(**
+ * Allocate a memory block with alignment suitable for all memory accesses
+ * (including vectors if available on the CPU).
+ *
+ * @param size Size in bytes for the memory block to be allocated
+ * @return Pointer to the allocated block, or `NULL` if the block cannot
+ * be allocated
+ * @see av_mallocz()
+ * @see av_mallocz()
+ *)
+function av_malloc(size: size_t): pointer;
+ cdecl; external av__util; {av_malloc_attrib av_alloc_size(1)}
+
+(**
+ * Allocate a memory block with alignment suitable for all memory accesses
+ * (including vectors if available on the CPU) and zero all the bytes of the
+ * block.
+ *
+ * @param size Size in bytes for the memory block to be allocated
+ * @return Pointer to the allocated block, or `NULL` if it cannot be allocated
+ * @see av_malloc()
+ *)
+function av_mallocz(size: size_t): pointer;
+ cdecl; external av__util; {av_malloc_attrib av_alloc_size(1)}
+
+(**
+ * Allocate a memory block for an array with av_malloc().
+ *
+ * The allocated memory will have size `size * nmemb` bytes.
+ *
+ * @param nmemb Number of element
+ * @param size Size of a single element
+ * @return Pointer to the allocated block, or `NULL` if the block cannot
+ * be allocated
+ * @see av_malloc()
+ *)
+function av_malloc_array(nmemb: size_t; size: size_t): pointer; {av_alloc_size(1, 2)}
+ cdecl; external av__util;
+
+(**
+ * Allocate a memory block for an array with av_mallocz().
+ *
+ * The allocated memory will have size `size * nmemb` bytes.
+ *
+ * @param nmemb Number of elements
+ * @param size Size of the single element
+ * @return Pointer to the allocated block, or `NULL` if the block cannot
+ * be allocated
+ *
+ * @see av_mallocz()
+ * @see av_malloc_array()
+ *)
+function av_mallocz_array(nmemb: size_t; size: size_t): pointer; {av_alloc_size(1, 2)}
+ cdecl; external av__util;
+
+(**
+ * Allocate a block of nmemb * size bytes with alignment suitable for all
+ * memory accesses (including vectors if available on the CPU) and
+ * zero all the bytes of the block.
+ * The allocation will fail if nmemb * size is greater than or equal
+ * to INT_MAX.
+ * @param nmemb
+ * @param size
+ * @return Pointer to the allocated block, NULL if it cannot be allocated.
+ *)
+function av_calloc(nmemb: size_t; size: size_t): pointer;
+ cdecl; external av__util; {av_malloc_attrib}
+
+(**
+ * Allocate, reallocate, or free a block of memory.
+ *
+ * If `ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is
+ * zero, free the memory block pointed to by `ptr`. Otherwise, expand or
+ * shrink that block of memory according to `size`.
+ *
+ * @param ptr Pointer to a memory block already allocated with
+ * av_realloc() or `NULL`
+ * @param size Size in bytes of the memory block to be allocated or
+ * reallocated
+ *
+ * @return Pointer to a newly-reallocated block or `NULL` if the block
+ * cannot be reallocated or the function is used to free the memory block
+ *
+ * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be
+ * correctly aligned.
+ * @see av_fast_realloc()
+ * @see av_reallocp()
+ *)
+function av_realloc(ptr: pointer; size: size_t): pointer;
+ cdecl; external av__util; {av_alloc_size(2)}
+
+(**
+ * Allocate, reallocate, or free a block of memory through a pointer to a
+ * pointer.
+ *
+ * If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is
+ * zero, free the memory block pointed to by `*ptr`. Otherwise, expand or
+ * shrink that block of memory according to `size`.
+ *
+ * @param[in,out] ptr Pointer to a pointer to a memory block already allocated
+ * with av_realloc(), or a pointer to `NULL`. The pointer
+ * is updated on success, or freed on failure.
+ * @param[in] size Size in bytes for the memory block to be allocated or
+ * reallocated
+ *
+ * @return Zero on success, an AVERROR error code on failure
+ *
+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
+ * correctly aligned.
+ *)
+function av_reallocp(ptr: pointer; elsize: size_t): cint;
+ cdecl; external av__util;
+
+(**
+ * Allocate, reallocate, or free a block of memory.
+ *
+ * This function does the same thing as av_realloc(), except:
+ * - It takes two size arguments and allocates `nelem * elsize` bytes,
+ * after checking the result of the multiplication for integer overflow.
+ * - It frees the input block in case of failure, thus avoiding the memory
+ * leak with the classic
+ * @code{.c}
+ * buf = realloc(buf);
+ * if (!buf)
+ * return -1;
+ * @endcode
+ * pattern.
+ *)
+function av_realloc_f(ptr: pointer; nelem: size_t; elsize: size_t): pointer;
+ cdecl; external av__util;
+
+(**
+ * Allocate, reallocate, or free an array.
+ *
+ * If `ptr` is `NULL` and `nmemb` > 0, allocate a new block. If
+ * `nmemb` is zero, free the memory block pointed to by `ptr`.
+ *
+ * @param ptr Pointer to a memory block already allocated with
+ * av_realloc() or `NULL`
+ * @param nmemb Number of elements in the array
+ * @param size Size of the single element of the array
+ *
+ * @return Pointer to a newly-reallocated block or NULL if the block
+ * cannot be reallocated or the function is used to free the memory block
+ *
+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
+ * correctly aligned.
+ * @see av_reallocp_array()
+ *)
+function av_realloc_array(ptr: pointer; nmemb, size: size_t): pointer; {av_alloc_size(2, 3)}
+ cdecl; external av__util;
+
+(**
+ * Allocate, reallocate, or free an array through a pointer to a pointer.
+ *
+ * If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block. If `nmemb` is
+ * zero, free the memory block pointed to by `*ptr`.
+ *
+ * @param[in,out] ptr Pointer to a pointer to a memory block already
+ * allocated with av_realloc(), or a pointer to `NULL`.
+ * The pointer is updated on success, or freed on failure.
+ * @param[in] nmemb Number of elements
+ * @param[in] size Size of the single element
+ *
+ * @return Zero on success, an AVERROR error code on failure
+ *
+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
+ * correctly aligned.
+ *)
+function av_reallocp_array(ptr: pointer; nmemb, size: size_t): cint; {av_alloc_size(2, 3)}
+ cdecl; external av__util;
+
+(**
+ * Reallocate the given buffer if it is not large enough, otherwise do nothing.
+ *
+ * If the given buffer is `NULL`, then a new uninitialized buffer is allocated.
+ *
+ * If the given buffer is not large enough, and reallocation fails, `NULL` is
+ * returned and `*size` is set to 0, but the original buffer is not changed or
+ * freed.
+ *
+ * A typical use pattern follows:
+ *
+ * @code{.c}
+ * uint8_t *buf = ...;
+ * uint8_t *new_buf = av_fast_realloc(buf, ¤t_size, size_needed);
+ * if (!new_buf) {
+ * // Allocation failed; clean up original buffer
+ * av_freep(&buf);
+ * return AVERROR(ENOMEM);
+ * }
+ * @endcode
+ *
+ * @param[in,out] ptr Already allocated buffer, or `NULL`
+ * @param[in,out] size Pointer to current size of buffer `ptr`. `*size` is
+ * changed to `min_size` in case of success or 0 in
+ * case of failure
+ * @param[in] min_size New size of buffer `ptr`
+ * @return `ptr` if the buffer is large enough, a pointer to newly reallocated
+ * buffer if the buffer was not large enough, or `NULL` in case of
+ * error
+ * @see av_realloc()
+ * @see av_fast_malloc()
+ *)
+function av_fast_realloc(ptr: pointer; size: Pcuint; min_size: size_t): pointer;
+ cdecl; external av__util;
+
+(**
+ * Allocate a buffer, reusing the given one if large enough.
+ *
+ * Contrary to av_fast_realloc(), the current buffer contents might not be
+ * preserved and on error the old buffer is freed, thus no special handling to
+ * avoid memleaks is necessary.
+ *
+ * `*ptr` is allowed to be `NULL`, in which case allocation always happens if
+ * `size_needed` is greater than 0.
+ *
+ * @code{.c}
+ * uint8_t *buf = ...;
+ * av_fast_malloc(&buf, ¤t_size, size_needed);
+ * if (!buf) {
+ * // Allocation failed; buf already freed
+ * return AVERROR(ENOMEM);
+ * }
+ * @endcode
+ *
+ * @param[in,out] ptr Pointer to pointer to an already allocated buffer.
+ * `*ptr` will be overwritten with pointer to new
+ * buffer on success or `NULL` on failure
+ * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is
+ * changed to `min_size` in case of success or 0 in
+ * case of failure
+ * @param[in] min_size New size of buffer `*ptr`
+ * @see av_realloc()
+ * @see av_fast_mallocz()
+ *)
+procedure av_fast_malloc(ptr: pointer; size: Pcuint; min_size: size_t);
+ cdecl; external av__util;
+
+(**
+ * Allocate and clear a buffer, reusing the given one if large enough.
+ *
+ * Like av_fast_malloc(), but all newly allocated space is initially cleared.
+ * Reused buffer is not cleared.
+ *
+ * `*ptr` is allowed to be `NULL`, in which case allocation always happens if
+ * `size_needed` is greater than 0.
+ *
+ * @param[in,out] ptr Pointer to pointer to an already allocated buffer.
+ * `*ptr` will be overwritten with pointer to new
+ * buffer on success or `NULL` on failure
+ * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is
+ * changed to `min_size` in case of success or 0 in
+ * case of failure
+ * @param[in] min_size New size of buffer `*ptr`
+ * @see av_fast_malloc()
+ *)
+procedure av_fast_mallocz(ptr: pointer; size: Pcuint; min_size: size_t);
+ cdecl; external av__util;
+
+(**
+ * Free a memory block which has been allocated with a function of av_malloc()
+ * or av_realloc() family.
+ *
+ * @param ptr Pointer to the memory block which should be freed.
+ *
+ * @note `ptr = NULL` is explicitly allowed.
+ * @note It is recommended that you use av_freep() instead, to prevent leaving
+ * behind dangling pointers.
+ * @see av_freep()
+ *)
+procedure av_free(ptr: pointer);
+ cdecl; external av__util;
+
+(**
+ * Free a memory block which has been allocated with a function of av_malloc()
+ * or av_realloc() family, and set the pointer pointing to it to `NULL`.
+ *
+ * @code{.c}
+ * uint8_t *buf = av_malloc(16);
+ * av_free(buf);
+ * // buf now contains a dangling pointer to freed memory, and accidental
+ * // dereference of buf will result in a use-after-free, which may be a
+ * // security risk.
+ *
+ * uint8_t *buf = av_malloc(16);
+ * av_freep(&buf);
+ * // buf is now NULL, and accidental dereference will only result in a
+ * // NULL-pointer dereference.
+ * @endcode
+ *
+ * @param ptr Pointer to the pointer to the memory block which should be freed
+ * @note `*ptr = NULL` is safe and leads to no action.
+ * @see av_free()
+ *)
+procedure av_freep (ptr: pointer);
+ cdecl; external av__util;
+
+(**
+ * Duplicate a string.
+ *
+ * @param s String to be duplicated
+ * @return Pointer to a newly-allocated string containing a
+ * copy of `s` or `NULL` if the string cannot be allocated
+ * @see av_strndup()
+ *)
+function av_strdup({const} s: PAnsiChar): PAnsiChar;
+ cdecl; external av__util; {av_malloc_attrib}
+
+(**
+ * Duplicate a substring of a string.
+ *
+ * @param s String to be duplicated
+ * @param len Maximum length of the resulting string (not counting the
+ * terminating byte)
+ * @return Pointer to a newly-allocated string containing a
+ * substring of `s` or `NULL` if the string cannot be allocated
+ *)
+function av_strndup({const} s: PAnsiChar; len: size_t): PAnsiChar;
+ cdecl; external av__util; {av_malloc_attrib}
+
+(**
+ * Duplicate a buffer with av_malloc().
+ *
+ * @param p Buffer to be duplicated
+ * @param size Size in bytes of the buffer copied
+ * @return Pointer to a newly allocated buffer containing a
+ * copy of `p` or `NULL` if the buffer cannot be allocated
+ *)
+function av_memdup({const} p: pointer; size: size_t): pointer;
+ cdecl; external av__util;
+
+(**
+ * Overlapping memcpy() implementation.
+ *
+ * @param dst Destination buffer
+ * @param back Number of bytes back to start copying (i.e. the initial size of
+ * the overlapping window); must be > 0
+ * @param cnt Number of bytes to copy; must be >= 0
+ *
+ * @note `cnt > back` is valid, this will copy the bytes we just copied,
+ * thus creating a repeating pattern with a period length of `back`.
+ *)
+procedure av_memcpy_backptr(dst: Pcuint8; back: cint; cnt: cint);
+ cdecl; external av__util;
+
+(**
+ * @}
+ *)
+
+(**
+ * @defgroup lavu_mem_dynarray Dynamic Array
+ *
+ * Utilities to make an array grow when needed.
+ *
+ * Sometimes, the programmer would want to have an array that can grow when
+ * needed. The libavutil dynamic array utilities fill that need.
+ *
+ * libavutil supports two systems of appending elements onto a dynamically
+ * allocated array, the first one storing the pointer to the value in the
+ * array, and the second storing the value directly. In both systems, the
+ * caller is responsible for maintaining a variable containing the length of
+ * the array, as well as freeing of the array after use.
+ *
+ * The first system stores pointers to values in a block of dynamically
+ * allocated memory. Since only pointers are stored, the function does not need
+ * to know the size of the type. Both av_dynarray_add() and
+ * av_dynarray_add_nofree() implement this system.
+ *
+ * @code
+ * type **array = NULL; //< an array of pointers to values
+ * int nb = 0; //< a variable to keep track of the length of the array
+ *
+ * type to_be_added = ...;
+ * type to_be_added2 = ...;
+ *
+ * av_dynarray_add(&array, &nb, &to_be_added);
+ * if (nb == 0)
+ * return AVERROR(ENOMEM);
+ *
+ * av_dynarray_add(&array, &nb, &to_be_added2);
+ * if (nb == 0)
+ * return AVERROR(ENOMEM);
+ *
+ * // Now:
+ * // nb == 2
+ * // &to_be_added == array[0]
+ * // &to_be_added2 == array[1]
+ *
+ * av_freep(&array);
+ * @endcode
+ *
+ * The second system stores the value directly in a block of memory. As a
+ * result, the function has to know the size of the type. av_dynarray2_add()
+ * implements this mechanism.
+ *
+ * @code
+ * type *array = NULL; //< an array of values
+ * int nb = 0; //< a variable to keep track of the length of the array
+ *
+ * type to_be_added = ...;
+ * type to_be_added2 = ...;
+ *
+ * type *addr = av_dynarray2_add((void ** )&array, &nb, sizeof(*array), NULL);
+ * if (!addr)
+ * return AVERROR(ENOMEM);
+ * memcpy(addr, &to_be_added, sizeof(to_be_added));
+ *
+ * // Shortcut of the above.
+ * type *addr = av_dynarray2_add((void ** )&array, &nb, sizeof(*array),
+ * (const void * )&to_be_added2);
+ * if (!addr)
+ * return AVERROR(ENOMEM);
+ *
+ * // Now:
+ * // nb == 2
+ * // to_be_added == array[0]
+ * // to_be_added2 == array[1]
+ *
+ * av_freep(&array);
+ * @endcode
+ *
+ * @{
+ *)
+
+
+(**
+ * Add the pointer to an element to a dynamic array.
+ *
+ * The array to grow is supposed to be an array of pointers to
+ * structures, and the element to add must be a pointer to an already
+ * allocated structure.
+ *
+ * The array is reallocated when its size reaches powers of 2.
+ * Therefore, the amortized cost of adding an element is constant.
+ *
+ * In case of success, the pointer to the array is updated in order to
+ * point to the new grown array, and the number pointed to by `nb_ptr`
+ * is incremented.
+ * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
+ * `*nb_ptr` is set to 0.
+ *
+ * @param[in,out] tab_ptr Pointer to the array to grow
+ * @param[in,out] nb_ptr Pointer to the number of elements in the array
+ * @param[in] elem Element to add
+ * @see av_dynarray_add_nofree(), av_dynarray2_add()
+ *)
+procedure av_dynarray_add(tab_ptr: pointer; nb_ptr: Pcint; elem: pointer);
+ cdecl; external av__util;
+
+(**
+ * Add an element to a dynamic array.
+ *
+ * Function has the same functionality as av_dynarray_add(),
+ * but it doesn't free memory on fails. It returns error code
+ * instead and leave current buffer untouched.
+ *
+ * @return >=0 on success, negative otherwise
+ * @see av_dynarray_add(), av_dynarray2_add()
+ *)
+function av_dynarray_add_nofree(tab_ptr: pointer; nb_ptr: Pcint; elem: pointer): cint;
+ cdecl; external av__util;
+
+(**
+ * Add an element of size `elem_size` to a dynamic array.
+ *
+ * The array is reallocated when its number of elements reaches powers of 2.
+ * Therefore, the amortized cost of adding an element is constant.
+ *
+ * In case of success, the pointer to the array is updated in order to
+ * point to the new grown array, and the number pointed to by `nb_ptr`
+ * is incremented.
+ * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
+ * `*nb_ptr` is set to 0.
+ *
+ * @param[in,out] tab_ptr Pointer to the array to grow
+ * @param[in,out] nb_ptr Pointer to the number of elements in the array
+ * @param[in] elem_size Size in bytes of an element in the array
+ * @param[in] elem_data Pointer to the data of the element to add. If
+ * `NULL`, the space of the newly added element is
+ * allocated but left uninitialized.
+ *
+ * @return Pointer to the data of the element to copy in the newly allocated
+ * space
+ * @see av_dynarray_add(), av_dynarray_add_nofree()
+ *)
+function av_dynarray2_add(tab_ptr: Pointer; nb_ptr: Pcint; elem_size: size_t;
+ {const} elem_data: Pcuint8): pointer;
+ cdecl; external av__util;
+
+(**
+ * @}
+ *)
+
+(**
+ * @defgroup lavu_mem_misc Miscellaneous Functions
+ *
+ * Other functions related to memory allocation.
+ *
+ * @{
+ *)
+
+(**
+ * Multiply two `size_t` values checking for overflow.
+ *
+ * @param[in] a,b Operands of multiplication
+ * @param[out] r Pointer to the result of the operation
+ * @return 0 on success, AVERROR(EINVAL) on overflow
+ *)
+//static inline int av_size_mult(size_t a, size_t b, size_t *r)
+{
+ size_t t = a * b;
+ /* Hack inspired from glibc: don't try the division if nelem and elsize
+ * are both less than sqrt(SIZE_MAX). */
+ if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b)
+ return AVERROR(EINVAL);
+ *r = t;
+ return 0;
+}
+
+(**
+ * Set the maximum size that may be allocated in one block.
+ *
+ * The value specified with this function is effective for all libavutil's @ref
+ * lavu_mem_funcs "heap management functions."
+ *
+ * By default, the max value is defined as `INT_MAX`.
+ *
+ * @param max Value to be set as the new maximum size
+ *
+ * @warning Exercise extreme caution when using this function. Don't touch
+ * this if you do not understand the full consequence of doing so.
+ *)
+procedure av_max_alloc(max: size_t);
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/libavutil/opt.pas b/src/lib/ffmpeg-4.0/libavutil/opt.pas
new file mode 100644
index 00000000..87ec68aa
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/opt.pas
@@ -0,0 +1,507 @@
+(*
+ * AVOptions
+ * copyright (c) 2005 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/opt.h
+ * avutil version 54.7.100
+ *
+ *)
+
+(**
+ * Show the obj options.
+ *
+ * @param req_flags requested flags for the options to show. Show only the
+ * options for which it is opt->flags & req_flags.
+ * @param rej_flags rejected flags for the options to show. Show only the
+ * options for which it is !(opt->flags & req_flags).
+ * @param av_log_obj log context to use for showing the options
+ *)
+function av_opt_show2(obj: pointer; av_log_obj: pointer; req_flags: cint; rej_flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Set the values of all AVOption fields to their default values.
+ *
+ * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass)
+ *)
+procedure av_opt_set_defaults(s: pointer);
+ cdecl; external av__util;
+
+(**
+ * Set the values of all AVOption fields to their default values. Only these
+ * AVOption fields for which (opt->flags & mask) == flags will have their
+ * default applied to s.
+ *
+ * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass)
+ * @param mask combination of AV_OPT_FLAG_*
+ * @param flags combination of AV_OPT_FLAG_*
+ *)
+procedure av_opt_set_defaults2(s: Pointer; mask: cint; flags: cint);
+ cdecl; external av__util; deprecated;
+
+(**
+ * Parse the key/value pairs list in opts. For each key/value pair
+ * found, stores the value in the field in ctx that is named like the
+ * key. ctx must be an AVClass context, storing is done using
+ * AVOptions.
+ *
+ * @param opts options string to parse, may be NULL
+ * @param key_val_sep a 0-terminated list of characters used to
+ * separate key from value
+ * @param pairs_sep a 0-terminated list of characters used to separate
+ * two pairs from each other
+ * @return the number of successfully set key/value pairs, or a negative
+ * value corresponding to an AVERROR code in case of error:
+ * AVERROR(EINVAL) if opts cannot be parsed,
+ * the error code issued by av_set_string3() if a key/value pair
+ * cannot be set
+*)
+function av_set_options_string(ctx: pointer; opts: {const} PAnsiChar;
+ key_val_sep: {const} PAnsiChar; pairs_sep: {const} PAnsiChar): cint;
+ cdecl; external av__util;
+
+(**
+ * Parse the key-value pairs list in opts. For each key=value pair found,
+ * set the value of the corresponding option in ctx.
+ *
+ * @param ctx the AVClass object to set options on
+ * @param opts the options string, key-value pairs separated by a
+ * delimiter
+ * @param shorthand a NULL-terminated array of options names for shorthand
+ * notation: if the first field in opts has no key part,
+ * the key is taken from the first element of shorthand;
+ * then again for the second, etc., until either opts is
+ * finished, shorthand is finished or a named option is
+ * found; after that, all options must be named
+ * @param key_val_sep a 0-terminated list of characters used to separate
+ * key from value, for example '='
+ * @param pairs_sep a 0-terminated list of characters used to separate
+ * two pairs from each other, for example ':' or ','
+ * @return the number of successfully set key=value pairs, or a negative
+ * value corresponding to an AVERROR code in case of error:
+ * AVERROR(EINVAL) if opts cannot be parsed,
+ * the error code issued by av_set_string3() if a key/value pair
+ * cannot be set
+ *
+ * Options names must use only the following characters: a-z A-Z 0-9 - . / _
+ * Separators must use characters distinct from option names and from each
+ * other.
+ *)
+function av_opt_set_from_string(ctx: pointer; opts: {const} PAnsiChar;
+ shorthand: {const} PAnsiChar;
+ key_val_sep: {const} PAnsiChar; pairs_sep: {const} PAnsiChar): cint;
+ cdecl; external av__util;
+
+(**
+ * Free all allocated objects in obj.
+ *)
+procedure av_opt_free(obj: pointer);
+ cdecl; external av__util;
+
+(**
+ * Check whether a particular flag is set in a flags field.
+ *
+ * @param field_name the name of the flag field option
+ * @param flag_name the name of the flag to check
+ * @return non-zero if the flag is set, zero if the flag isn't set,
+ * isn't of the right type, or the flags field doesn't exist.
+ *)
+function av_opt_flag_is_set(obj: pointer; field_name: {const} PAnsiChar; flag_name: {const} PAnsiChar): cint;
+ cdecl; external av__util;
+
+(**
+ * Set all the options from a given dictionary on an object.
+ *
+ * @param obj a struct whose first element is a pointer to AVClass
+ * @param options options to process. This dictionary will be freed and replaced
+ * by a new one containing all options not found in obj.
+ * Of course this new dictionary needs to be freed by caller
+ * with av_dict_free().
+ *
+ * @return 0 on success, a negative AVERROR if some option was found in obj,
+ * but could not be set.
+ *
+ * @see av_dict_copy()
+ *)
+function av_opt_set_dict(obj: pointer; var options: PAVDictionary): cint;
+ cdecl; external av__util;
+
+(**
+ * Set all the options from a given dictionary on an object.
+ *
+ * @param obj a struct whose first element is a pointer to AVClass
+ * @param options options to process. This dictionary will be freed and replaced
+ * by a new one containing all options not found in obj.
+ * Of course this new dictionary needs to be freed by caller
+ * with av_dict_free().
+ * @param search_flags A combination of AV_OPT_SEARCH_*.
+ *
+ * @return 0 on success, a negative AVERROR if some option was found in obj,
+ * but could not be set.
+ *
+ * @see av_dict_copy()
+ *)
+function av_opt_set_dict2(obj: pointer; var options: PAVDictionary; search_flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Extract a key-value pair from the beginning of a string.
+ *
+ * @param ropts pointer to the options string, will be updated to
+ * point to the rest of the string (one of the pairs_sep
+ * or the final NUL)
+ * @param key_val_sep a 0-terminated list of characters used to separate
+ * key from value, for example '='
+ * @param pairs_sep a 0-terminated list of characters used to separate
+ * two pairs from each other, for example ':' or ','
+ * @param flags flags; see the AV_OPT_FLAG_* values below
+ * @param rkey parsed key; must be freed using av_free()
+ * @param rval parsed value; must be freed using av_free()
+ *
+ * @return >=0 for success, or a negative value corresponding to an
+ * AVERROR code in case of error; in particular:
+ * AVERROR(EINVAL) if no key is present
+ *
+ *)
+function av_opt_get_key_value(ropts: {const} PPAnsiChar;
+ key_val_sep: {const} PAnsiChar; pairs_sep: {const} PAnsiChar;
+ flags: byte;
+ rkey, rval: PPAnsiChar): cint;
+ cdecl; external av__util;
+
+const
+ (**
+ * Accept to parse a value without a key; the key will then be returned
+ * as NULL.
+ *)
+ AV_OPT_FLAG_IMPLICIT_KEY = 1;
+
+(**
+ * @defgroup opt_eval_funcs Evaluating option strings
+ * @
+ * This group of functions can be used to evaluate option strings
+ * and get numbers out of them. They do the same thing as av_opt_set(),
+ * except the result is written into the caller-supplied pointer.
+ *
+ * @param obj a struct whose first element is a pointer to AVClass.
+ * @param o an option for which the string is to be evaluated.
+ * @param val string to be evaluated.
+ * @param *_out value of the string will be written here.
+ *
+ * @return 0 on success, a negative number on failure.
+ *)
+function av_opt_eval_flags (obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; flags_out: Pcint): cint;
+ cdecl; external av__util;
+function av_opt_eval_int (obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; int_out: Pcint): cint;
+ cdecl; external av__util;
+function av_opt_eval_int64 (obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; int64_out: Pcint64): cint;
+ cdecl; external av__util;
+function av_opt_eval_float (obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; float_out: Pcfloat): cint;
+ cdecl; external av__util;
+function av_opt_eval_double(obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; double_out: Pcdouble): cint;
+ cdecl; external av__util;
+function av_opt_eval_q (obj: pointer; o: {const} PAVOption; val: {const} PAnsiChar; q_out: PAVRational): cint;
+ cdecl; external av__util;
+(**
+ * @
+ *)
+
+const
+ AV_OPT_SEARCH_CHILDREN = (1 << 0); (**< Search in possible children of the
+ given object first.*)
+(**
+ * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass
+ * instead of a required pointer to a struct containing AVClass. This is
+ * useful for searching for options without needing to allocate the corresponding
+ * object.
+ *)
+ AV_OPT_SEARCH_FAKE_OBJ = (1 << 1);
+
+(**
+ * In av_opt_get, return NULL if the option has a pointer type and is set to NULL,
+ * rather than returning an empty string.
+ *)
+ AV_OPT_ALLOW_NULL = (1 << 2);
+(**
+ * Allows av_opt_query_ranges and av_opt_query_ranges_default to return more than
+ * one component for certain option types.
+ * @see AVOptionRanges for details.
+ *)
+ AV_OPT_MULTI_COMPONENT_RANGE = (1 << 12);
+
+(**
+ * Look for an option in an object. Consider only options which
+ * have all the specified flags set.
+ *
+ * @param[in] obj A pointer to a struct whose first element is a
+ * pointer to an AVClass.
+ * @param[in] name The name of the option to look for.
+ * @param[in] unit When searching for named constants, name of the unit
+ * it belongs to.
+ * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
+ * @param search_flags A combination of AV_OPT_SEARCH_*.
+ *
+ * @return A pointer to the option found, or NULL if no option
+ * was found.
+ *
+ * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable
+ * directly with av_set_string3(). Use special calls which take an options
+ * AVDictionary (e.g. avformat_open_input()) to set options found with this
+ * flag.
+ *)
+function av_opt_find(obj: pointer; name: {const} PAnsiChar; unit_: {const} PAnsiChar;
+ opt_flags: cint; search_flags: cint): PAVOption;
+ cdecl; external av__util;
+
+(**
+ * Look for an option in an object. Consider only options which
+ * have all the specified flags set.
+ *
+ * @param[in] obj A pointer to a struct whose first element is a
+ * pointer to an AVClass.
+ * Alternatively a double pointer to an AVClass, if
+ * AV_OPT_SEARCH_FAKE_OBJ search flag is set.
+ * @param[in] name The name of the option to look for.
+ * @param[in] unit When searching for named constants, name of the unit
+ * it belongs to.
+ * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
+ * @param search_flags A combination of AV_OPT_SEARCH_*.
+ * @param[out] target_obj if non-NULL, an object to which the option belongs will be
+ * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present
+ * in search_flags. This parameter is ignored if search_flags contain
+ * AV_OPT_SEARCH_FAKE_OBJ.
+ *
+ * @return A pointer to the option found, or NULL if no option
+ * was found.
+ *)
+function av_opt_find2(obj: pointer; name: {const} PAnsiChar; unit_: {const} PAnsiChar;
+ opt_flags: cint; search_flags: cint; out target_obj: pointer): {const} PAVOption;
+ cdecl; external av__util;
+
+(**
+ * Iterate over all AVOptions belonging to obj.
+ *
+ * @param obj an AVOptions-enabled struct or a double pointer to an
+ * AVClass describing it.
+ * @param prev result of the previous call to av_opt_next() on this object
+ * or NULL
+ * @return next AVOption or NULL
+ *)
+function av_opt_next(obj: {const} pointer; prev: {const} PAVOption): {const} PAVOption;
+ cdecl; external av__util;
+
+(**
+ * Iterate over AVOptions-enabled children of obj.
+ *
+ * @param prev result of a previous call to this function or NULL
+ * @return next AVOptions-enabled child or NULL
+ *)
+function av_opt_child_next(obj: pointer; prev: pointer): pointer;
+ cdecl; external av__util;
+
+(**
+ * Iterate over potential AVOptions-enabled children of parent.
+ *
+ * @param prev result of a previous call to this function or NULL
+ * @return AVClass corresponding to next potential child or NULL
+ *)
+function av_opt_child_class_next(parent: {const} PAVClass; prev: {const} PAVClass): {const} PAVClass;
+ cdecl; external av__util;
+
+(**
+ * @defgroup opt_set_funcs Option setting functions
+ * @
+ * Those functions set the field of obj with the given name to value.
+ *
+ * @param[in] obj A struct whose first element is a pointer to an AVClass.
+ * @param[in] name the name of the field to set
+ * @param[in] val The value to set. In case of av_opt_set() if the field is not
+ * of a string type, then the given string is parsed.
+ * SI postfixes and some named scalars are supported.
+ * If the field is of a numeric type, it has to be a numeric or named
+ * scalar. Behavior with more than one scalar and +- infix operators
+ * is undefined.
+ * If the field is of a flags type, it has to be a sequence of numeric
+ * scalars or named flags separated by '+' or '-'. Prefixing a flag
+ * with '+' causes it to be set without affecting the other flags;
+ * similarly, '-' unsets a flag.
+ * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
+ * is passed here, then the option may be set on a child of obj.
+ *
+ * @return 0 if the value has been set, or an AVERROR code in case of
+ * error:
+ * AVERROR_OPTION_NOT_FOUND if no matching option exists
+ * AVERROR(ERANGE) if the value is out of range
+ * AVERROR(EINVAL) if the value is not valid
+ *)
+function av_opt_set (obj: pointer; name: {const} PAnsiChar; val: {const} PAnsiChar; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_int (obj: pointer; name: {const} PAnsiChar; val: cint64; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_double (obj: pointer; name: {const} PAnsiChar; val: cdouble; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_q (obj: pointer; name: {const} PAnsiChar; val: TAVRational; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_bin (obj: pointer; name: {const} PAnsiChar; val: {const} cuint8; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_image_size(obj: pointer; name: {const} PAnsiChar; w, h, search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_pixel_fmt (obj: pointer; name: {const} PAnsiChar; fmt: TAVPixelFormat; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_sample_fmt(obj: pointer; name: {const} PAnsiChar; fmt: TAVSampleFormat; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_video_rate(obj: pointer; name: {const} PAnsiChar; val: TAVRational; search_flags: cint): cint;
+ cdecl; external av__util;
+function av_opt_set_channel_layout(obj: pointer; name: {const} PAnsiChar; ch_layout: cint64; search_flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * @note Any old dictionary present is discarded and replaced with a copy of the new one. The
+ * caller still owns val is and responsible for freeing it.
+ *)
+function av_opt_set_dict_val(obj: pointer; name: {const} PAnsiChar; val: {const} PAVDictionary; search_flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Set a binary option to an integer list.
+ *
+ * @param obj AVClass object to set options on
+ * @param name name of the binary option
+ * @param val pointer to an integer list (must have the correct type with
+ * regard to the contents of the list)
+ * @param term list terminator (usually 0 or -1)
+ * @param flags search flags
+ *)
+{to be translated
+#define av_opt_set_int_list(obj, name, val, term, flags) \
+ (av_int_list_length(val, term) > INT_MAX / sizeof(*(val)) ? \
+ AVERROR(EINVAL) : \
+ av_opt_set_bin(obj, name, (const uint8_t *)(val), \
+ av_int_list_length(val, term) * sizeof(*(val)), flags))
+}
+(**
+ * @
+ *)
+
+(**
+ * @defgroup opt_get_funcs Option getting functions
+ * @
+ * Those functions get a value of the option with the given name from an object.
+ *
+ * @param[in] obj a struct whose first element is a pointer to an AVClass.
+ * @param[in] name name of the option to get.
+ * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
+ * is passed here, then the option may be found in a child of obj.
+ * @param[out] out_val value of the option will be written here
+ * @return >=0 on success, a negative error code otherwise
+ *)
+(**
+ * @note the returned string will be av_malloc()ed and must be av_free()ed by the caller
+ *
+ * @note if AV_OPT_ALLOW_NULL is set in search_flags in av_opt_get, and the option has
+ * AV_OPT_TYPE_STRING or AV_OPT_TYPE_BINARY and is set to NULL, *out_val will be set
+ * to NULL instead of an allocated empty string.
+ *)
+function av_opt_get (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out out_val: Pcuint8): cint;
+ cdecl; external av__util;
+function av_opt_get_int (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_val: Pcint64): cint;
+ cdecl; external av__util;
+function av_opt_get_double (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_val: Pcdouble): cint;
+ cdecl; external av__util;
+function av_opt_get_q (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_val: PAVRational): cint;
+ cdecl; external av__util;
+function av_opt_get_image_size(obj: pointer; name: {const} PAnsiChar; search_flags: cint; w_out, h_out: Pcint): cint;
+ cdecl; external av__util;
+function av_opt_get_pixel_fmt (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_fmt: PAVPixelFormat): cint;
+ cdecl; external av__util;
+function av_opt_get_sample_fmt(obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_fmt: PAVPixelFormat): cint;
+ cdecl; external av__util;
+function av_opt_get_video_rate(obj: pointer; name: {const} PAnsiChar; search_flags: cint; out_val: PAVRational): cint;
+ cdecl; external av__util;
+function av_opt_get_channel_layout(obj: pointer; name: {const} PAnsiChar; search_flags: cint; ch_layout: Pcint64): cint;
+ cdecl; external av__util;
+(**
+ * @param[out] out_val The returned dictionary is a copy of the actual value and must
+ * be freed with av_dict_free() by the caller
+ *)
+function av_opt_get_dict_val (obj: pointer; name: {const} PAnsiChar; search_flags: cint; out out_val: PAVDictionary): cint;
+ cdecl; external av__util;
+(**
+ * @
+ *)
+(**
+ * Gets a pointer to the requested field in a struct.
+ * This function allows accessing a struct even when its fields are moved or
+ * renamed since the application making the access has been compiled,
+ *
+ * @returns a pointer to the field, it can be cast to the correct type and read
+ * or written to.
+ *)
+function av_opt_ptr(avclass: {const} PAVClass; obj: pointer; name: {const} PAnsiChar): pointer;
+ cdecl; external av__util;
+
+(**
+ * Free an AVOptionRanges struct and set it to NULL.
+ *)
+procedure av_opt_freep_ranges(ranges: PPAVOptionRanges);
+ cdecl; external av__util;
+
+(**
+ * Get a list of allowed ranges for the given option.
+ *
+ * The returned list may depend on other fields in obj like for example profile.
+ *
+ * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored
+ * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance
+ * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges
+ *
+ * The result must be freed with av_opt_freep_ranges.
+ *
+ * @return number of compontents returned on success, a negative errro code otherwise
+ *)
+function av_opt_query_ranges(P: PPAVOptionRanges; obj: pointer; key: {const} PAnsiChar; flags: cint): cint;
+ cdecl; external av__util;
+
+function av_opt_copy(dest: pointer;src: {const }pointer): cint;
+ cdecl; external av__util;
+
+(**
+ * Get a default list of allowed ranges for the given option.
+ *
+ * This list is constructed without using the AVClass.query_ranges() callback
+ * and can be used as fallback from within the callback.
+ *
+ * @param flags is a bitmask of flags, undefined flags should not be set and should be ignored
+ * AV_OPT_SEARCH_FAKE_OBJ indicates that the obj is a double pointer to a AVClass instead of a full instance
+ * AV_OPT_MULTI_COMPONENT_RANGE indicates that function may return more than one component, @see AVOptionRanges
+ *
+ * The result must be freed with av_opt_free_ranges.
+ *
+ * @return number of compontents returned on success, a negative errro code otherwise
+ *)
+function av_opt_query_ranges_default(P: PPAVOptionRanges; obj: pointer; key: {const} PAnsiChar; flags: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * @
+ *)
diff --git a/src/lib/ffmpeg-4.0/libavutil/pixfmt.pas b/src/lib/ffmpeg-4.0/libavutil/pixfmt.pas
new file mode 100644
index 00000000..a8cdad64
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/pixfmt.pas
@@ -0,0 +1,599 @@
+(*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/pixfmt.h
+ * avutil version 54.7.100
+ *
+ *)
+
+(**
+ * @file
+ * Pixel format
+ *)
+
+const
+ AVPALETTE_SIZE = 1024;
+ AVPALETTE_COUNT = 256;
+
+type
+(**
+ * Pixel format. Notes:
+ *
+ * @note
+ * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
+ * color is put together as:
+ * (A << 24) | (R << 16) | (G << 8) | B
+ * This is stored as BGRA on little-endian CPU architectures and ARGB on
+ * big-endian CPUs.
+ *
+ * @par
+ * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized
+ * image data is stored in AVFrame.data[0]. The palette is transported in
+ * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is
+ * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is
+ * also endian-specific). Note also that the individual RGB32 palette
+ * components stored in AVFrame.data[1] should be in the range 0..255.
+ * This is important as many custom PAL8 video codecs that were designed
+ * to run on the IBM VGA graphics adapter use 6-bit palette components.
+ *
+ * @par
+ * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like
+ * for pal8. This palette is filled in automatically by the function
+ * allocating the picture.
+ *)
+
+ PAVPixelFormat = ^TAVPixelFormat;
+ TAVPixelFormat = (
+ AV_PIX_FMT_NONE = -1,
+ AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
+ AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
+ AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB...
+ AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR...
+ AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
+ AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
+ AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
+ AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
+ AV_PIX_FMT_GRAY8, ///< Y , 8bpp
+ AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb
+ AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb
+ AV_PIX_FMT_PAL8, ///< 8 bits with AV_PIX_FMT_RGB32 palette
+ AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range
+ AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range
+ AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range
+ AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
+ AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
+ AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
+ AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
+ AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
+ AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
+ AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
+ AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
+ AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
+ AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped
+
+ AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
+ AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
+ AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
+ AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
+
+ AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian
+ AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian
+ AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
+ AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
+ AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
+ AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
+ AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
+
+ AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
+ AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
+ AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian, most significant bit to 0
+ AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, most significant bit to 0
+
+ AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
+ AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
+ AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian, most significant bit to 1
+ AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, most significant bit to 1
+{$IFDEF FF_API_VAAPI}
+ (** Deprecated pixel formats *)
+ AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
+ AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
+ AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a VASurfaceID
+
+ AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD,
+{$ELSE}
+ AV_PIX_FMT_VAAPI,
+{$ENDIF}
+ AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
+ AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
+ AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+ AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+ AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
+
+ AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, most significant bits to 0
+ AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, most significant bits to 0
+ AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, most significant bits to 1
+ AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, most significant bits to 1
+ AV_PIX_FMT_YA8, ///< 8 bits gray, 8 bits alpha
+(* see const declaration way down
+ AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8
+ AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8
+*)
+ AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
+ AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
+
+ (**
+ * The following 12 formats have the disadvantage of needing 1 format for each bit depth.
+ * Notice that each 9/10 bits sample is stored in 16 bits with extra padding.
+ * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better.
+ *)
+ AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
+ AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
+ AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
+ AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
+ AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+ AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+ AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+ AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+ AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+ AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp
+ AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP
+ AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian
+ AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian
+ AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian
+ AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian
+ AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian
+ AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian
+ AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
+ AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
+ AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
+ AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian
+ AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
+ AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
+ AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
+ AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
+ AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
+ AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
+ AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
+ AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
+ AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
+ AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
+ AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
+
+ AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface
+
+ AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0
+ AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0
+ AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
+ AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+
+ AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
+ AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
+ AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
+ AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
+
+ AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
+
+ AV_PIX_FMT_YA16BE, ///< 16 bits gray, 16 bits alpha (big-endian)
+ AV_PIX_FMT_YA16LE, ///< 16 bits gray, 16 bits alpha (little-endian)
+
+ AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp
+ AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian
+ AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian
+ (**
+ * HW acceleration through QSV, data[3] contains a pointer to the
+ * mfxFrameSurface1 structure.
+ *)
+ AV_PIX_FMT_QSV,
+ (**
+ * HW acceleration though MMAL, data[3] contains a pointer to the
+ * MMAL_BUFFER_HEADER_T structure.
+ *)
+ AV_PIX_FMT_MMAL,
+
+ AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer
+
+ (**
+ * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers
+ * exactly as for system memory frames.
+ *)
+ AV_PIX_FMT_CUDA,
+
+ AV_PIX_FMT_0RGB, ///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
+ AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
+ AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
+ AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
+
+ AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
+ AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
+ AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
+ AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
+ AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+ AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
+ AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+ AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+ AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
+ AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian
+ AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian
+ AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian
+ AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian
+ AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range
+
+ AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */
+ AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */
+ AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */
+ AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */
+ AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */
+ AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */
+ AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */
+ AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */
+ AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */
+ AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */
+ AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */
+ AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */
+
+ AV_PIX_FMT_XVMC, ///< XVideo Motion Acceleration via common packet passing
+
+ AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
+ AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
+ AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
+ AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
+ AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
+ AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
+
+ AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox
+
+ AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian
+ AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian
+
+ AV_PIX_FMT_GBRAP12BE, ///< planar GBR 4:4:4:4 48bpp, big-endian
+ AV_PIX_FMT_GBRAP12LE, ///< planar GBR 4:4:4:4 48bpp, little-endian
+
+ AV_PIX_FMT_GBRAP10BE, ///< planar GBR 4:4:4:4 40bpp, big-endian
+ AV_PIX_FMT_GBRAP10LE, ///< planar GBR 4:4:4:4 40bpp, little-endian
+
+ AV_PIX_FMT_MEDIACODEC, ///< hardware decoding through MediaCodec
+
+ AV_PIX_FMT_GRAY12BE, ///< Y , 12bpp, big-endian
+ AV_PIX_FMT_GRAY12LE, ///< Y , 12bpp, little-endian
+ AV_PIX_FMT_GRAY10BE, ///< Y , 10bpp, big-endian
+ AV_PIX_FMT_GRAY10LE, ///< Y , 10bpp, little-endian
+
+ AV_PIX_FMT_P016LE, ///< like NV12, with 16bpp per component, little-endian
+ AV_PIX_FMT_P016BE, ///< like NV12, with 16bpp per component, big-endian
+
+ (**
+ * Hardware surfaces for Direct3D11.
+ *
+ * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11
+ * hwaccel API and filtering support AV_PIX_FMT_D3D11 only.
+ *
+ * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the
+ * texture array index of the frame as intptr_t if the ID3D11Texture2D is
+ * an array texture (or always 0 if it's a normal texture).
+ *)
+ AV_PIX_FMT_D3D11,
+
+ AV_PIX_FMT_GRAY9BE, ///< Y , 9bpp, big-endian
+ AV_PIX_FMT_GRAY9LE, ///< Y , 9bpp, little-endian
+
+ AV_PIX_FMT_GBRPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian
+ AV_PIX_FMT_GBRPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian
+ AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian
+ AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian
+
+ (**
+ * DRM-managed buffers exposed through PRIME buffer sharing.
+ *
+ * data[0] points to an AVDRMFrameDescriptor.
+ *)
+ AV_PIX_FMT_DRM_PRIME,
+ (**
+ * Hardware surfaces for OpenCL.
+ *
+ * data[i] contain 2D image objects (typed in C as cl_mem, used
+ * in OpenCL as image2d_t) for each plane of the surface.
+ *)
+ AV_PIX_FMT_OPENCL,
+
+ AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
+ );
+
+const
+ AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8; ///< alias for AV_PIX_FMT_YA8
+ AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8; ///< alias for AV_PIX_FMT_YA8
+
+{$IFDEF WORDS_BIGENDIAN}
+ AV_PIX_FMT_RGB32 = AV_PIX_FMT_ARGB;
+ AV_PIX_FMT_RGB32_1 = AV_PIX_FMT_RGBA;
+ AV_PIX_FMT_BGR32 = AV_PIX_FMT_ABGR;
+ AV_PIX_FMT_BGR32_1 = AV_PIX_FMT_BGRA;
+ AV_PIX_FMT_0RGB32 = AV_PIX_FMT_0RGB;
+ AV_PIX_FMT_0BGR32 = AV_PIX_FMT_0BGR;
+
+ AV_PIX_FMT_GRAY9 = AV_PIX_FMT_GRAY9BE;
+ AV_PIX_FMT_GRAY10 = AV_PIX_FMT_GRAY10BE;
+ AV_PIX_FMT_GRAY12 = AV_PIX_FMT_GRAY12BE;
+ AV_PIX_FMT_GRAY16 = AV_PIX_FMT_GRAY16BE;
+ AV_PIX_FMT_YA16 = AV_PIX_FMT_YA16BE;
+ AV_PIX_FMT_RGB48 = AV_PIX_FMT_RGB48BE;
+ AV_PIX_FMT_RGB565 = AV_PIX_FMT_RGB565BE;
+ AV_PIX_FMT_RGB555 = AV_PIX_FMT_RGB555BE;
+ AV_PIX_FMT_RGB444 = AV_PIX_FMT_RGB444BE;
+ AV_PIX_FMT_RGBA64 = AV_PIX_FMT_RGBA64BE;
+ AV_PIX_FMT_BGR48 = AV_PIX_FMT_BGR48BE;
+ AV_PIX_FMT_BGR565 = AV_PIX_FMT_BGR565BE;
+ AV_PIX_FMT_BGR555 = AV_PIX_FMT_BGR555BE;
+ AV_PIX_FMT_BGR444 = AV_PIX_FMT_BGR444BE;
+ AV_PIX_FMT_BGRA64 = AV_PIX_FMT_BGRA64BE;
+
+ AV_PIX_FMT_YUV420P9 = AV_PIX_FMT_YUV420P9BE;
+ AV_PIX_FMT_YUV422P9 = AV_PIX_FMT_YUV422P9BE;
+ AV_PIX_FMT_YUV444P9 = AV_PIX_FMT_YUV444P9BE;
+ AV_PIX_FMT_YUV420P10 = AV_PIX_FMT_YUV420P10BE;
+ AV_PIX_FMT_YUV422P10 = AV_PIX_FMT_YUV422P10BE;
+ AV_PIX_FMT_YUV440P10 = AV_PIX_FMT_YUV440P10BE;
+ AV_PIX_FMT_YUV444P10 = AV_PIX_FMT_YUV444P10BE;
+ AV_PIX_FMT_YUV420P12 = AV_PIX_FMT_YUV420P12BE;
+ AV_PIX_FMT_YUV422P12 = AV_PIX_FMT_YUV422P12BE;
+ AV_PIX_FMT_YUV440P12 = AV_PIX_FMT_YUV440P12BE;
+ AV_PIX_FMT_YUV444P12 = AV_PIX_FMT_YUV444P12BE;
+ AV_PIX_FMT_YUV420P14 = AV_PIX_FMT_YUV420P14BE;
+ AV_PIX_FMT_YUV422P14 = AV_PIX_FMT_YUV422P14BE;
+ AV_PIX_FMT_YUV444P14= AV_PIX_FMT_YUV444P14BE;
+ AV_PIX_FMT_YUV420P16 = AV_PIX_FMT_YUV420P16BE;
+ AV_PIX_FMT_YUV422P16 = AV_PIX_FMT_YUV422P16BE;
+ AV_PIX_FMT_YUV444P16 = AV_PIX_FMT_YUV444P16BE;
+
+ AV_PIX_FMT_GBRP9 = AV_PIX_FMT_GBRP9BE;
+ AV_PIX_FMT_GBRP10 = AV_PIX_FMT_GBRP10BE;
+ AV_PIX_FMT_GBRP12 = AV_PIX_FMT_GBRP12BE;
+ AV_PIX_FMT_GBRP14 = AV_PIX_FMT_GBRP14BE;
+ AV_PIX_FMT_GBRP16 = AV_PIX_FMT_GBRP16BE;
+ AV_PIX_FMT_GBRAP10 = AV_PIX_FMT_GBRAP10BE;
+ AV_PIX_FMT_GBRAP12 = AV_PIX_FMT_GBRAP12BE;
+ AV_PIX_FMT_GBRAP16 = AV_PIX_FMT_GBRAP16BE;
+
+ AV_PIX_FMT_BAYER_BGGR16 = AV_PIX_FMT_BAYER_BGGR16BE;
+ AV_PIX_FMT_BAYER_RGGB16 = AV_PIX_FMT_BAYER_RGGB16BE;
+ AV_PIX_FMT_BAYER_GBRG16 = AV_PIX_FMT_BAYER_GBRG16BE;
+ AV_PIX_FMT_BAYER_GRBG16 = AV_PIX_FMT_BAYER_GRBG16BE;
+
+ AV_PIX_FMT_GBRPF32 = AV_PIX_FMT_GBRPF32BE;
+ AV_PIX_FMT_GBRAPF32 = AV_PIX_FMT_GBRAPF32BE;
+
+ AV_PIX_FMT_YUVA420P9 = AV_PIX_FMT_YUVA420P9BE;
+ AV_PIX_FMT_YUVA422P9 = AV_PIX_FMT_YUVA422P9BE;
+ AV_PIX_FMT_YUVA444P9 = AV_PIX_FMT_YUVA444P9BE;
+ AV_PIX_FMT_YUVA420P10 = AV_PIX_FMT_YUVA420P10BE;
+ AV_PIX_FMT_YUVA422P10 = AV_PIX_FMT_YUVA422P10BE;
+ AV_PIX_FMT_YUVA444P10 = AV_PIX_FMT_YUVA444P10BE;
+ AV_PIX_FMT_YUVA420P16 = AV_PIX_FMT_YUVA420P16BE;
+ AV_PIX_FMT_YUVA422P16 = AV_PIX_FMT_YUVA422P16BE;
+ AV_PIX_FMT_YUVA444P16 = AV_PIX_FMT_YUVA444P16BE;
+
+ AV_PIX_FMT_XYZ12 = AV_PIX_FMT_XYZ12BE;
+ AV_PIX_FMT_NV20 = AV_PIX_FMT_NV20BE;
+ AV_PIX_FMT_AYUV64 = AV_PIX_FMT_AYUV64BE;
+ AV_PIX_FMT_P010 = AV_PIX_FMT_P010BE;
+ AV_PIX_FMT_P016 = AV_PIX_FMT_P016BE;
+
+{$ELSE}
+ AV_PIX_FMT_RGB32 = AV_PIX_FMT_BGRA;
+ AV_PIX_FMT_RGB32_1 = AV_PIX_FMT_ABGR;
+ AV_PIX_FMT_BGR32 = AV_PIX_FMT_RGBA;
+ AV_PIX_FMT_BGR32_1 = AV_PIX_FMT_ARGB;
+ AV_PIX_FMT_0RGB32 = AV_PIX_FMT_BGR0;
+ AV_PIX_FMT_0BGR32 = AV_PIX_FMT_RGB0;
+
+ AV_PIX_FMT_GRAY9 = AV_PIX_FMT_GRAY9LE;
+ AV_PIX_FMT_GRAY10 = AV_PIX_FMT_GRAY10LE;
+ AV_PIX_FMT_GRAY12 = AV_PIX_FMT_GRAY12LE;
+ AV_PIX_FMT_GRAY16 = AV_PIX_FMT_GRAY16LE;
+ AV_PIX_FMT_YA16 = AV_PIX_FMT_YA16LE;
+ AV_PIX_FMT_RGB48 = AV_PIX_FMT_RGB48LE;
+ AV_PIX_FMT_RGB565 = AV_PIX_FMT_RGB565LE;
+ AV_PIX_FMT_RGB555 = AV_PIX_FMT_RGB555LE;
+ AV_PIX_FMT_RGB444 = AV_PIX_FMT_RGB444LE;
+ AV_PIX_FMT_RGBA64 = AV_PIX_FMT_RGBA64LE;
+ AV_PIX_FMT_BGR48 = AV_PIX_FMT_BGR48LE;
+ AV_PIX_FMT_BGR565 = AV_PIX_FMT_BGR565LE;
+ AV_PIX_FMT_BGR555 = AV_PIX_FMT_BGR555LE;
+ AV_PIX_FMT_BGR444 = AV_PIX_FMT_BGR444LE;
+ AV_PIX_FMT_BGRA64 = AV_PIX_FMT_BGRA64LE;
+
+ AV_PIX_FMT_YUV420P9 = AV_PIX_FMT_YUV420P9LE;
+ AV_PIX_FMT_YUV422P9 = AV_PIX_FMT_YUV422P9LE;
+ AV_PIX_FMT_YUV444P9 = AV_PIX_FMT_YUV444P9LE;
+ AV_PIX_FMT_YUV420P10 = AV_PIX_FMT_YUV420P10LE;
+ AV_PIX_FMT_YUV422P10 = AV_PIX_FMT_YUV422P10LE;
+ AV_PIX_FMT_YUV440P10 = AV_PIX_FMT_YUV440P10LE;
+ AV_PIX_FMT_YUV444P10 = AV_PIX_FMT_YUV444P10LE;
+ AV_PIX_FMT_YUV420P12 = AV_PIX_FMT_YUV420P12LE;
+ AV_PIX_FMT_YUV422P12 = AV_PIX_FMT_YUV422P12LE;
+ AV_PIX_FMT_YUV440P12 = AV_PIX_FMT_YUV440P12LE;
+ AV_PIX_FMT_YUV444P12 = AV_PIX_FMT_YUV444P12LE;
+ AV_PIX_FMT_YUV420P14 = AV_PIX_FMT_YUV420P14LE;
+ AV_PIX_FMT_YUV422P14 = AV_PIX_FMT_YUV422P14LE;
+ AV_PIX_FMT_YUV444P14= AV_PIX_FMT_YUV444P14LE;
+ AV_PIX_FMT_YUV420P16 = AV_PIX_FMT_YUV420P16LE;
+ AV_PIX_FMT_YUV422P16 = AV_PIX_FMT_YUV422P16LE;
+ AV_PIX_FMT_YUV444P16 = AV_PIX_FMT_YUV444P16LE;
+
+ AV_PIX_FMT_GBRP9 = AV_PIX_FMT_GBRP9LE;
+ AV_PIX_FMT_GBRP10 = AV_PIX_FMT_GBRP10LE;
+ AV_PIX_FMT_GBRP12 = AV_PIX_FMT_GBRP12LE;
+ AV_PIX_FMT_GBRP14 = AV_PIX_FMT_GBRP14LE;
+ AV_PIX_FMT_GBRP16 = AV_PIX_FMT_GBRP16LE;
+ AV_PIX_FMT_GBRAP10 = AV_PIX_FMT_GBRAP10LE;
+ AV_PIX_FMT_GBRAP12 = AV_PIX_FMT_GBRAP12LE;
+ AV_PIX_FMT_GBRAP16 = AV_PIX_FMT_GBRAP16LE;
+
+ AV_PIX_FMT_BAYER_BGGR16 = AV_PIX_FMT_BAYER_BGGR16LE;
+ AV_PIX_FMT_BAYER_RGGB16 = AV_PIX_FMT_BAYER_RGGB16LE;
+ AV_PIX_FMT_BAYER_GBRG16 = AV_PIX_FMT_BAYER_GBRG16LE;
+ AV_PIX_FMT_BAYER_GRBG16 = AV_PIX_FMT_BAYER_GRBG16LE;
+
+ AV_PIX_FMT_GBRPF32 = AV_PIX_FMT_GBRPF32LE;
+ AV_PIX_FMT_GBRAPF32 = AV_PIX_FMT_GBRAPF32LE;
+
+ AV_PIX_FMT_YUVA420P9 = AV_PIX_FMT_YUVA420P9LE;
+ AV_PIX_FMT_YUVA422P9 = AV_PIX_FMT_YUVA422P9LE;
+ AV_PIX_FMT_YUVA444P9 = AV_PIX_FMT_YUVA444P9LE;
+ AV_PIX_FMT_YUVA420P10 = AV_PIX_FMT_YUVA420P10LE;
+ AV_PIX_FMT_YUVA422P10 = AV_PIX_FMT_YUVA422P10LE;
+ AV_PIX_FMT_YUVA444P10 = AV_PIX_FMT_YUVA444P10LE;
+ AV_PIX_FMT_YUVA420P16 = AV_PIX_FMT_YUVA420P16LE;
+ AV_PIX_FMT_YUVA422P16 = AV_PIX_FMT_YUVA422P16LE;
+ AV_PIX_FMT_YUVA444P16 = AV_PIX_FMT_YUVA444P16LE;
+
+ AV_PIX_FMT_XYZ12 = AV_PIX_FMT_XYZ12LE;
+ AV_PIX_FMT_NV20 = AV_PIX_FMT_NV20LE;
+ AV_PIX_FMT_AYUV64 = AV_PIX_FMT_AYUV64LE;
+ AV_PIX_FMT_P010 = AV_PIX_FMT_P010LE;
+ AV_PIX_FMT_P016 = AV_PIX_FMT_P016LE;
+{$ENDIF}
+
+type
+(**
+ * Chromaticity coordinates of the source primaries.
+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.1.
+ *)
+ TAVColorPrimaries = (
+ AVCOL_PRI_RESERVED0 = 0,
+ AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
+ AVCOL_PRI_UNSPECIFIED = 2,
+ AVCOL_PRI_RESERVED = 3,
+ AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
+ AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
+ AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
+ AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above
+ AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C
+ AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020
+ AVCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ)
+ AVCOL_PRI_SMPTEST428_1 = AVCOL_PRI_SMPTE428,
+ AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3
+ AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3
+ AVCOL_PRI_JEDEC_P22 = 22, ///< JEDEC P22 phosphors
+ AVCOL_PRI_NB ///< Not part of ABI
+ );
+
+(**
+ * Color Transfer Characteristic.
+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.2.
+ *)
+ TAVColorTransferCharacteristic = (
+ AVCOL_TRC_RESERVED0 = 0,
+ AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361
+ AVCOL_TRC_UNSPECIFIED = 2,
+ AVCOL_TRC_RESERVED = 3,
+ AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
+ AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG
+ AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
+ AVCOL_TRC_SMPTE240M = 7,
+ AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics"
+ AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)"
+ AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
+ AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4
+ AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut
+ AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC)
+ AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system
+ AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system
+ AVCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems
+ AVCOL_TRC_SMPTEST2084 = AVCOL_TRC_SMPTE2084,
+ AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1
+ AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428,
+ AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma"
+ AVCOL_TRC_NB ///< Not part of ABI
+ );
+
+(**
+ * YUV colorspace type.
+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.3.
+ *)
+ TAVColorSpace = (
+ AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB)
+ AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
+ AVCOL_SPC_UNSPECIFIED = 2,
+ AVCOL_SPC_RESERVED = 3,
+ AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
+ AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
+ AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
+ AVCOL_SPC_SMPTE240M = 7, ///< functionally identical to above
+ AVCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
+ AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO,
+ AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system
+ AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system
+ AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x
+ AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system
+ AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system
+ AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp
+ AVCOL_SPC_NB ///< Not part of ABI
+ );
+
+type
+(**
+ * MPEG vs JPEG YUV range.
+ *)
+ TAVColorRange = (
+ AVCOL_RANGE_UNSPECIFIED = 0,
+ AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
+ AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
+ AVCOL_RANGE_NB ///< Not part of ABI
+ );
+
+(**
+ * Location of chroma samples.
+ *
+ * Illustration showing the location of the first (top left) chroma sample of the
+ * image, the left shows only luma, the right
+ * shows the location of the chroma sample, the 2 could be imagined to overlay
+ * each other but are drawn separately due to limitations of ASCII
+ *
+ * 1st 2nd 1st 2nd horizontal luma sample positions
+ * v v v v
+ * ______ ______
+ *1st luma line > |X X ... |3 4 X ... X are luma samples,
+ * | |1 2 1-6 are possible chroma positions
+ *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position
+ *)
+ TAVChromaLocation = (
+ AVCHROMA_LOC_UNSPECIFIED = 0,
+ AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0
+ AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0
+ AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2
+ AVCHROMA_LOC_TOP = 4,
+ AVCHROMA_LOC_BOTTOMLEFT = 5,
+ AVCHROMA_LOC_BOTTOM = 6,
+ AVCHROMA_LOC_NB ///< Not part of ABI
+ );
diff --git a/src/lib/ffmpeg-4.0/libavutil/samplefmt.pas b/src/lib/ffmpeg-4.0/libavutil/samplefmt.pas
new file mode 100644
index 00000000..85b11305
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/libavutil/samplefmt.pas
@@ -0,0 +1,287 @@
+(*
+ * SampleFormat
+ * copyright (c) 2011 Karl-Michael Schindler
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of the Pascal port of ffmpeg.
+ *
+ * Conversion of libavutil/samplefmt.h
+ * avutil version 54.7.100
+ *
+ *)
+
+type
+(**
+ * @addtogroup lavu_audio
+ * @
+ *
+ * @defgroup lavu_sampfmts Audio sample formats
+ *
+ * Audio sample format enumeration and related convenience functions.
+ * @
+ *)
+
+(**
+ * Audio sample formats
+ *
+ * - The data described by the sample format is always in native-endian order.
+ * Sample values can be expressed by native C types, hence the lack of a signed
+ * 24-bit sample format even though it is a common raw audio data format.
+ *
+ * - The floating-point formats are based on full volume being in the range
+ * [-1.0, 1.0]. Any values outside this range are beyond full volume level.
+ *
+ * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg
+ * (such as AVFrame in libavcodec) is as follows:
+ *
+ * @par
+ * For planar sample formats, each audio channel is in a separate data plane,
+ * and linesize is the buffer size, in bytes, for a single plane. All data
+ * planes must be the same size. For packed sample formats, only the first data
+ * plane is used, and samples for each channel are interleaved. In this case,
+ * linesize is the buffer size, in bytes, for the 1 plane.
+ *
+ *)
+ TAVSampleFormat = (
+ AV_SAMPLE_FMT_NONE = -1,
+ AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
+ AV_SAMPLE_FMT_S16, ///< signed 16 bits
+ AV_SAMPLE_FMT_S32, ///< signed 32 bits
+ AV_SAMPLE_FMT_FLT, ///< float
+ AV_SAMPLE_FMT_DBL, ///< double
+
+ AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar
+ AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar
+ AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar
+ AV_SAMPLE_FMT_FLTP, ///< float, planar
+ AV_SAMPLE_FMT_DBLP, ///< double, planar
+ AV_SAMPLE_FMT_S64, ///< signed 64 bits
+ AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar
+
+ AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
+ );
+ TAVSampleFormatArray = array [0 .. MaxInt div SizeOf(TAVSampleFormat) - 1] of TAVSampleFormat;
+ PAVSampleFormatArray = ^TAVSampleFormatArray;
+
+(**
+ * Return the name of sample_fmt, or NULL if sample_fmt is not
+ * recognized.
+ *)
+function av_get_sample_fmt_name(sample_fmt: TAVSampleFormat): {const} PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE
+ * on error.
+ *)
+function av_get_sample_fmt(name: {const} PAnsiChar): TAVSampleFormat;
+ cdecl; external av__util;
+
+(**
+ * Return the planar<->packed alternative form of the given sample format, or
+ * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the
+ * requested planar/packed format, the format returned is the same as the
+ * input.
+ *)
+function av_get_alt_sample_fmt(sample_fmt: TAVSampleFormat; planar: cint): TAVSampleFormat;
+ cdecl; external av__util;
+
+(**
+ * Get the packed alternative form of the given sample format.
+ *
+ * If the passed sample_fmt is already in packed format, the format returned is
+ * the same as the input.
+ *
+ * @return the packed alternative form of the given sample format or
+ AV_SAMPLE_FMT_NONE on error.
+ *)
+function av_get_packed_sample_fmt(sample_fmt: TAVSampleFormat): TAVSampleFormat;
+ cdecl; external av__util;
+
+(**
+ * Get the planar alternative form of the given sample format.
+ *
+ * If the passed sample_fmt is already in planar format, the format returned is
+ * the same as the input.
+ *
+ * @return the planar alternative form of the given sample format or
+ AV_SAMPLE_FMT_NONE on error.
+ *)
+function av_get_planar_sample_fmt(sample_fmt: TAVSampleFormat): TAVSampleFormat;
+ cdecl; external av__util;
+
+(**
+ * Generate a string corresponding to the sample format with
+ * sample_fmt, or a header if sample_fmt is negative.
+ *
+ * @param buf the buffer where to write the string
+ * @param buf_size the size of buf
+ * @param sample_fmt the number of the sample format to print the
+ * corresponding info string, or a negative value to print the
+ * corresponding header.
+ * @return the pointer to the filled buffer or NULL if sample_fmt is
+ * unknown or in case of other errors
+ *)
+function av_get_sample_fmt_string(buf: PAnsiChar; buf_size: cint; sample_fmt: TAVSampleFormat): PAnsiChar;
+ cdecl; external av__util;
+
+(**
+ * Return number of bytes per sample.
+ *
+ * @param sample_fmt the sample format
+ * @return number of bytes per sample or zero if unknown for the given
+ * sample format
+ *)
+function av_get_bytes_per_sample(sample_fmt: TAVSampleFormat): cint;
+ cdecl; external av__util;
+
+type
+ OctArrayOfPcuint8 = array[0..7] of Pcuint8;
+ OctArrayOfcint = array[0..7] of cint;
+
+(**
+ * Check if the sample format is planar.
+ *
+ * @param sample_fmt the sample format to inspect
+ * @return 1 if the sample format is planar, 0 if it is interleaved
+ *)
+function av_sample_fmt_is_planar(sample_fmt: TAVSampleFormat): cint;
+ cdecl; external av__util;
+
+(**
+ * Get the required buffer size for the given audio parameters.
+ *
+ * @param[out] linesize calculated linesize, may be NULL
+ * @param nb_channels the number of channels
+ * @param nb_samples the number of samples in a single channel
+ * @param sample_fmt the sample format
+ * @param align buffer size alignment (0 = default, 1 = no alignment)
+ * @return required buffer size, or negative error code on failure
+ *)
+function av_samples_get_buffer_size(linesize: Pcint; nb_channels: cint; nb_samples: cint;
+ sample_fmt: TAVSampleFormat; align: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * @
+ *
+ * @defgroup lavu_sampmanip Samples manipulation
+ *
+ * Functions that manipulate audio samples
+ * @
+ *)
+
+(**
+ * Fill plane data pointers and linesize for samples with sample
+ * format sample_fmt.
+ *
+ * The audio_data array is filled with the pointers to the samples data planes:
+ * for planar, set the start point of each channel's data within the buffer,
+ * for packed, set the start point of the entire buffer only.
+ *
+ * The value pointed to by linesize is set to the aligned size of each
+ * channel's data buffer for planar layout, or to the aligned size of the
+ * buffer for all channels for packed layout.
+ *
+ * The buffer in buf must be big enough to contain all the samples
+ * (use av_samples_get_buffer_size() to compute its minimum size),
+ * otherwise the audio_data pointers will point to invalid data.
+ *
+ * @see enum AVSampleFormat
+ * The documentation for AVSampleFormat describes the data layout.
+ *
+ * @param[out] audio_data array to be filled with the pointer for each channel
+ * @param[out] linesize calculated linesize, may be NULL
+ * @param buf the pointer to a buffer containing the samples
+ * @param nb_channels the number of channels
+ * @param nb_samples the number of samples in a single channel
+ * @param sample_fmt the sample format
+ * @param align buffer size alignment (0 = default, 1 = no alignment)
+ * @return >=0 on success or a negative error code on failure
+ * @todo return minimum size in bytes required for the buffer in case
+ * of success at the next bump
+ *)
+function av_samples_fill_arrays(var audio_data: Pcuint8; linesize: Pcint;
+ buf: Pcuint8;
+ nb_channels: cint; nb_samples: cint;
+ sample_fmt: TAVSampleFormat; align: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Allocate a samples buffer for nb_samples samples, and fill data pointers and
+ * linesize accordingly.
+ * The allocated samples buffer can be freed by using av_freep(&audio_data[0])
+ *
+ * @see enum AVSampleFormat
+ * The documentation for AVSampleFormat describes the data layout.
+ *
+ * @param[out] audio_data array to be filled with the pointer for each channel
+ * @param[out] linesize aligned size for audio buffer(s), may be NULL
+ * @param nb_channels number of audio channels
+ * @param nb_samples number of samples per channel
+ * @param align buffer size alignment (0 = default, 1 = no alignment)
+ * @return >=0 on success or a negative error code on failure
+ * @todo return the size of the allocated buffer in case of success at the next bump
+ * @see av_samples_fill_arrays()
+ * @see av_samples_alloc_array_and_samples()
+ *)
+function av_samples_alloc(var audio_data: Pcuint8; linesize: Pcint;
+ nb_channels: cint; nb_samples: cint;
+ sample_fmt: TAVSampleFormat; align: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Allocate a data pointers array, samples buffer for nb_samples
+ * samples, and fill data pointers and linesize accordingly.
+ *
+ * This is the same as av_samples_alloc(), but also allocates the data
+ * pointers array.
+ *
+ * @see av_samples_alloc()
+ *)
+function av_samples_alloc_array_and_samples(var audio_data: Pcuint8; linesize: Pcint;
+ nb_channels: cint; nb_samples: cint;
+ sample_fmt: TAVSampleFormat; align: cint): cint;
+ cdecl; external av__util;
+
+(**
+ * Copy samples from src to dst.
+ *
+ * @param dst destination array of pointers to data planes
+ * @param src source array of pointers to data planes
+ * @param dst_offset offset in samples at which the data will be written to dst
+ * @param src_offset offset in samples at which the data will be read from src
+ * @param nb_samples number of samples to be copied
+ * @param nb_channels number of audio channels
+ * @param sample_fmt audio sample format
+ *)
+function av_samples_copy(var dst: Pcuint8; src: {const} Pcuint8; dst_offset: cint;
+ src_offset: cint; nb_samples: cint; nb_channels: cint;
+ sample_fmt: TAVSampleFormat): cint;
+ cdecl; external av__util;
+
+(**
+ * Fill an audio buffer with silence.
+ *
+ * @param audio_data array of pointers to data planes
+ * @param offset offset in samples at which to start filling
+ * @param nb_samples number of samples to fill
+ * @param nb_channels number of audio channels
+ * @param sample_fmt audio sample format
+ *)
+function av_samples_set_silence(var audio_data: Pcuint8; offset: cint; nb_samples: cint;
+ nb_channels: cint; sample_fmt: TAVSampleFormat): cint;
+ cdecl; external av__util;
diff --git a/src/lib/ffmpeg-4.0/rational.pas b/src/lib/ffmpeg-4.0/rational.pas
new file mode 100644
index 00000000..d7fcb5b2
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/rational.pas
@@ -0,0 +1,270 @@
+(*
+ * rational numbers
+ * Copyright (c) 2003 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of libavutil/rational.h
+ * avutil version 54.7.100
+ *
+ *)
+
+unit rational;
+
+{$IFDEF FPC}
+ {$MODE DELPHI}
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I switches.inc}
+
+interface
+
+uses
+ ctypes,
+ UConfig;
+
+(**
+ * @addtogroup lavu_math
+ * @{
+ *)
+
+type
+(**
+ * Rational number (pair of numerator and denominator).
+ *)
+ PAVRational = ^TAVRational;
+ TAVRational = record
+ num: cint; ///< Numerator
+ den: cint; ///< Denominator
+ end;
+
+ TAVRationalArray = array[0 .. (MaxInt div SizeOf(TAVRational))-1] of TAVRational;
+ PAVRationalArray = ^TAVRationalArray;
+
+(**
+ * Create an AVRational.
+ *
+ * Useful for compilers that do not support compound literals.
+ *
+ * @note The return value is not reduced.
+ * @see av_reduce()
+ */
+static inline AVRational av_make_q(int num, int den)
+{
+ AVRational r = { num, den };
+ return r;
+}
+
+/**)
+
+(**
+ * Create an AVRational.
+ *
+ * Useful for compilers that do not support compound literals.
+ *
+ * @note The return value is not reduced.
+ * @see av_reduce()
+ *)
+function av_make_q(num, den: cint): TAVRational; {$IFDEF HasInline}inline;{$ENDIF}
+
+(**
+ * Compare two rationals.
+ *
+ * @param a First rational
+ * @param b Second rational
+ *
+ * @return One of the following values:
+ * - 0 if `a == b`
+ * - 1 if `a > b`
+ * - -1 if `a < b`
+ * - `INT_MIN` if one of the values is of the form `0 / 0`
+ *)
+function av_cmp_q(a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
+
+(**
+ * Convert an AVRational to a `double`.
+ * @param a AVRational to convert
+ * @return `a` in floating-point form
+ * @see av_d2q()
+ *)
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
+
+(**
+ * Reduce a fraction.
+ *
+ * This is useful for framerate calculations.
+ *
+ * @param[out] dst_num Destination numerator
+ * @param[out] dst_den Destination denominator
+ * @param[in] num Source numerator
+ * @param[in] den Source denominator
+ * @param[in] max Maximum allowed values for `dst_num` & `dst_den`
+ * @return 1 if the operation is exact, 0 otherwise
+ *)
+function av_reduce(dst_num: PCint; dst_den: PCint; num: cint64; den: cint64; max: cint64): cint;
+ cdecl; external av__util;
+
+(**
+ * Multiply two rationals.
+ * @param b First rational
+ * @param c Second rational
+ * @return b*c
+ *)
+function av_mul_q(b: TAVRational; c: TAVRational): TAVRational;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Divide one rational by another.
+ * @param b First rational
+ * @param c Second rational
+ * @return b/c
+ *)
+function av_div_q(b: TAVRational; c: TAVRational): TAVRational;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Add two rationals.
+ * @param b First rational
+ * @param c Second rational
+ * @return b+c
+ *)
+function av_add_q(b: TAVRational; c: TAVRational): TAVRational;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Subtract one rational from another.
+ * @param b First rational
+ * @param c Second rational
+ * @return b-c
+ *)
+function av_sub_q(b: TAVRational; c: TAVRational): TAVRational;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Invert a rational.
+ * @param q value
+ * @return 1 / q
+ *)
+function av_inv_q(q: TAVRational): TAVRational; {$IFDEF HasInline}inline;{$ENDIF}
+
+(**
+ * Convert a double precision floating point number to a rational.
+ *
+ * In case of infinity, the returned value is expressed as `{1, 0}` or
+ * `{-1, 0}` depending on the sign.
+ *
+ * @param d `double` to convert
+ * @param max Maximum allowed numerator and denominator
+ * @return `d` in AVRational form
+ * @see av_q2d()
+ *)
+function av_d2q(d: cdouble; max: cint): TAVRational;
+ cdecl; external av__util; {av_const}
+
+(**
+ * Find which of the two rationals is closer to another rational.
+ *
+ * @param q Rational to be compared against
+ * @param q1,q2 Rationals to be tested
+ * @return One of the following values:
+ * - 1 if `q1` is nearer to `q` than `q2`
+ * - -1 if `q2` is nearer to `q` than `q1`
+ * - 0 if they have the same distance
+ *)
+function av_nearer_q(q, q1, q2: TAVRational): cint;
+ cdecl; external av__util;
+
+(**
+ * Find the value in a list of rationals nearest a given reference rational.
+ *
+ * @param q Reference rational
+ * @param q_list Array of rationals terminated by `{0, 0}`
+ * @return Index of the nearest value found in the array
+ *)
+function av_find_nearest_q_idx(q: TAVRational; q_list: {const} PAVRationalArray): cint;
+ cdecl; external av__util;
+
+(**
+ * Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point
+ * format.
+ *
+ * @param q Rational to be converted
+ * @return Equivalent floating-point value, expressed as an unsigned 32-bit
+ * integer.
+ * @note The returned value is platform-indepedant.
+ *)
+function av_q2intfloat(q: TAVRational): cuint32;
+ cdecl; external av__util;
+
+implementation
+
+function av_cmp_q (a: TAVRational; b: TAVRational): cint; {$IFDEF HasInline}inline;{$ENDIF}
+var
+ tmp: cint64;
+begin
+ tmp := a.num * cint64(b.den) - b.num * cint64(a.den);
+
+{ old version
+ if (tmp <> 0) then
+ Result := (tmp shr 63) or 1
+ else
+ Result := 0;
+}
+{ C original:
+ if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
+ else if(b.den && a.den) return 0;
+ else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
+ else return INT_MIN;
+}
+
+ if tmp <> 0 then
+ Result := ((tmp xor a.den xor b.den) shr 63) or 1
+ else if (b.den and a.den) <> 0 then
+ Result := 0
+ else if (a.num and b.num) <> 0 then
+ Result := (a.num shr 31) - (b.num shr 31)
+ else
+ Result := low(cint);
+
+end;
+
+function av_q2d(a: TAVRational): cdouble; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result := a.num / a.den;
+end;
+
+function av_inv_q(q: TAVRational): TAVRational; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result.num := q.den;
+ Result.den := q.num;
+end;
+
+function av_make_q(num, den: cint): TAVRational; {$IFDEF HasInline}inline;{$ENDIF}
+begin
+ Result.num := num;
+ Result.den := den;
+end;
+
+end.
diff --git a/src/lib/ffmpeg-4.0/swresample.pas b/src/lib/ffmpeg-4.0/swresample.pas
new file mode 100644
index 00000000..aea02d36
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/swresample.pas
@@ -0,0 +1,467 @@
+(*
+ * copyright (c) 2006 Michael Niedermayer
+ *
+ * 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 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * This is a part of Pascal porting of ffmpeg.
+ * - Originally by Victor Zinetz for Delphi and Free Pascal on Windows.
+ * - For Mac OS X, some modifications were made by The Creative CAT, denoted as CAT
+ * in the source codes.
+ * - Changes and updates by the UltraStar Deluxe Team
+ *
+ * Conversion of
+ *
+ * libswresample/swresample.h:
+ * version: 0.18.100
+ *
+ *)
+
+
+unit swresample;
+
+{$IFDEF FPC}
+ {$MODE DELPHI}
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$IFDEF DARWIN}
+ {$linklib swresample}
+{$ENDIF}
+
+interface
+
+uses
+ ctypes,
+ avutil,
+ rational,
+ {$IFDEF UNIX}
+ BaseUnix,
+ {$ENDIF}
+ UConfig;
+
+const
+ (*
+ * IMPORTANT: The official FFmpeg C headers change very quickly. Often some
+ * of the data structures are changed so that they become incompatible with
+ * older header files. The Pascal headers have to be adjusted to those changes,
+ * otherwise the application might crash randomly or strange bugs (not
+ * necessarily related to video or audio due to buffer overflows etc.) might
+ * occur.
+ *
+ * In the past users reported problems with USDX that took hours to fix and
+ * the problem was an unsupported version of FFmpeg. So we decided to disable
+ * support for future versions of FFmpeg until the headers are revised by us
+ * for that version as they otherwise most probably will break USDX.
+ *
+ * If the headers do not yet support your FFmpeg version you may want to
+ * adjust the max. version numbers manually but please note: it may work but
+ * in many cases it does not. The USDX team does NOT PROVIDE ANY SUPPORT
+ * for the game if the MAX. VERSION WAS CHANGED.
+ *
+ * The only safe way to support new versions of FFmpeg is to add the changes
+ * of the FFmpeg git repository C headers to the Pascal headers.
+ * You can accelerate this process by posting a patch with the git changes
+ * translated to Pascal to our bug tracker (please join our IRC chat before
+ * you start working on it). Simply adjusting the max. versions is NOT a valid
+ * fix.
+ *)
+
+ (* Supported version by this header *)
+ LIBSWRESAMPLE_MAX_VERSION_MAJOR = 3;
+ LIBSWRESAMPLE_MAX_VERSION_MINOR = 3;
+ LIBSWRESAMPLE_MAX_VERSION_RELEASE = 100;
+ LIBSWRESAMPLE_MAX_VERSION = (LIBSWRESAMPLE_MAX_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBSWRESAMPLE_MAX_VERSION_MINOR * VERSION_MINOR) +
+ (LIBSWRESAMPLE_MAX_VERSION_RELEASE * VERSION_RELEASE);
+
+ (* Min. supported version by this header *)
+ LIBSWRESAMPLE_MIN_VERSION_MAJOR = 3;
+ LIBSWRESAMPLE_MIN_VERSION_MINOR = 1;
+ LIBSWRESAMPLE_MIN_VERSION_RELEASE = 100;
+ LIBSWRESAMPLE_MIN_VERSION = (LIBSWRESAMPLE_MIN_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBSWRESAMPLE_MIN_VERSION_MINOR * VERSION_MINOR) +
+ (LIBSWRESAMPLE_MIN_VERSION_RELEASE * VERSION_RELEASE);
+
+(* Check if linked versions are supported *)
+{$IF (LIBSWRESAMPLE_VERSION < LIBSWRESAMPLE_MIN_VERSION)}
+ {$MESSAGE Error 'Linked version of libswresample is too old!'}
+{$IFEND}
+
+(* Check if linked version is supported *)
+{$IF (LIBSWRESAMPLE_VERSION > LIBSWRESAMPLE_MAX_VERSION)}
+ {$MESSAGE Error 'Linked version of libswresample is not yet supported!'}
+{$IFEND}
+
+{$IF LIBSWRESAMPLE_VERSION_MAJOR < 1}
+ SWR_CH_MAX = 32; (* < Maximum number of channels *)
+{$ENDIF}
+ SWR_FLAG_RESAMPLE = 1; (* < Force resampling even if equal sample rate *)
+
+type
+(** Dithering algorithms *)
+ TSwrDitherType = (
+ SWR_DITHER_NONE = 0,
+ SWR_DITHER_RECTANGULAR,
+ SWR_DITHER_TRIANGULAR,
+ SWR_DITHER_TRIANGULAR_HIGHPASS,
+
+ SWR_DITHER_NS = 64, (* < not part of API/ABI *)
+ SWR_DITHER_NS_LIPSHITZ,
+ SWR_DITHER_NS_F_WEIGHTED,
+ SWR_DITHER_NS_MODIFIED_E_WEIGHTED,
+ SWR_DITHER_NS_IMPROVED_E_WEIGHTED,
+ SWR_DITHER_NS_SHIBATA,
+ SWR_DITHER_NS_LOW_SHIBATA,
+ SWR_DITHER_NS_HIGH_SHIBATA,
+ SWR_DITHER_NB (* < not part of API/ABI *)
+ );
+
+(** Resampling Engines *)
+ TSwrEngine = (
+ SWR_ENGINE_SWR, (* < SW Resampler *)
+ SWR_ENGINE_SOXR, (* < SoX Resampler *)
+ SWR_ENGINE_NB (* < not part of API/ABI *)
+ );
+
+(** Resampling Filter Types *)
+ TSwrFilterType = (
+ SWR_FILTER_TYPE_CUBIC, (* < Cubic *)
+ SWR_FILTER_TYPE_BLACKMAN_NUTTALL, (* < Blackman Nuttall windowed sinc *)
+ SWR_FILTER_TYPE_KAISER (* < Kaiser windowed sinc *)
+ );
+
+(**
+ * The libswresample context. Unlike libavcodec and libavformat, this structure
+ * is opaque. This means that if you would like to set options, you must use
+ * the @ref avoptions API and cannot directly set values to members of the
+ * structure.
+ *)
+ PPSwrContext= ^PSwrContext;
+ PSwrContext = ^TSwrContext;
+ TSwrContext = record
+ end;
+
+{$INCLUDE libavcodec/audioconvert.pas}
+
+(**
+ * Get the AVClass for swrContext. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function swr_get_class(): PAVClass;
+ cdecl; external sw__resample;
+
+(**
+ * Allocate SwrContext.
+ *
+ * If you use this function you will need to set the parameters (manually or
+ * with swr_alloc_set_opts()) before calling swr_init().
+ *
+ * @see swr_alloc_set_opts(), swr_init(), swr_free()
+ * @return NULL on error, allocated context otherwise
+ *)
+function swr_alloc(): PSwrContext;
+ cdecl; external sw__resample;
+
+(**
+ * Initialize context after user parameters have been set.
+ *
+ * @see av_opt_set_int()
+ * @see av_opt_set_dict()
+ *
+ * @param[in,out] s Swr context to initialize
+ * @return AVERROR error code in case of failure.
+ *)
+function swr_init(s: PSwrContext): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Check whether an swr context has been initialized or not.
+ *
+ * @param[in] s Swr context to check
+ * @see swr_init()
+ * @return positive if it has been initialized, 0 if not initialized
+ *)
+function swr_is_initialized(s: PSwrContext): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Allocate SwrContext if needed and set/reset common parameters.
+ *
+ * This function does not require s to be allocated with swr_alloc(). On the
+ * other hand, swr_alloc() can use swr_alloc_set_opts() to set the parameters
+ * on the allocated context.
+ *
+ * @param s existing Swr context if available, or NULL if not
+ * @param out_ch_layout output channel layout (AV_CH_LAYOUT_* )
+ * @param out_sample_fmt output sample format (AV_SAMPLE_FMT_* ).
+ * @param out_sample_rate output sample rate (frequency in Hz)
+ * @param in_ch_layout input channel layout (AV_CH_LAYOUT_* )
+ * @param in_sample_fmt input sample format (AV_SAMPLE_FMT_* ).
+ * @param in_sample_rate input sample rate (frequency in Hz)
+ * @param log_offset logging level offset
+ * @param log_ctx parent logging context, can be NULL
+ *
+ * @see swr_init(), swr_free()
+ * @return NULL on error, allocated context otherwise
+ *)
+function swr_alloc_set_opts(s: PSwrContext;
+ out_ch_layout: cint64; out_sample_fmt: TAVSampleFormat; out_sample_rate: cint;
+ in_ch_layout: cint64; in_sample_fmt: TAVSampleFormat; in_sample_rate: cint;
+ log_offset: cint; log_ctx: pointer): PSwrContext;
+ cdecl; external sw__resample;
+
+(**
+ * Free the given SwrContext and set the pointer to NULL.
+ *
+ * @param[in] s a pointer to a pointer to Swr context
+ *)
+procedure swr_free(s: PPSwrContext);
+ cdecl; external sw__resample;
+
+(**
+ * Closes the context so that swr_is_initialized() returns 0.
+ *
+ * The context can be brought back to life by running swr_init(),
+ * swr_init() can also be used without swr_close().
+ * This function is mainly provided for simplifying the usecase
+ * where one tries to support libavresample and libswresample.
+ *
+ * @param[in,out] s Swr context to be closed
+ *)
+procedure swr_close(s: PSwrContext);
+ cdecl; external sw__resample;
+
+(**
+ * Convert audio.
+ *
+ * in and in_count can be set to 0 to flush the last few samples out at the
+ * end.
+ *
+ * If more input is provided than output space, then the input will be buffered.
+ * You can avoid this buffering by using swr_get_out_samples() to retrieve an
+ * upper bound on the required number of output samples for the given number of
+ * input samples. Conversion will run directly without copying whenever possible.
+ *
+ * @param s allocated Swr context, with parameters set
+ * @param out output buffers, only the first one need be set in case of packed audio
+ * @param out_count amount of space available for output in samples per channel
+ * @param in input buffers, only the first one need to be set in case of packed audio
+ * @param in_count number of input samples available in one channel
+ *
+ * @return number of samples output per channel, negative value on error
+ *)
+function swr_convert(s: PSwrContext; var out_: PByte; out_count: cint;
+ var in_: {const} PByte; in_count: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Convert the next timestamp from input to output
+ * timestamps are in 1/(in_sample_rate * out_sample_rate) units.
+ *
+ * @note There are 2 slightly differently behaving modes.
+ * First is when automatic timestamp compensation is not used, (min_compensation >= FLT_MAX)
+ * in this case timestamps will be passed through with delays compensated
+ * Second is when automatic timestamp compensation is used, (min_compensation < FLT_MAX)
+ * in this case the output timestamps will match output sample numbers
+ *
+ * @param pts timestamp for the next input sample, INT64_MIN if unknown
+ * @return the output timestamp for the next output sample
+ *)
+function swr_next_pts(s: PSwrContext; pts: cint64): cint64;
+ cdecl; external sw__resample;
+
+(**
+ * Activate resampling compensation ("soft" compensation). This function is
+ * internally called when needed in swr_next_pts().
+ *
+ * @param[in,out] s allocated Swr context. If it is not initialized,
+ * or SWR_FLAG_RESAMPLE is not set, swr_init() is
+ * called with the flag set.
+ * @param[in] sample_delta delta in PTS per sample
+ * @param[in] compensation_distance number of samples to compensate for
+ * @return >= 0 on success, AVERROR error codes if:
+ * @li @c s is NULL,
+ * @li @c compensation_distance is less than 0,
+ * @li @c compensation_distance is 0 but sample_delta is not,
+ * @li compensation unsupported by resampler, or
+ * @li swr_init() fails when called.
+ *)
+function swr_set_compensation(s: PSwrContext; sample_delta: cint; compensation_distance: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Set a customized input channel mapping.
+ *
+ * @param[in,out] s allocated Swr context, not yet initialized
+ * @param[in] channel_map customized input channel mapping (array of channel
+ * indexes, -1 for a muted channel)
+ * @return >= 0 on success, or AVERROR error code in case of failure.
+ *)
+function swr_set_channel_mapping(s: PSwrContext; {const} channel_map: pcint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Generate a channel mixing matrix.
+ *
+ * This function is the one used internally by libswresample for building the
+ * default mixing matrix. It is made public just as a utility function for
+ * building custom matrices.
+ *
+ * @param in_layout input channel layout
+ * @param out_layout output channel layout
+ * @param center_mix_level mix level for the center channel
+ * @param surround_mix_level mix level for the surround channel(s)
+ * @param lfe_mix_level mix level for the low-frequency effects channel
+ * @param rematrix_maxval if 1.0, coefficients will be normalized to prevent
+ * overflow. if INT_MAX, coefficients will not be
+ * normalized.
+ * @param[out] matrix mixing coefficients; matrix[i + stride * o] is
+ * the weight of input channel i in output channel o.
+ * @param stride distance between adjacent input channels in the
+ * matrix array
+ * @param matrix_encoding matrixed stereo downmix mode (e.g. dplii)
+ * @param log_ctx parent logging context, can be NULL
+ * @return 0 on success, negative AVERROR code on failure
+ *)
+function swr_build_matrix(in_layout: Pcuint64; out_layout: Pcuint64;
+ center_mix_level: cdouble; surround_mix_level: cdouble;
+ lfe_mix_level: cdouble; rematrix_maxval: cdouble;
+ rematrix_volume: cdouble; matrix: Pcdouble;
+ stride: cint; matrix_encoding: TAVMatrixEncoding;
+ log_ctx: pointer): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Set a customized remix matrix.
+ *
+ * @param s allocated Swr context, not yet initialized
+ * @param matrix remix coefficients; matrix[i + stride * o] is
+ * the weight of input channel i in output channel o
+ * @param stride offset between lines of the matrix
+ * @return >= 0 on success, or AVERROR error code in case of failure.
+ *)
+function swr_set_matrix(s: PSwrContext; {const} matrix: pcdouble; stride: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Drops the specified number of output samples.
+ *
+ * This function, along with swr_inject_silence(), is called by swr_next_pts()
+ * if needed for "hard" compensation.
+ *
+ * @param s allocated Swr context
+ * @param count number of samples to be dropped
+ *
+ * @return >= 0 on success, or a negative AVERROR code on failure
+ *)
+function swr_drop_output(s: PSwrContext; count: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Injects the specified number of silence samples.
+ *
+ * This function, along with swr_drop_output(), is called by swr_next_pts()
+ * if needed for "hard" compensation.
+ *
+ * @param s allocated Swr context
+ * @param count number of samples to be dropped
+ *
+ * @return >= 0 on success, or a negative AVERROR code on failure
+ *)
+function swr_inject_silence(s: PSwrContext; count: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Gets the delay the next input sample will experience relative to the next output sample.
+ *
+ * Swresample can buffer data if more input has been provided than available
+ * output space, also converting between sample rates needs a delay.
+ * This function returns the sum of all such delays.
+ * The exact delay is not necessarily an integer value in either input or
+ * output sample rate. Especially when downsampling by a large value, the
+ * output sample rate may be a poor choice to represent the delay, similarly
+ * for upsampling and the input sample rate.
+ *
+ * @param s swr context
+ * @param base timebase in which the returned delay will be:
+ * @li if it's set to 1 the returned delay is in seconds
+ * @li if it's set to 1000 the returned delay is in milliseconds
+ * @li if it's set to the input sample rate then the returned
+ * delay is in input samples
+ * @li if it's set to the output sample rate then the returned
+ * delay is in output samples
+ * @li if it's the least common multiple of in_sample_rate and
+ * out_sample_rate then an exact rounding-free delay will be
+ * returned
+ * @returns the delay in 1 / @c base units.
+ *)
+function swr_get_delay(s: PSwrContext; base: cint64): cint64;
+ cdecl; external sw__resample;
+
+(**
+ * Find an upper bound on the number of samples that the next swr_convert
+ * call will output, if called with in_samples of input samples. This
+ * depends on the internal state, and anything changing the internal state
+ * (like further swr_convert() calls) will may change the number of samples
+ * swr_get_out_samples() returns for the same number of input samples.
+ *
+ * @param in_samples number of input samples.
+ * @note any call to swr_inject_silence(), swr_convert(), swr_next_pts()
+ * or swr_set_compensation() invalidates this limit
+ * @note it is recommended to pass the correct available buffer size
+ * to all functions like swr_convert() even if swr_get_out_samples()
+ * indicates that less would be used.
+ * @returns an upper bound on the number of samples that the next swr_convert
+ * will output or a negative value to indicate an error
+ *)
+function swr_get_out_samples(s: PSwrContext; in_samples: cint): cint;
+ cdecl; external sw__resample;
+
+(**
+ * Return the @ref LIBSWRESAMPLE_VERSION_INT constant.
+ *
+ * This is useful to check if the build-time libswresample has the same version
+ * as the run-time one.
+ *
+ * @returns the unsigned int-typed version
+ *)
+function swresample_version(): cuint;
+ cdecl; external sw__resample;
+
+(**
+ * Return the swr build-time configuration.
+ *
+ * @returns the build-time @c ./configure flags
+ *)
+function swresample_configuration(): PAnsiChar;
+ cdecl; external sw__resample;
+
+(**
+ * Return the swr license.
+ *
+ * @returns the license of libswresample, determined at build-time
+ *)
+function swresample_license(): PAnsiChar;
+ cdecl; external sw__resample;
+
+implementation
+
+end.
+
diff --git a/src/lib/ffmpeg-4.0/swscale.pas b/src/lib/ffmpeg-4.0/swscale.pas
new file mode 100644
index 00000000..59391758
--- /dev/null
+++ b/src/lib/ffmpeg-4.0/swscale.pas
@@ -0,0 +1,439 @@
+(*
+ * Copyright (C) 2001-2011 Michael Niedermayer
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * FFmpeg Pascal port
+ * - Ported by the UltraStar Deluxe Team
+ *
+ * Conversion of libswscale/swscale.h
+ * version: 3.0.100
+ *)
+
+unit swscale;
+
+{$IFDEF FPC}
+ {$MODE DELPHI }
+ {$PACKENUM 4} (* use 4-byte enums *)
+ {$PACKRECORDS C} (* C/C++-compatible record packing *)
+ {$MACRO ON} (* Turn macro support on *)
+{$ELSE}
+ {$MINENUMSIZE 4} (* use 4-byte enums *)
+{$ENDIF}
+
+{$I switches.inc} (* for ffmpeg defines *)
+{$I ff_api-defines.inc} (* FF_API_* defines *)
+
+{$IFDEF DARWIN}
+ {$linklib libswscale}
+{$ENDIF}
+
+interface
+
+uses
+ ctypes,
+ avutil,
+ avcodec,
+ UConfig;
+
+const
+(*
+ * IMPORTANT: The official FFmpeg C headers change very quickly. Often some
+ * of the data structures are changed so that they become incompatible with
+ * older header files. The Pascal headers have to be adjusted to those changes,
+ * otherwise the application might crash randomly or strange bugs (not
+ * necessarily related to video or audio due to buffer overflows etc.) might
+ * occur.
+ *
+ * In the past users reported problems with USDX that took hours to fix and
+ * the problem was an unsupported version of FFmpeg. So we decided to disable
+ * support for future versions of FFmpeg until the headers are revised by us
+ * for that version as they otherwise most probably will break USDX.
+ *
+ * If the headers do not yet support your FFmpeg version you may want to
+ * adjust the max. version numbers manually but please note: it may work but
+ * in many cases it does not. The USDX team does NOT PROVIDE ANY SUPPORT
+ * for the game if the MAX. VERSION WAS CHANGED.
+ *
+ * The only safe way to support new versions of FFmpeg is to add the changes
+ * of the FFmpeg git repository C headers to the Pascal headers.
+ * You can accelerate this process by posting a patch with the git changes
+ * translated to Pascal to our bug tracker (please join our IRC chat before
+ * you start working on it). Simply adjusting the max. versions is NOT a valid
+ * fix.
+ *)
+
+ (* Max. supported version by this header *)
+ LIBSWSCALE_MAX_VERSION_MAJOR = 5;
+ LIBSWSCALE_MAX_VERSION_MINOR = 3;
+ LIBSWSCALE_MAX_VERSION_RELEASE = 100;
+ LIBSWSCALE_MAX_VERSION = (LIBSWSCALE_MAX_VERSION_MAJOR * VERSION_MAJOR) +
+ (LIBSWSCALE_MAX_VERSION_MINOR * VERSION_MINOR) +
+ (LIBSWSCALE_MAX_VERSION_RELEASE * VERSION_RELEASE);
+
+(* Check if linked versions are supported *)
+{$IF (LIBSWSCALE_VERSION > LIBSWSCALE_MAX_VERSION)}
+ {$MESSAGE Error 'Linked version of libswscale is not yet supported!'}
+{$IFEND}
+
+type
+ TQuadCintArray = array[0..3] of cint;
+ PQuadCintArray = ^TQuadCintArray;
+ TCintArray = array[0..0] of cint;
+ PCintArray = ^TCintArray;
+ TPCuint8Array = array[0..0] of PCuint8;
+ PPCuint8Array = ^TPCuint8Array;
+
+(**
+ * Return the LIBSWSCALE_VERSION_INT constant.
+ *)
+function swscale_version(): cuint;
+ cdecl; external sw__scale;
+
+(**
+ * Return the libswscale build-time configuration.
+ *)
+function swscale_configuration(): PAnsiChar;
+ cdecl; external sw__scale;
+
+(**
+ * Return the libswscale license.
+ *)
+function swscale_license(): PAnsiChar;
+ cdecl; external sw__scale;
+
+const
+ (* values for the flags, the stuff on the command line is different *)
+ SWS_FAST_BILINEAR = 1;
+ SWS_BILINEAR = 2;
+ SWS_BICUBIC = 4;
+ SWS_X = 8;
+ SWS_POINT = $10;
+ SWS_AREA = $20;
+ SWS_BICUBLIN = $40;
+ SWS_GAUSS = $80;
+ SWS_SINC = $100;
+ SWS_LANCZOS = $200;
+ SWS_SPLINE = $400;
+
+ SWS_SRC_V_CHR_DROP_MASK = $30000;
+ SWS_SRC_V_CHR_DROP_SHIFT = 16;
+
+ SWS_PARAM_DEFAULT = 123456;
+
+ SWS_PRINT_INFO = $1000;
+
+ // the following 3 flags are not completely implemented
+ // internal chrominance subsampling info
+ SWS_FULL_CHR_H_INT = $2000;
+ // input subsampling info
+ SWS_FULL_CHR_H_INP = $4000;
+ SWS_DIRECT_BGR = $8000;
+ SWS_ACCURATE_RND = $40000;
+ SWS_BITEXACT = $80000;
+
+ SWS_MAX_REDUCE_CUTOFF = 0.002;
+
+ SWS_CS_ITU709 = 1;
+ SWS_CS_FCC = 4;
+ SWS_CS_ITU601 = 5;
+ SWS_CS_ITU624 = 5;
+ SWS_CS_SMPTE170M = 5;
+ SWS_CS_SMPTE240M = 7;
+ SWS_CS_DEFAULT = 5;
+ SWS_CS_BT2020 = 9;
+
+(**
+ * Return a pointer to yuv<->rgb coefficients for the given colorspace
+ * suitable for sws_setColorspaceDetails().
+ *
+ * @param colorspace One of the SWS_CS_* macros. If invalid,
+ * SWS_CS_DEFAULT is used.
+ *)
+function sws_getCoefficients(colorspace: cint): Pcint;
+ cdecl; external sw__scale;
+
+type
+
+ // when used for filters they must have an odd number of elements
+ // coeffs cannot be shared between vectors
+ PSwsVector = ^TSwsVector;
+ TSwsVector = record
+ coeff: PCdouble; // pointer to the list of coefficients
+ length: cint; // number of coefficients in the vector
+ end;
+
+ // vectors can be shared
+ PSwsFilter = ^TSwsFilter;
+ TSwsFilter = record
+ lumH: PSwsVector;
+ lumV: PSwsVector;
+ chrH: PSwsVector;
+ chrV: PSwsVector;
+ end;
+
+ PSwsContext = ^TSwsContext;
+ TSwsContext = record
+ {internal structure}
+ end;
+
+(**
+ * Return a positive value if pix_fmt is a supported input format, 0
+ * otherwise.
+ *)
+function sws_isSupportedInput(pix_fmt: TAVPixelFormat): cint;
+ cdecl; external sw__scale;
+
+(**
+ * Return a positive value if pix_fmt is a supported output format, 0
+ * otherwise.
+ *)
+function sws_isSupportedOutput(pix_fmt: TAVPixelFormat): cint;
+ cdecl; external sw__scale;
+
+(**
+ * @param[in] pix_fmt the pixel format
+ * @return a positive value if an endianness conversion for pix_fmt is
+ * supported, 0 otherwise.
+ *)
+function sws_isSupportedEndiannessConversion(pix_fmt: TAVPixelFormat): cint;
+ cdecl; external sw__scale;
+
+(**
+ * Allocate an empty SwsContext. This must be filled and passed to
+ * sws_init_context(). For filling see AVOptions, options.c and
+ * sws_setColorspaceDetails().
+ *)
+function sws_alloc_context(): PSwsContext;
+ cdecl; external sw__scale;
+
+(**
+ * Initialize the swscaler context sws_context.
+ *
+ * @return zero or positive value on success, a negative value on
+ * error
+ *)
+function sws_init_context(sws_context: PSwsContext; srcFilter: PSwsFilter; dstFilter: PSwsFilter): cint;
+ cdecl; external sw__scale;
+
+(**
+ * Free the swscaler context swsContext.
+ * If swsContext is NULL, then does nothing.
+ *)
+procedure sws_freeContext(swsContext: PSwsContext);
+ cdecl; external sw__scale;
+
+(**
+ * Allocate and return a SwsContext. You need it to perform
+ * scaling/conversion operations using sws_scale().
+ *
+ * @param srcW the width of the source image
+ * @param srcH the height of the source image
+ * @param srcFormat the source image format
+ * @param dstW the width of the destination image
+ * @param dstH the height of the destination image
+ * @param dstFormat the destination image format
+ * @param flags specify which algorithm and options to use for rescaling
+ * @param param extra parameters to tune the used scaler
+ * For SWS_BICUBIC param[0] and [1] tune the shape of the basis
+ * function, param[0] tunes f(1) and param[1] f??(1)
+ * For SWS_GAUSS param[0] tunes the exponent and thus cutoff
+ * frequency
+ * For SWS_LANCZOS param[0] tunes the width of the window function
+ * @return a pointer to an allocated context, or NULL in case of error
+ * @note this function is to be removed after a saner alternative is
+ * written
+ *)
+function sws_getContext(srcW: cint; srcH: cint; srcFormat: TAVPixelFormat;
+ dstW: cint; dstH: cint; dstFormat: TAVPixelFormat;
+ flags: cint; srcFilter: PSwsFilter;
+ dstFilter: PSwsFilter; param: {const} PCdouble): PSwsContext;
+ cdecl; external sw__scale;
+
+(**
+ * Scale the image slice in srcSlice and put the resulting scaled
+ * slice in the image in dst. A slice is a sequence of consecutive
+ * rows in an image.
+ *
+ * Slices have to be provided in sequential order, either in
+ * top-bottom or bottom-top order. If slices are provided in
+ * non-sequential order the behavior of the function is undefined.
+ *
+ * @param c the scaling context previously created with
+ * sws_getContext()
+ * @param srcSlice the array containing the pointers to the planes of
+ * the source slice
+ * @param srcStride the array containing the strides for each plane of
+ * the source image
+ * @param srcSliceY the position in the source image of the slice to
+ * process, that is the number (counted starting from
+ * zero) in the image of the first row of the slice
+ * @param srcSliceH the height of the source slice, that is the number
+ * of rows in the slice
+ * @param dst the array containing the pointers to the planes of
+ * the destination image
+ * @param dstStride the array containing the strides for each plane of
+ * the destination image
+ * @return the height of the output slice
+ *)
+function sws_scale(c: PSwsContext; {const} srcSlice: PPCuint8Array;
+ {const} srcStride: PCintArray; srcSliceY: cint; srcSliceH: cint;
+ {const} dst: PPCuint8Array; {const} dstStride: PCintArray): cint;
+ cdecl; external sw__scale;
+
+(**
+ * @param dstRange flag indicating the while-black range of the output (1=jpeg / 0=mpeg)
+ * @param srcRange flag indicating the while-black range of the input (1=jpeg / 0=mpeg)
+ * @param table the yuv2rgb coefficients describing the output yuv space, normally ff_yuv2rgb_coeffs[x]
+ * @param inv_table the yuv2rgb coefficients describing the input yuv space, normally ff_yuv2rgb_coeffs[x]
+ * @param brightness 16.16 fixed point brightness correction
+ * @param contrast 16.16 fixed point contrast correction
+ * @param saturation 16.16 fixed point saturation correction
+ * @return -1 if not supported
+ *)
+function sws_setColorspaceDetails(c: PSwsContext; inv_table: PQuadCintArray;
+ srcRange: cint; table: PQuadCintArray; dstRange: cint;
+ brightness: cint; contrast: cint; saturation: cint): cint;
+ cdecl; external sw__scale;
+
+(**
+ * @return -1 if not supported
+ *)
+function sws_getColorspaceDetails(c: PSwsContext; var inv_table: PQuadCintArray;
+ var srcRange: cint; var table: PQuadCintArray; var dstRange: cint;
+ var brightness: cint; var contrast: cint; var saturation: cint): cint;
+ cdecl; external sw__scale;
+
+(**
+ * Allocate and return an uninitialized vector with length coefficients.
+ *)
+function sws_allocVec(length: cint): PSwsVector;
+ cdecl; external sw__scale;
+
+(**
+ * Return a normalized Gaussian curve used to filter stuff
+ * quality = 3 is high quality, lower is lower quality.
+ *)
+function sws_getGaussianVec(variance: cdouble; quality: cdouble): PSwsVector;
+ cdecl; external sw__scale;
+
+(**
+ * Scale all the coefficients of a by the scalar value.
+ *)
+procedure sws_scaleVec(a: PSwsVector; scalar: cdouble);
+ cdecl; external sw__scale;
+
+(**
+ * Scale all the coefficients of a so that their sum equals height.
+ *)
+procedure sws_normalizeVec(a: PSwsVector; height: cdouble);
+ cdecl; external sw__scale;
+
+{$IFDEF FF_API_SWS_VECTOR}
+function sws_getConstVec(c: cdouble; length: cint): PSwsVector;
+ cdecl; external sw__scale; deprecated;
+function sws_getIdentityVec: PSwsVector;
+ cdecl; external sw__scale; deprecated;
+procedure sws_convVec(a: PSwsVector; b: PSwsVector);
+ cdecl; external sw__scale; deprecated;
+procedure sws_addVec(a: PSwsVector; b: PSwsVector);
+ cdecl; external sw__scale; deprecated;
+procedure sws_subVec(a: PSwsVector; b: PSwsVector);
+ cdecl; external sw__scale; deprecated;
+procedure sws_shiftVec(a: PSwsVector; shift: cint);
+ cdecl; external sw__scale; deprecated;
+function sws_cloneVec(a: PSwsVector): PSwsVector;
+ cdecl; external sw__scale; deprecated;
+procedure sws_printVec2(a: PSwsVector;
+ log_ctx: PAVClass; // PAVClass is declared in avcodec.pas
+ log_level: cint);
+ cdecl; external sw__scale; deprecated;
+{$ENDIF}
+
+procedure sws_freeVec(a: PSwsVector);
+ cdecl; external sw__scale;
+
+function sws_getDefaultFilter(lumaGBlur: cfloat; chromaGBlur: cfloat;
+ lumaSharpen: cfloat; chromaSharpen: cfloat;
+ chromaHShift: cfloat; chromaVShift: cfloat;
+ verbose: cint): PSwsFilter;
+ cdecl; external sw__scale;
+
+procedure sws_freeFilter(filter: PSwsFilter);
+ cdecl; external sw__scale;
+
+(**
+ * Check if context can be reused, otherwise reallocates a new one.
+ *
+ * If context is NULL, just calls sws_getContext() to get a new
+ * context. Otherwise, checks if the parameters are the ones already
+ * saved in context. If that is the case, returns the current
+ * context. Otherwise, frees context and gets a new context with
+ * the new parameters.
+ *
+ * Be warned that srcFilter and dstFilter are not checked, they
+ * are assumed to remain the same.
+ *)
+function sws_getCachedContext(context: PSwsContext;
+ srcW: cint; srcH: cint; srcFormat: TAVPixelFormat;
+ dstW: cint; dstH: cint; dstFormat: TAVPixelFormat;
+ flags: cint; srcFilter: PSwsFilter;
+ dstFilter: PSwsFilter; param: PCdouble): PSwsContext;
+ cdecl; external sw__scale;
+
+(**
+ * Convert an 8bit paletted frame into a frame with a color depth of 32-bits.
+ *
+ * The output frame will have the same packed format as the palette.
+ *
+ * @param src source frame buffer
+ * @param dst destination frame buffer
+ * @param num_pixels number of pixels to convert
+ * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
+ *)
+procedure sws_convertPalette8ToPacked32({const} src: PPCuint8Array;
+ dst: PPCuint8Array;
+ num_pixels: cint;
+ {const} palette: PPCuint8Array);
+ cdecl; external sw__scale;
+
+(**
+ * Convert an 8bit paletted frame into a frame with a color depth of 24 bits.
+ *
+ * With the palette format "ABCD", the destination frame ends up with the format "ABC".
+ *
+ * @param src source frame buffer
+ * @param dst destination frame buffer
+ * @param num_pixels number of pixels to convert
+ * @param palette array with [256] entries, which must match color arrangement (RGB or BGR) of src
+ *)
+procedure sws_convertPalette8ToPacked24({const} src: PPCuint8Array;
+ dst: PPCuint8Array;
+ num_pixels: cint;
+ {const} palette: PPCuint8Array);
+ cdecl; external sw__scale;
+
+(**
+ * Get the AVClass for swsContext. It can be used in combination with
+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
+ *
+ * @see av_opt_find().
+ *)
+function sws_get_class(): {const} PAVClass;
+ cdecl; external sw__scale;
+
+implementation
+
+end.
diff --git a/src/lib/other/cpucount.pas b/src/lib/other/cpucount.pas
new file mode 100644
index 00000000..f7a9e27c
--- /dev/null
+++ b/src/lib/other/cpucount.pas
@@ -0,0 +1,76 @@
+{$MODE OBJFPC}
+
+unit cpucount;
+interface
+//returns number of cores: a computer with two hyperthreaded cores will report 4
+function GetLogicalCpuCount: Integer;
+
+implementation
+
+{$IF defined(windows)}
+uses windows;
+{$endif}
+
+{$IF defined(darwin)}
+uses ctypes, sysctl;
+{$endif}
+
+{$IFDEF Linux}
+uses ctypes;
+
+const _SC_NPROCESSORS_ONLN = 83;
+function sysconf(i: cint): clong; cdecl; external name 'sysconf';
+{$ENDIF}
+
+
+function GetLogicalCpuCount: integer;
+// returns a good default for the number of threads on this system
+{$IF defined(windows)}
+//returns total number of processors available to system including logical hyperthreaded processors
+var
+ i: Integer;
+ ProcessAffinityMask, SystemAffinityMask: DWORD_PTR;
+ Mask: DWORD;
+ SystemInfo: SYSTEM_INFO;
+begin
+ if GetProcessAffinityMask(GetCurrentProcess, ProcessAffinityMask, SystemAffinityMask)
+ then begin
+ Result := 0;
+ for i := 0 to 31 do begin
+ Mask := DWord(1) shl i;
+ if (ProcessAffinityMask and Mask)<>0 then
+ inc(Result);
+ end;
+ end else begin
+ //can't get the affinity mask so we just report the total number of processors
+ GetSystemInfo(SystemInfo);
+ Result := SystemInfo.dwNumberOfProcessors;
+ end;
+end;
+{$ELSEIF defined(UNTESTEDsolaris)}
+ begin
+ t = sysconf(_SC_NPROC_ONLN);
+ end;
+{$ELSEIF defined(freebsd) or defined(darwin)}
+var
+ mib: array[0..1] of cint;
+ len: cint;
+ t: cint;
+begin
+ mib[0] := CTL_HW;
+ mib[1] := HW_NCPU;
+ len := sizeof(t);
+ fpsysctl(pchar(@mib), 2, @t, @len, Nil, 0);
+ Result:=t;
+end;
+{$ELSEIF defined(linux)}
+ begin
+ Result:=sysconf(_SC_NPROCESSORS_ONLN);
+ end;
+
+{$ELSE}
+ begin
+ Result:=1;
+ end;
+{$ENDIF}
+end.
diff --git a/src/lua/ULuaScreenSing.pas b/src/lua/ULuaScreenSing.pas
index a9a43349..ebef457b 100644
--- a/src/lua/ULuaScreenSing.pas
+++ b/src/lua/ULuaScreenSing.pas
@@ -96,7 +96,7 @@ function ULuaScreenSing_SetSettings(L: Plua_State): Integer; cdecl;
function ULuaScreenSing_GetSongLines(L: Plua_State): Integer; cdecl;
const
- ULuaScreenSing_Lib_f: array [0..UIni.IMaxPlayerCount-1] of lual_reg = (
+ ULuaScreenSing_Lib_f: array [0..11] of lual_reg = (
(name:'GetScores';func:ULuaScreenSing_GetScores),
(name:'GetRating';func:ULuaScreenSing_GetRating),
(name:'GetBPM';func:ULuaScreenSing_GetBPM),
@@ -405,7 +405,7 @@ function ULuaScreenSing_GetSongLines(L: Plua_State): Integer; cdecl;
I, J: Integer;
begin
Result := 1;
- if (Length(Lines) >= 1) then
+ if (Length(CurrentSong.Lines) >= 1) then
begin
lua_ClearStack(L);
@@ -413,10 +413,10 @@ function ULuaScreenSing_GetSongLines(L: Plua_State): Integer; cdecl;
luaL_Error(L, PChar('can''t allocate enough stack space in ULuaScreenSing_GetSongLines'));
// lines array table
- lua_CreateTable(L, Length(Lines[0].Line), 0);
+ lua_CreateTable(L, Length(CurrentSong.Lines[0].Line), 0);
- for I := 0 to High(Lines[0].Line) do
- with Lines[0].Line[I] do
+ for I := 0 to High(CurrentSong.Lines[0].Line) do
+ with CurrentSong.Lines[0].Line[I] do
begin
lua_pushInteger(L, I+1);
diff --git a/src/menu/UDisplay.pas b/src/menu/UDisplay.pas
index 53886bdb..33c73701 100644
--- a/src/menu/UDisplay.pas
+++ b/src/menu/UDisplay.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -31,15 +31,16 @@ interface
{$I switches.inc}
uses
- UCommon,
+ dglOpenGL,
Math,
sdl2,
- dglOpenGL,
SysUtils,
+ UCommon,
+ UHookableEvent,
UMenu,
- UPath,
UMusic,
- UHookableEvent;
+ UPath,
+ UTexture;
type
TDisplay = class
@@ -57,7 +58,7 @@ TDisplay = class
FadeTex: array[0..1] of GLuint;
TexW, TexH: Cardinal;
-
+
FPSCounter: cardinal;
NextFPSSwap: cardinal;
@@ -77,6 +78,9 @@ TDisplay = class
Console_Draw: boolean;
Console_ScrollOffset: integer;
+ // textures for software mouse cursor
+ Tex_Cursor_Unpressed: TTexture;
+ Tex_Cursor_Pressed: TTexture;
procedure DrawDebugInformation;
procedure DrawDebugConsole;
@@ -107,7 +111,7 @@ TDisplay = class
procedure InitFadeTextures();
procedure ToggleConsole;
-
+
procedure SaveScreenShot;
function Draw: boolean;
@@ -168,18 +172,17 @@ TDisplay = class
implementation
uses
- TextGL,
StrUtils,
+ TextGL,
UCommandLine,
UGraphic,
UIni,
UImage,
+ ULanguage,
ULog,
UMain,
- UTexture,
- UTime,
- ULanguage,
- UPathUtils;
+ UPathUtils,
+ UTime;
constructor TDisplay.Create;
begin
@@ -217,6 +220,9 @@ constructor TDisplay.Create;
Cursor_Fade := false;
Cursor_HiddenByScreen := true;
Cursor_Update := false;
+
+ Tex_Cursor_Unpressed := UTexture.Texture.LoadTexture('Cursor', TEXTURE_TYPE_TRANSPARENT, 0);
+ Tex_Cursor_Pressed := UTexture.Texture.LoadTexture('Cursor_Pressed', TEXTURE_TYPE_TRANSPARENT, 0);
end;
destructor TDisplay.Destroy;
@@ -321,7 +327,7 @@ function TDisplay.Draw: boolean;
begin
FadeEnabled := false;
end;
-
+
if (FadeEnabled and not FadeFailed) then
begin
// create fading texture if we're just starting
@@ -616,12 +622,7 @@ procedure TDisplay.DrawCursor;
glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glDisable(GL_DEPTH_TEST);
-
- if (Cursor_Pressed) and (Tex_Cursor_Pressed.TexNum > 0) then
- glBindTexture(GL_TEXTURE_2D, Tex_Cursor_Pressed.TexNum)
- else
- glBindTexture(GL_TEXTURE_2D, Tex_Cursor_Unpressed.TexNum);
-
+ glBindTexture(GL_TEXTURE_2D, IfThen(Cursor_Pressed, Tex_Cursor_Pressed.TexNum, Tex_Cursor_Unpressed.TexNum));
glBegin(GL_QUADS);
glTexCoord2f(0, 0);
glVertex2f(DrawX, Cursor_Y);
@@ -705,7 +706,7 @@ procedure TDisplay.AbortScreenChange;
// and call the OnShow procedure of the previous screen
// because it was already called by default fade procedure
NextScreen.OnShow;
-
+
end;
end;
diff --git a/src/menu/UMenu.pas b/src/menu/UMenu.pas
index 08e8a508..880cfba5 100644
--- a/src/menu/UMenu.pas
+++ b/src/menu/UMenu.pas
@@ -58,7 +58,6 @@ TMenu = class
Interactions: array of TInteract;
SelInteraction: integer;
- ButtonPos: integer;
Button: array of TButton;
SelectsS: array of TSelectSlide;
@@ -114,7 +113,6 @@ TMenu = class
function AddText(X, Y, W: real; Style: integer; Size, ColR, ColG, ColB: real; Align: integer; const Text_: UTF8String; Reflection_: boolean; ReflectionSpacing_: real; Z : real; Writable: boolean): integer; overload;
// button
- procedure SetButtonLength(Length: cardinal); //Function that Set Length of Button Array in one Step instead of register new Memory for every Button
function AddButton(ThemeButton: TThemeButton): integer; overload;
function AddButton(X, Y, W, H: real; const TexName: IPath): integer; overload;
function AddButton(X, Y, W, H: real; const TexName: IPath; Typ: TTextureType; Reflection: boolean): integer; overload;
@@ -200,7 +198,6 @@ implementation
uses
StrUtils,
UCommon,
- UCovers,
UDisplay,
UDrawTexture,
UGraphic,
@@ -245,9 +242,6 @@ constructor TMenu.Create;
SetLength(Statics, 0);
SetLength(Button, 0);
- //Set ButtonPos to Autoset Length
- ButtonPos := -1;
-
Background := nil;
RightMbESC := true;
@@ -269,8 +263,6 @@ constructor TMenu.Create(Back: string);
else
BackImg.TexNum := 0;
- //Set ButtonPos to Autoset Length
- ButtonPos := -1;
end;
constructor TMenu.Create(Back: string; W, H: integer);
@@ -843,19 +835,6 @@ function TMenu.AddText(X, Y, W: real;
Result := TextNum;
end;
-//Function that Set Length of Button boolean in one Step instead of register new Memory for every Button
-procedure TMenu.SetButtonLength(Length: cardinal);
-begin
- if (ButtonPos = -1) and (Length > 0) then
- begin
- //Set Length of Button
- SetLength(Button, Length);
-
- //Set ButtonPos to start with 0
- ButtonPos := 0;
- end;
-end;
-
// Method to add a button in our TMenu. It returns the assigned ButtonNumber
function TMenu.AddButton(ThemeButton: TThemeButton): integer;
var
@@ -937,18 +916,9 @@ function TMenu.AddButton(X, Y, W, H, ColR, ColG, ColB, Int, DColR, DColG, DColB,
Reflection: boolean;
ReflectionSpacing, DeSelectReflectionSpacing: real): integer;
begin
- // adds button
- //SetLength is used once to reduce Memory usement
- if (ButtonPos <> -1) then
- begin
- Result := ButtonPos;
- Inc(ButtonPos)
- end
- else //Old Method -> Reserve new Memory for every Button
- begin
- Result := Length(Button);
- SetLength(Button, Result + 1);
- end;
+ // add button
+ Result := Length(Button);
+ SetLength(Button, Result+1);
// colorize hack
if (Typ = TEXTURE_TYPE_COLORIZED) then
@@ -1476,18 +1446,10 @@ function TMenu.AddSelectSlide(X, Y, W, H, SkipX, SBGW, ColR, ColG, ColB, Int, DC
SelectsS[S].SBGInt := SBGInt;
SelectsS[S].SBGDInt := SBGDInt;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowL := Tex_SelectS_ArrowL;
SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.X := X + W + SkipX;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.Y := Y + (H - Tex_SelectS_ArrowL.H) / 2;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.W := Tex_SelectS_ArrowL.W;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.H := Tex_SelectS_ArrowL.H;
-
-
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowR := Tex_SelectS_ArrowR;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.X := X + W + SkipX + SBGW - Tex_SelectS_ArrowR.W;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.Y := Y + (H - Tex_SelectS_ArrowR.H) / 2;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.W := Tex_SelectS_ArrowR.W;
- SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.H := Tex_SelectS_ArrowR.H;
+ SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.Y := Y + (H - SelectsS[High(SelectsS)].Tex_SelectS_ArrowL.H) / 2;
+ SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.X := X + W + SkipX + SBGW - SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.W;
+ SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.Y := Y + (H - SelectsS[High(SelectsS)].Tex_SelectS_ArrowR.H) / 2;
SelectsS[S].TextureSBG.X := X + W + SkipX;
SelectsS[S].TextureSBG.Y := Y;
diff --git a/src/menu/UMenuSelectSlide.pas b/src/menu/UMenuSelectSlide.pas
index da106aa1..06f5fac9 100644
--- a/src/menu/UMenuSelectSlide.pas
+++ b/src/menu/UMenuSelectSlide.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -116,7 +116,7 @@ TSelectSlide = class
STDColG: real;
STDColB: real;
STDInt: real;
-
+
// position and size
property X: real read Texture.x write Texture.x;
property Y: real read Texture.y write Texture.y;
@@ -186,6 +186,8 @@ constructor TSelectSlide.Create;
SBGDColG := 1;
SBGDColB := 1;
SBGDInt := 1;
+ Self.Tex_SelectS_ArrowL := UTexture.Texture.LoadTexture('Select_ArrowLeft', TEXTURE_TYPE_TRANSPARENT, 0);
+ Self.Tex_SelectS_ArrowR := UTexture.Texture.LoadTexture('Select_ArrowRight', TEXTURE_TYPE_TRANSPARENT, 0);
end;
procedure TSelectSlide.SetSelect(Value: boolean);
@@ -364,7 +366,7 @@ function TSelectSlide.AdjustOptionTextToFit(OptText: UTF8String): UTF8String;
Len: integer;
begin
Result := OptText;
-
+
if (TextureSBG.W > 0) then
begin
MaxLen := TextureSBG.W - MinSideSpacing * 2;
@@ -385,7 +387,7 @@ function TSelectSlide.AdjustOptionTextToFit(OptText: UTF8String): UTF8String;
repeat
Dec(Len);
until (byte(OptText[Len]) and 128) = 0;
-
+
Result := copy(OptText, 1, Len) + '..';
end;
end;
@@ -471,7 +473,7 @@ procedure TSelectSlide.GenLines;
//Free old Space used by Texts
for I := Low(TextOpt) to High(TextOpt) do
TextOpt[I].Free;
-
+
SetLength (TextOpt, Lines);
for I := Low(TextOpt) to High(TextOpt) do
@@ -520,7 +522,7 @@ function TSelectSlide.OnClick(X, Y: Real): TMouseClickAction;
var
AreaW: Real;
begin
- // default: press return on click
+ // default: press return on click
Result := maReturn;
// use left sides to inc or dec selection by click
diff --git a/src/menu/UMenuText.pas b/src/menu/UMenuText.pas
index 47cc8685..17076fc0 100644
--- a/src/menu/UMenuText.pas
+++ b/src/menu/UMenuText.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -94,7 +94,6 @@ implementation
uses
UGraphic,
UDisplay,
- UUnicodeStringHelper,
{$IFDEF MSWINDOWS}
LazUTF8,
{$ELSE}
diff --git a/src/screens/UScreenAbout.pas b/src/screens/UScreenAbout.pas
index f03168e4..5ddfbd3f 100644
--- a/src/screens/UScreenAbout.pas
+++ b/src/screens/UScreenAbout.pas
@@ -56,14 +56,15 @@ TScreenAbout = class(TMenu)
implementation
uses
+ Classes,
+ UCommon,
UGraphic,
UDataBase,
- USongs,
- USong,
ULanguage,
- UCommon,
- Classes,
ULog,
+ UScreenDevelopers,
+ USongs,
+ USong,
UUnicodeUtils;
function TScreenAbout.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -92,26 +93,19 @@ function TScreenAbout.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Press
SDLK_RETURN:
begin
//Developers Button
- if Interaction = 2 then
+ if Interaction = 1 then
begin
AudioPlayback.PlaySound(SoundLib.Back);
ScreenDevelopers.SetOverview('');
FadeTo(@ScreenDevelopers);
end;
//Exit Button Pressed
- if Interaction = 1 then
+ if Interaction = 0 then
begin
AudioPlayback.PlaySound(SoundLib.Back);
FadeTo(@ScreenMain);
end;
- // ultrastar deluxe team credits
- if Interaction = 0 then
- begin
- AudioPlayback.PlaySound(SoundLib.Back);
- ScreenDevelopers.SetOverview('USDX');
- FadeTo(@ScreenDevelopers);
- end;
end;
SDLK_LEFT:
begin
@@ -142,7 +136,6 @@ constructor TScreenAbout.Create;
LoadFromTheme(Theme.AboutMain);
AboutStaticBghelper := AddStatic(Theme.AboutMain.StaticBghelper);
- AddButton(Theme.AboutMain.ButtonCredits);
AddButton(Theme.AboutMain.ButtonExit);
AddButton(Theme.AboutMain.ButtonDevelopers);
@@ -152,6 +145,8 @@ constructor TScreenAbout.Create;
procedure TScreenAbout.OnShow;
begin
inherited;
+ if not Assigned(UGraphic.ScreenDevelopers) then //load the screen only the first time
+ UGraphic.ScreenDevelopers := TScreenDevelopers.Create();
//Set Overview Text:
SetOverview;
diff --git a/src/screens/UScreenJukebox.pas b/src/screens/UScreenJukebox.pas
index ab1bef0d..827f2c8b 100644
--- a/src/screens/UScreenJukebox.pas
+++ b/src/screens/UScreenJukebox.pas
@@ -2038,6 +2038,8 @@ constructor TScreenJukebox.Create;
procedure TScreenJukebox.OnShow;
begin
inherited;
+ if not Assigned(UGraphic.ScreenJukeboxOptions) then //load the screen only the first time
+ UGraphic.ScreenJukeboxOptions := TScreenJukeboxOptions.Create();
Log.LogStatus('Begin', 'OnShow');
@@ -2371,8 +2373,8 @@ procedure TScreenJukebox.OnSentenceChange(SentenceIndex: cardinal);
(not Lyrics.IsQueueFull) do
begin
// add the next line to the queue or a dummy if no more lines are available
- if (Lyrics.LineCounter <= High(Lines[0].Line)) then
- Lyrics.AddLine(@Lines[0].Line[Lyrics.LineCounter])
+ if (Lyrics.LineCounter <= High(CurrentSong.Lines[0].Line)) then
+ Lyrics.AddLine(@CurrentSong.Lines[0].Line[Lyrics.LineCounter])
else
Lyrics.AddLine(nil);
end;
@@ -2602,9 +2604,9 @@ procedure TScreenJukebox.PlayMusic(ID: integer; ShowList: boolean);
// initialize lyrics by filling its queue
while (not Lyrics.IsQueueFull) and
- (Lyrics.LineCounter <= High(Lines[0].Line)) do
+ (Lyrics.LineCounter <= High(CurrentSong.Lines[0].Line)) do
begin
- Lyrics.AddLine(@Lines[0].Line[Lyrics.LineCounter]);
+ Lyrics.AddLine(@CurrentSong.Lines[0].Line[Lyrics.LineCounter]);
end;
Max := 9;
diff --git a/src/screens/UScreenJukeboxPlaylist.pas b/src/screens/UScreenJukeboxPlaylist.pas
index 20805e95..4346cac8 100644
--- a/src/screens/UScreenJukeboxPlaylist.pas
+++ b/src/screens/UScreenJukeboxPlaylist.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -68,14 +68,15 @@ implementation
uses
UGraphic,
- UMain,
UIni,
- UTexture,
ULanguage,
+ UMain,
UParty,
- USong,
UPlaylist,
+ USong,
USongs,
+ UScreenJukebox,
+ UTexture,
UUnicodeUtils;
function TScreenJukeboxPlaylist.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -140,7 +141,7 @@ function TScreenJukeboxPlaylist.ParseInput(PressedKey: cardinal; CharCode: UCS4C
begin
SetPlaylists;
end;
-
+
end;
end;
end;
@@ -234,7 +235,8 @@ procedure TScreenJukeboxPlaylist.SetPlaylists;
procedure TScreenJukeboxPlaylist.OnShow;
begin
inherited;
-
+ if not Assigned(UGraphic.ScreenJukebox) then //load the screen only the first time
+ UGraphic.ScreenJukebox := TScreenJukebox.Create();
end;
procedure TScreenJukeboxPlaylist.InitJukebox;
@@ -317,4 +319,3 @@ procedure TScreenJukeboxPlaylist.SetAnimationProgress(Progress: real);
end;
end.
-
diff --git a/src/screens/UScreenMain.pas b/src/screens/UScreenMain.pas
index 100cda51..75bcbe6c 100644
--- a/src/screens/UScreenMain.pas
+++ b/src/screens/UScreenMain.pas
@@ -25,74 +25,67 @@
interface
-{$IFDEF FPC}
- {$MODE OBJFPC}
-{$ENDIF}
+{$MODE OBJFPC}
{$I switches.inc}
uses
- ULog,
MD5,
- UMenu,
sdl2,
+ SysUtils,
UDisplay,
- UMusic,
UFiles,
+ UMenu,
+ UMusic,
+ ULog,
USong,
- UScreenSong,
- SysUtils,
+ UTexture,
UThemes;
type
-
TScreenMain = class(TMenu)
-
- public
- TextDescription: integer;
- TextDescriptionLong: integer;
-
- constructor Create; override;
- function ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
- procedure OnShow; override;
- procedure SetInteraction(Num: integer); override;
- procedure SetAnimationProgress(Progress: real); override;
- procedure SetLoadProgress(Progress: string);
-// procedure UpdateTextDescriptionFor(IID: integer); virtual;
-
- private
- function CheckSongs(): boolean;
- // ButtonSoloIID, ButtonMultiIID, ButtonJukeboxIID, ButtonStatIID, ButtonOptionsIID, ButtonExitIID, ButtonAboutIID,
-
- // MapIIDtoDescID: array of integer;
-
+ public
+ constructor Create(); override;
+ function ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
+ function ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean; override;
+ function Draw: boolean; override;
+ procedure OnShow; override;
+ procedure SetInteraction(Num: integer); override;
+ procedure SetAnimationProgress(Progress: real); override;
+ private
+ TextDescription, TextDescriptionLong, TextProgressSongs: integer;
+ PreloadCovers: boolean; //flag to stop to preload covers when exists an user interaction
+ function CheckSongs(): boolean;
end;
implementation
uses
+ dglOpenGL,
UGraphic,
UNote,
UIni,
- UTexture,
USongs,
ULanguage,
UParty,
- USkins,
+ UScreenPlayerSelection,
+ UScreenSong,
+ UScreenPartyOptions,
+ UScreenJukeboxPlaylist,
+ UScreenOptions,
+ UScreenStatMain,
+ UScreenAbout,
UUnicodeUtils;
const
ITEMS_PER_ROW = 3; // Number of buttons for row of buttons in Main menu.
-function TScreenMain.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char;
- PressedDown: boolean): boolean;
-var
- SDL_ModState: word;
+function TScreenMain.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
begin
Result := true;
- SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT);
if (PressedDown) then
begin
+ Self.PreloadCovers := false;
//check normal keys
case UCS4UpperCase(CharCode) of
Ord('Q'):
@@ -108,47 +101,77 @@ function TScreenMain.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char;
Result := false;
SDLK_RETURN:
begin
+ if (Interaction < 3) and (not Assigned(UGraphic.ScreenSong)) then //loaded in draw, but a fast interaction can finish here in crash
+ UGraphic.ScreenSong := TScreenSong.Create();
+
//reset
Party.bPartyGame := false;
case Interaction of
0: //solo
+ begin
+ if Self.CheckSongs then
begin
- if Self.CheckSongs then
+ UGraphic.ScreenSong.Mode := smNormal;
+ if (Ini.Players >= 0) and (Ini.Players <= 3) then
+ UNote.PlayersPlay := Ini.Players + 1;
+ if (Ini.Players = 4) then
+ UNote.PlayersPlay := 6;
+
+ if Ini.OnSongClick = sSelectPlayer then
+ FadeTo(@ScreenSong)
+ else
begin
- if (Ini.Players >= 0) and (Ini.Players <= 3) then
- UNote.PlayersPlay := Ini.Players + 1;
- if (Ini.Players = 4) then
- UNote.PlayersPlay := 6;
-
- if Ini.OnSongClick = sSelectPlayer then
- FadeTo(@ScreenSong)
- else
- begin
- ScreenName.Goto_SingScreen := false;
- FadeTo(@ScreenName, SoundLib.Start);
- end;
+ if not Assigned(UGraphic.ScreenName) then
+ UGraphic.ScreenName := TScreenName.Create();
+
+ ScreenName.Goto_SingScreen := false;
+ FadeTo(@ScreenName, SoundLib.Start);
end;
end;
+ end;
1: //party
+ begin
+ if Self.CheckSongs then
begin
- if Self.CheckSongs then
- begin
- Party.bPartyGame := true;
- FadeTo(@ScreenPartyOptions, SoundLib.Start);
- end
- end;
+ if not Assigned(UGraphic.ScreenPartyOptions) then //load the screens only the first time
+ UGraphic.ScreenPartyOptions := TScreenPartyOptions.Create();
+
+ Party.bPartyGame := true;
+ FadeTo(@ScreenPartyOptions, SoundLib.Start);
+ end
+ end;
2: //jukebox
+ begin
+ if not Assigned(UGraphic.ScreenJukeboxPlaylist) then //load the screens only the first time
+ UGraphic.ScreenJukeboxPlaylist := TScreenJukeboxPlaylist.Create();
+
if Self.CheckSongs then
FadeTo(@ScreenJukeboxPlaylist, SoundLib.Start);
+ end;
3: //stats
+ begin
+ if not Assigned(UGraphic.ScreenStatMain) then //load the screens only the first time
+ UGraphic.ScreenStatMain := TScreenStatMain.Create();
+
if Self.CheckSongs then
FadeTo(@ScreenStatMain, SoundLib.Start);
+ end;
4: //options
- FadeTo(@ScreenOptions, SoundLib.Start);
+ begin
+ if not Assigned(UGraphic.ScreenOptions) then //load the screens only the first time
+ UGraphic.ScreenOptions := TScreenOptions.Create();
+
+ FadeTo(@UGraphic.ScreenOptions, SoundLib.Start);
+ end;
5: //exit
Result := false;
6: //about
+ begin
+ if not Assigned(UGraphic.ScreenAbout) then //load the screens only the first time
+ UGraphic.ScreenAbout := TScreenAbout.Create();
+
FadeTo(@ScreenAbout, SoundLib.Start);
+ end;
end;
end;
SDLK_DOWN:
@@ -163,10 +186,15 @@ function TScreenMain.ParseInput(PressedKey: Cardinal; CharCode: UCS4Char;
end
end;
+function TScreenMain.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
+begin
+ Result := inherited;
+ Self.PreloadCovers := false;
+end;
-constructor TScreenMain.Create;
+constructor TScreenMain.Create();
begin
- inherited Create;
+ inherited Create();
{**
* Attention ^^:
* New Creation Order needed because of LoadFromTheme
@@ -175,8 +203,9 @@ constructor TScreenMain.Create;
* Then LoadFromTheme
* after LoadFromTheme the Buttons and Selects
*}
- TextDescription := AddText(Theme.Main.TextDescription);
+ TextDescription := AddText(Theme.Main.TextDescription);
TextDescriptionLong := AddText(Theme.Main.TextDescriptionLong);
+ TextProgressSongs := AddText(Theme.Main.ProgressSongsText);
LoadFromTheme(Theme.Main);
@@ -189,8 +218,36 @@ constructor TScreenMain.Create;
AddButton(Theme.Main.ButtonExit);
AddButton(Theme.Main.ButtonAbout);
-
Interaction := 0;
+ Self.PreloadCovers := true;
+end;
+
+function TScreenMain.Draw: boolean;
+var
+ ProgressSong: TProgressSong;
+begin
+ inherited Draw;
+ ProgressSong := USongs.Songs.GetLoadProgress();
+ if not ProgressSong.Finished then //while song loading show progress
+ begin
+ Self.Text[TextDescriptionLong].Visible := false;
+ Self.Text[TextProgressSongs].Text := ProgressSong.Folder+': '+IntToStr(ProgressSong.Total);
+ end
+ else //after finish song loading, return to normal mode, close popup and start to preload covers
+ begin
+ Self.Text[TextDescriptionLong].Visible := true;
+ Self.Text[TextProgressSongs].Visible := false;
+ if ProgressSong.Total > 0 then
+ UGraphic.ScreenPopupError.Visible := false;
+
+ if not Assigned(UGraphic.ScreenSong) then
+ UGraphic.ScreenSong := TScreenSong.Create()
+ else if Self.PreloadCovers then //start to preload covers slowly if don't exists user interaction
+ UGraphic.ScreenSong.LoadCovers()
+ else //enable again after user interaction
+ Self.PreloadCovers := true;
+ end;
+ Result := true;
end;
procedure TScreenMain.OnShow;
@@ -199,8 +256,6 @@ procedure TScreenMain.OnShow;
SoundLib.StartBgMusic;
- ScreenSong.Mode := smNormal;
-
{**
* Clean up TPartyGame here
* at the moment there is no better place for this
@@ -222,21 +277,15 @@ procedure TScreenMain.SetAnimationProgress(Progress: real);
Statics[0].Texture.ScaleH := Progress;
end;
-procedure TScreenMain.SetLoadProgress(Progress: string);
-begin
- Text[3].Text := Progress;
-end;
-
function TScreenMain.CheckSongs(): boolean;
begin
Result := false;
- if Songs.LoadingSongs then
- ScreenPopupError.ShowPopup(Language.Translate('ERROR_LOADING_SONGS'))
+ if USongs.Songs.GetLoadProgress().Folder <> '' then
+ UGraphic.ScreenPopupError.ShowPopup(Language.Translate('ERROR_LOADING_SONGS'))
else if Songs.SongList.Count = 0 then
- ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS'))
+ UGraphic.ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS'))
else
Result := true;
-
end;
end.
diff --git a/src/screens/UScreenOpen.pas b/src/screens/UScreenOpen.pas
index 9d88ef34..b1e6de64 100644
--- a/src/screens/UScreenOpen.pas
+++ b/src/screens/UScreenOpen.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -209,20 +209,4 @@ procedure TScreenOpen.OnShow;
Text[fTextN].Text := fFilename.ToUTF8();
end;
-(*
-function TScreenEditSub.Draw: boolean;
-var
- Min: integer;
- Sec: integer;
- AktBeat: integer;
-begin
-
-end;
-
-procedure TScreenEditSub.Finish;
-begin
-//
-end;
-*)
-
end.
diff --git a/src/screens/UScreenOptions.pas b/src/screens/UScreenOptions.pas
index 454e0456..02c2ec03 100644
--- a/src/screens/UScreenOptions.pas
+++ b/src/screens/UScreenOptions.pas
@@ -1,9 +1,9 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
- COPYRIGHT file distributed with this source distribution.
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
+ COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,8 +16,8 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
- .
+ along with this program. Check "LICENSE" file. If not, see
+ .
*}
@@ -51,7 +51,7 @@ TScreenOptions = class(TMenu)
ButtonInputIID,
ButtonLyricsIID,
ButtonThemesIID,
- ButtonRecordIID,
+ ButtonMicrophonesIID,
ButtonAdvancedIID,
ButtonNetworkIID,
ButtonWebcamIID,
@@ -77,6 +77,16 @@ implementation
UGraphic,
UDatabase,
ULanguage,
+ UScreenOptionsGame,
+ UScreenOptionsGraphics,
+ UScreenOptionsSound,
+ UScreenOptionsLyrics,
+ UScreenOptionsThemes,
+ UScreenOptionsMicrophones,
+ UScreenOptionsAdvanced,
+ UScreenOptionsNetwork,
+ UScreenOptionsWebcam,
+ UScreenOptionsJukebox,
UWebcam,
UUnicodeUtils;
@@ -97,95 +107,108 @@ function TScreenOptions.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Pre
// check special keys
case PressedKey of
SDLK_ESCAPE,
- SDLK_BACKSPACE :
- begin
- Ini.Save;
- AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenMain);
- end;
+ SDLK_BACKSPACE:
+ begin
+ Ini.Save;
+ AudioPlayback.PlaySound(SoundLib.Back);
+ FadeTo(@ScreenMain);
+ end;
SDLK_RETURN:
+ begin
+ if Interaction = ButtonGameIID then
begin
- if Interaction = ButtonGameIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsGame);
- end;
+ if not Assigned(UGraphic.ScreenOptionsGame) then
+ UGraphic.ScreenOptionsGame := TScreenOptionsGame.Create();
- if Interaction = ButtonGraphicsIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsGraphics);
- end;
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsGame);
+ end
+ else if Interaction = ButtonGraphicsIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsGraphics) then
+ UGraphic.ScreenOptionsGraphics := TScreenOptionsGraphics.Create();
- if Interaction = ButtonSoundIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsSound);
- end;
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsGraphics);
+ end
+ else if Interaction = ButtonSoundIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsSound) then
+ UGraphic.ScreenOptionsSound := TScreenOptionsSound.Create();
- if Interaction = ButtonLyricsIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsLyrics);
- end;
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsSound);
+ end
+ else if Interaction = ButtonLyricsIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsLyrics) then
+ UGraphic.ScreenOptionsLyrics := TScreenOptionsLyrics.Create();
- if Interaction = ButtonThemesIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsThemes);
- end;
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsLyrics);
+ end
+ else if Interaction = ButtonThemesIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsThemes) then
+ UGraphic.ScreenOptionsThemes := TScreenOptionsThemes.Create();
- if Interaction = ButtonRecordIID then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsRecord);
- end;
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsThemes);
+ end
+ else if Interaction = ButtonMicrophonesIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsMicrophones) then
+ UGraphic.ScreenOptionsMicrophones := TScreenOptionsMicrophones.Create();
- if Interaction = ButtonAdvancedIID then
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsMicrophones);
+ end
+ else if Interaction = ButtonAdvancedIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsAdvanced) then
+ UGraphic.ScreenOptionsAdvanced := TScreenOptionsAdvanced.Create();
+
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsAdvanced);
+ end
+ else if Interaction = ButtonNetworkIID then
+ if High(DataBase.NetworkUser) = -1 then
+ UGraphic.ScreenPopupError.ShowPopup(ULanguage.Language.Translate('SING_OPTIONS_NETWORK_NO_DLL'))
+ else
begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsAdvanced);
- end;
+ if not Assigned(UGraphic.ScreenOptionsNetwork) then
+ UGraphic.ScreenOptionsNetwork := TScreenOptionsNetwork.Create();
- if Interaction = ButtonNetworkIID then
- begin
- if (High(DataBase.NetworkUser) = -1) then
- ScreenPopupError.ShowPopup(Language.Translate('SING_OPTIONS_NETWORK_NO_DLL'))
- else
- begin
- AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenOptionsNetwork);
- end;
- end;
-
- if Interaction = ButtonWebcamIID then
- begin
AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenOptionsWebcam);
- end;
+ FadeTo(@ScreenOptionsNetwork);
+ end
+ else if Interaction = ButtonWebcamIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsWebcam) then
+ UGraphic.ScreenOptionsWebcam := TScreenOptionsWebcam.Create();
- if Interaction = ButtonJukeboxIID then
- begin
- if (Songs.SongList.Count >= 1) then
- begin
- AudioPlayback.PlaySound(SoundLib.Start);
- FadeTo(@ScreenOptionsJukebox);
- end
- else //show error message, No Songs Loaded
- ScreenPopupError.ShowPopup(Language.Translate('ERROR_NO_SONGS'));
- end;
-
- if Interaction = ButtonExitIID then
- begin
- Ini.Save;
- AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenMain);
- end;
+ AudioPlayback.PlaySound(SoundLib.Back);
+ FadeTo(@ScreenOptionsWebcam);
+ end
+ else if Interaction = ButtonJukeboxIID then
+ begin
+ if not Assigned(UGraphic.ScreenOptionsJukebox) then
+ UGraphic.ScreenOptionsJukebox := TScreenOptionsJukebox.Create();
+
+ AudioPlayback.PlaySound(SoundLib.Start);
+ FadeTo(@ScreenOptionsJukebox);
+ end
+ else if Interaction = ButtonExitIID then
+ begin
+ Ini.Save;
+ AudioPlayback.PlaySound(SoundLib.Back);
+ FadeTo(@ScreenMain);
end;
- SDLK_DOWN: InteractNextRow;
- SDLK_UP: InteractPrevRow;
- SDLK_RIGHT: InteractNext;
- SDLK_LEFT: InteractPrev;
+ end;
+ SDLK_DOWN: InteractNextRow;
+ SDLK_UP: InteractPrevRow;
+ SDLK_RIGHT: InteractNext;
+ SDLK_LEFT: InteractPrev;
end;
end;
end;
@@ -198,7 +221,7 @@ constructor TScreenOptions.Create;
begin
OldPos := Length(Button);
Result := AddButton(Btn);
- if Length(Button) <> OldPos then // check if button was succesfully added
+ if Length(Button) <> OldPos then // check if button was succesfully added
begin
IIDvar := High(Interactions);
@@ -218,14 +241,14 @@ constructor TScreenOptions.Create;
LoadFromTheme(Theme.Options);
- // Order is irrelevant to the represenatation, however InteractNext/Prev is not working with a different order
+ // Order is irrelevant to the represenatation, however InteractNext/Prev is not working with a different order
AddButtonChecked(Theme.Options.ButtonGame, OPTIONS_DESC_INDEX_GAME, ButtonGameIID);
AddButtonChecked(Theme.Options.ButtonGraphics, OPTIONS_DESC_INDEX_GRAPHICS, ButtonGraphicsIID);
AddButtonChecked(Theme.Options.ButtonSound, OPTIONS_DESC_INDEX_SOUND, ButtonSoundIID);
AddButtonChecked(Theme.Options.ButtonLyrics, OPTIONS_DESC_INDEX_LYRICS, ButtonLyricsIID);
AddButtonChecked(Theme.Options.ButtonThemes, OPTIONS_DESC_INDEX_THEMES, ButtonThemesIID);
- AddButtonChecked(Theme.Options.ButtonRecord, OPTIONS_DESC_INDEX_RECORD, ButtonRecordIID);
+ AddButtonChecked(Theme.Options.ButtonMicrophones, OPTIONS_DESC_INDEX_MICROPHONES, ButtonMicrophonesIID);
AddButtonChecked(Theme.Options.ButtonAdvanced, OPTIONS_DESC_INDEX_ADVANCED, ButtonAdvancedIID);
AddButtonChecked(Theme.Options.ButtonNetwork, OPTIONS_DESC_INDEX_NETWORK, ButtonNetworkIID);
@@ -240,7 +263,7 @@ constructor TScreenOptions.Create;
procedure TScreenOptions.OnShow;
begin
inherited;
- // continue possibly stopped bg-music (stopped in record options)
+ // continue possibly stopped bg-music (stopped in Microphones options)
SoundLib.StartBgMusic;
end;
@@ -251,7 +274,8 @@ procedure TScreenOptions.SetInteraction(Num: integer);
end;
procedure TScreenOptions.SetAnimationProgress(Progress: real);
-var i: integer;
+var
+ i: integer;
begin
// update all buttons
for i := 0 to High(Button) do
@@ -259,10 +283,11 @@ procedure TScreenOptions.SetAnimationProgress(Progress: real);
end;
procedure TScreenOptions.UpdateTextDescriptionFor(IID: integer);
-var index: integer;
+var
+ index: integer;
begin
// Sanity check
- if (IID < 0 ) or (IID >= Length(MapIIDtoDescID)) then
+ if (IID < 0) or (IID >= Length(MapIIDtoDescID)) then
Exit;
Text[TextDescription].Text := Theme.Options.Description[MapIIDtoDescID[IID]];
diff --git a/src/screens/UScreenOptionsGame.pas b/src/screens/UScreenOptionsGame.pas
index fbc706ca..185b000b 100644
--- a/src/screens/UScreenOptionsGame.pas
+++ b/src/screens/UScreenOptionsGame.pas
@@ -37,8 +37,7 @@ interface
type
TScreenOptionsGame = class(TMenu)
private
- Language: integer;
- SongMenu: integer;
+ Language, SongMenu, Sorting, Tabs: integer;
procedure ReloadScreen();
procedure ReloadScreens();
protected
@@ -60,6 +59,8 @@ implementation
ULanguage,
UMusic,
UScreensong,
+ UScreenOptions,
+ USongs,
UThemes;
function TScreenOptionsGame.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -150,21 +151,30 @@ constructor TScreenOptionsGame.Create;
procedure TScreenOptionsGame.OnShow;
begin
inherited;
- Self.Language := Ini.Language;
- Self.SongMenu := Ini.SongMenu;
+ Self.Language := UIni.Ini.Language;
+ Self.SongMenu := UIni.Ini.SongMenu;
+ Self.Sorting := UIni.Ini.Sorting;
+ Self.Tabs := UIni.Ini.Tabs;
Interaction := 0;
end;
-// Reload all screens, after Language changed
+// Reload all screens, after Language changed or screen song after songmenu, sorting or tabs changed
procedure TScreenOptionsGame.ReloadScreens();
begin
UIni.Ini.Save;
- if Self.SongMenu <> UIni.Ini.SongMenu then
+ if (Self.SongMenu <> UIni.Ini.SongMenu) or (Self.Sorting <> UIni.Ini.Sorting) or (Self.Tabs <> UIni.Ini.Tabs) then
begin
- UThemes.Theme.ThemeSongLoad();
- UGraphic.ScreenSong.Free();
- UGraphic.ScreenSong := TScreenSong.Create();
- UGraphic.ScreenSong.GenerateThumbnails();
+ if ((Self.Sorting <> UIni.Ini.Sorting) or (Self.Tabs <> UIni.Ini.Tabs)) and USongs.Songs.GetLoadProgress().Finished then
+ USongs.CatSongs.Refresh();
+
+ if (Self.SongMenu <> UIni.Ini.SongMenu) then
+ UThemes.Theme.ThemeSongLoad();
+
+ if USongs.Songs.GetLoadProgress().Finished then
+ begin
+ FreeAndNil(UGraphic.ScreenSong);
+ UGraphic.ScreenSong := TScreenSong.Create();
+ end;
end;
if Self.Language <> UIni.Ini.Language then
begin
@@ -172,7 +182,8 @@ procedure TScreenOptionsGame.ReloadScreens();
UGraphic.UnLoadScreens();
UThemes.Theme.LoadTheme(UIni.Ini.Theme, UIni.Ini.Color);
UGraphic.LoadScreens();
- UGraphic.ScreenSong.GenerateThumbnails();
+ UGraphic.ScreenOptions := TScreenOptions.Create();
+ UGraphic.ScreenOptionsGame := TScreenOptionsGame.Create();
end;
AudioPlayback.PlaySound(SoundLib.Back);
FadeTo(@ScreenOptions);
diff --git a/src/screens/UScreenOptionsInput.pas b/src/screens/UScreenOptionsInput.pas
deleted file mode 100644
index 10bca23b..00000000
--- a/src/screens/UScreenOptionsInput.pas
+++ /dev/null
@@ -1,209 +0,0 @@
-{*
- UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
- COPYRIGHT file distributed with this source distribution.
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program 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 General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
- .
- *}
-
-
-unit UScreenOptionsInput;
-
-interface
-
-{$MODE OBJFPC}
-
-{$I switches.inc}
-
-uses
- UCommon,
- UMenu,
- sdl2,
- UMusic,
- UIni,
- UThemes,
- UJoystick;
-
-type
-
- TByteSet = set of byte;
-
- TScreenOptionsInput = class(TMenu)
- protected
- // interaction IDs
- ButtonExitIID: integer;
- SelectMouse: integer;
- SelectJoyPad: integer;
-
- // values
- ActualMouse: integer;
-
- SoundInteractions: TByteSet;
-
- WasJoy: boolean;
- WasMouse: boolean;
-
- protected
- procedure CheckOption;
-
- public
- constructor Create; override;
- function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
-
- procedure OnShow; override;
- procedure OnHide; override;
-
- end;
-
-implementation
-
-uses
- UGraphic,
- UDisplay,
- UUnicodeUtils,
- SysUtils;
-
-function TScreenOptionsInput.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
-begin
- Result := true;
- if (PressedDown) then
- begin // Key Down
- // check normal keys
- case UCS4UpperCase(CharCode) of
- Ord('Q'):
- begin
- Result := false;
- Exit;
- end;
- end;
-
- // check special keys
- case PressedKey of
- SDLK_ESCAPE,
- SDLK_BACKSPACE :
- begin
- Ini.Save;
- AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenOptions);
- end;
- SDLK_RETURN:
- begin
- if Interaction = ButtonExitIID then
- begin
- Ini.Save;
- AudioPlayback.PlaySound(SoundLib.Back);
- FadeTo(@ScreenOptions);
- end;
- end;
- SDLK_DOWN:
- InteractNext;
- SDLK_UP :
- InteractPrev;
- SDLK_RIGHT:
- begin
- if (Interaction in SoundInteractions) then
- begin
- AudioPlayback.PlaySound(SoundLib.Option);
- InteractInc;
- end;
- CheckOption;
- end;
- SDLK_LEFT:
- begin
- if (Interaction in SoundInteractions) then
- begin
- AudioPlayback.PlaySound(SoundLib.Option);
- InteractDec;
- end;
- CheckOption;
- end;
- end;
- end;
-end;
-
-constructor TScreenOptionsInput.Create;
-begin
- inherited Create;
- SoundInteractions := [];
-
- LoadFromTheme(Theme.OptionsInput);
-
- Theme.OptionsInput.SelectMouse.showArrows := true;
- Theme.OptionsInput.SelectMouse.oneItemOnly := true;
- SelectMouse := AddSelectSlide(Theme.OptionsInput.SelectMouse, ActualMouse, UIni.IMouse, 'OPTION_VALUE_');
- Include(SoundInteractions, SelectMouse);
-
- Theme.OptionsInput.SelectJoypad.showArrows := true;
- Theme.OptionsInput.SelectJoypad.oneItemOnly := true;
- SelectJoyPad := AddSelectSlide(Theme.OptionsInput.SelectJoypad, UIni.Ini.Joypad, UIni.IJoypad, 'OPTION_VALUE_');
- Include(SoundInteractions, SelectJoyPad);
-
-
- AddButton(Theme.OptionsInput.ButtonExit);
- ButtonExitIID := High(Interactions);
- if (Length(Button[0].Text)=0) then
- AddButtonText(20, 5, Theme.Options.Description[OPTIONS_DESC_INDEX_BACK]);
-
-end;
-
-procedure TScreenOptionsInput.OnShow;
-begin
- inherited;
-
- ActualMouse := Ini.Mouse;
- UpdateSelectSlideOptions(Theme.OptionsInput.SelectMouse, SelectMouse, UIni.IMouse, ActualMouse, 'OPTION_VALUE_');
-
- WasMouse := Ini.Mouse > 0;
- WasJoy := HasJoyStick;
- Interaction := 0;
-end;
-
-procedure TScreenOptionsInput.OnHide;
-begin
- inherited;
-
- // TODO: query confirm whether to disable mouse
- // TODO: RattleSN4K3: query confirm whether to disable Joypad (requires interaction mode, Controller/Mouse/Keyboard)
-
- // update actual Mouse configuration
- Ini.Mouse := ActualMouse;
- Display.SetCursor;
-
- // re-initialize or remove joypad support
- if WasJoy and (Ini.Joypad = 0) then begin
- FinalizeJoyStick;
- end else if not WasJoy and (Ini.Joypad = 1) then
- InitializeJoystick;
-
-end;
-
-procedure TScreenOptionsInput.CheckOption;
-begin
- inherited;
-
- if (Interaction = SelectMouse) then
- begin
- if ActualMouse > 0 then Ini.Mouse := ActualMouse
- else Ini.Mouse := 1;
- Display.SetCursor;
- Display.UpdateCursor;
- end;
-
-end;
-
-
-end.
diff --git a/src/screens/UScreenOptionsJukebox.pas b/src/screens/UScreenOptionsJukebox.pas
index 75661113..dde6de6f 100644
--- a/src/screens/UScreenOptionsJukebox.pas
+++ b/src/screens/UScreenOptionsJukebox.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -266,12 +266,12 @@ function TScreenOptionsJukebox.ParseInput(PressedKey: cardinal; CharCode: UCS4Ch
end;
end;
-procedure TScreenOptionsJukebox.UpdatePropertyList;
+procedure TScreenOptionsJukebox.UpdatePropertyList; // >>>>> FIX ME <<<<<
var
IProperty: array of UTF8String;
I: integer;
begin
-
+{
if (SelectsS[FontSelect].SelectedOption <> 0) then
begin
SetLength(IProperty, Length(IPropertyTranslated));
@@ -287,6 +287,7 @@ procedure TScreenOptionsJukebox.UpdatePropertyList;
end;
UpdateSelectSlideOptions(Theme.OptionsJukebox.SelectProperty, PropertySelect, IProperty, Ini.JukeboxProperty);
+ }
end;
procedure TScreenOptionsJukebox.InteractInc;
@@ -467,11 +468,11 @@ constructor TScreenOptionsJukebox.Create;
Theme.OptionsJukebox.SelectLyricsFont.showArrows := true;
Theme.OptionsJukebox.SelectLyricsFont.oneItemOnly := true;
- FontSelect := AddSelectSlide(Theme.OptionsJukebox.SelectLyricsFont, Ini.JukeboxFont, ILyricsFontTranslated);
+ AddSelectSlide(Theme.OptionsJukebox.SelectLyricsFont, UIni.Ini.JukeboxFont, UIni.ILyricsFont, 'OPTION_VALUE_');
Theme.OptionsJukebox.SelectLyricsEffect.showArrows := true;
Theme.OptionsJukebox.SelectLyricsEffect.oneItemOnly := true;
- AddSelectSlide(Theme.OptionsJukebox.SelectLyricsEffect, Ini.JukeboxEffect, ILyricsEffectTranslated);
+ AddSelectSlide(Theme.OptionsJukebox.SelectLyricsEffect, UIni.Ini.JukeboxEffect, UIni.ILyricsEffect, 'OPTION_VALUE_');
Theme.OptionsJukebox.SelectLyricsAlpha.showArrows := true;
Theme.OptionsJukebox.SelectLyricsAlpha.oneItemOnly := true;
@@ -479,15 +480,15 @@ constructor TScreenOptionsJukebox.Create;
Theme.OptionsJukebox.SelectLine.showArrows := true;
Theme.OptionsJukebox.SelectLine.oneItemOnly := true;
- LineSelect := AddSelectSlide(Theme.OptionsJukebox.SelectLine, Ini.JukeboxLine, ILineTranslated);
+ LineSelect := AddSelectSlide(Theme.OptionsJukebox.SelectLine, UIni.Ini.JukeboxLine, UIni.ILineTranslated, 'OPTION_VALUE_');
Theme.OptionsJukebox.SelectProperty.showArrows := true;
Theme.OptionsJukebox.SelectProperty.oneItemOnly := true;
- PropertySelect := AddSelectSlide(Theme.OptionsJukebox.SelectProperty, Ini.JukeboxProperty, IPropertyTranslated);
+ AddSelectSlide(Theme.OptionsJukebox.SelectProperty, UIni.Ini.JukeboxProperty, UIni.IPropertyTranslated, 'OPTION_VALUE_');
Theme.OptionsJukebox.SelectColor.showArrows := true;
Theme.OptionsJukebox.SelectColor.oneItemOnly := true;
- LineColorSelect := AddSelectSlide(Theme.OptionsJukebox.SelectColor, Ini.JukeboxSingLineColor, ISingLineColorTranslated);
+ LineColorSelect := AddSelectSlide(Theme.OptionsJukebox.SelectColor, UIni.Ini.JukeboxSingLineColor, UIni.ISingLineColorTranslated, 'OPTION_VALUE_');
Theme.OptionsJukebox.SelectR.showArrows := false;
Theme.OptionsJukebox.SelectR.oneItemOnly := true;
@@ -663,4 +664,4 @@ function TScreenOptionsJukebox.Draw: boolean;
LyricSample();
end;
-end.
+end.
\ No newline at end of file
diff --git a/src/screens/UScreenOptionsRecord.pas b/src/screens/UScreenOptionsMicrophones.pas
similarity index 87%
rename from src/screens/UScreenOptionsRecord.pas
rename to src/screens/UScreenOptionsMicrophones.pas
index 4d66e8ba..92a0f07a 100644
--- a/src/screens/UScreenOptionsRecord.pas
+++ b/src/screens/UScreenOptionsMicrophones.pas
@@ -21,7 +21,7 @@
*}
-unit UScreenOptionsRecord;
+unit UScreenOptionsMicrophones;
interface
@@ -49,7 +49,7 @@ TPeakInfo = record
Time: cardinal;
end;
- TScreenOptionsRecord = class(TMenu)
+ TScreenOptionsMicrophones = class(TMenu)
private
// max. count of input-channels determined for all devices
MaxChannelCount: integer;
@@ -101,7 +101,7 @@ TScreenOptionsRecord = class(TMenu)
end;
var //slider translation
- ChannelPlayer: array[0..12] of UTF8String = ('Off', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12');
+ ChannelPlayer: array[0..6] of UTF8String = ('Off', '1', '2', '3', '4', '5', '6');
MicBoost: array[0..3] of UTF8String = ('Off', '+6dB', '+12dB', '+18dB');
const
@@ -132,7 +132,7 @@ implementation
UUnicodeUtils,
ULog;
-function TScreenOptionsRecord.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
+function TScreenOptionsMicrophones.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
begin
Result := true;
if (PressedDown) then
@@ -144,26 +144,6 @@ function TScreenOptionsRecord.ParseInput(PressedKey: cardinal; CharCode: UCS4Cha
Result := false;
Exit;
end;
- Ord('+'):
- begin
- // FIXME: add a nice volume-slider instead
- // or at least provide visualization and acceleration if the user holds the key pressed.
- ChangeVolume(0.02);
- end;
- Ord('-'):
- begin
- // FIXME: add a nice volume-slider instead
- // or at least provide visualization and acceleration if the user holds the key pressed.
- ChangeVolume(-0.02);
- end;
- Ord('T'):
- begin
- if ((SDL_GetModState() and KMOD_SHIFT) <> 0) then
- Ini.ThresholdIndex := (Ini.ThresholdIndex + Length(IThresholdVals) - 1) mod Length(IThresholdVals)
- else
- Ini.ThresholdIndex := (Ini.ThresholdIndex + 1) mod Length(IThresholdVals);
- UpdateSelectSlideOptions(Theme.OptionsRecord.SelectThreshold, SelectThresholdID, IThreshold, Ini.ThresholdIndex);
- end;
end;
// check special keys
@@ -217,7 +197,7 @@ function TScreenOptionsRecord.ParseInput(PressedKey: cardinal; CharCode: UCS4Cha
end;
end;
-function TScreenOptionsRecord.ValidateSettings: boolean;
+function TScreenOptionsMicrophones.ValidateSettings: boolean;
var
BadPlayer: integer;
begin
@@ -235,7 +215,7 @@ function TScreenOptionsRecord.ValidateSettings: boolean;
end;
end;
-constructor TScreenOptionsRecord.Create;
+constructor TScreenOptionsMicrophones.Create;
var
DeviceIndex: integer;
SourceIndex: integer;
@@ -248,7 +228,7 @@ constructor TScreenOptionsRecord.Create;
begin
inherited Create;
- LoadFromTheme(Theme.OptionsRecord);
+ LoadFromTheme(Theme.OptionsMicrophones);
// set CurrentDeviceIndex to a valid device
if (Length(AudioInputProcessor.DeviceList) > 0) then
@@ -273,9 +253,9 @@ constructor TScreenOptionsRecord.Create;
InputDeviceNames[DeviceIndex] := AudioInputProcessor.DeviceList[DeviceIndex].Name;
end;
// add device-selection slider (InteractionID: 0)
- Theme.OptionsRecord.SelectSlideCard.showArrows := true;
- Theme.OptionsRecord.SelectSlideCard.oneItemOnly := true;
- AddSelectSlide(Theme.OptionsRecord.SelectSlideCard, CurrentDeviceIndex, InputDeviceNames);
+ Theme.OptionsMicrophones.SelectSlideCard.showArrows := true;
+ Theme.OptionsMicrophones.SelectSlideCard.oneItemOnly := true;
+ AddSelectSlide(Theme.OptionsMicrophones.SelectSlideCard, CurrentDeviceIndex, InputDeviceNames);
// init source-selection slider
SetLength(InputSourceNames, Length(InputDevice.Source));
@@ -284,14 +264,14 @@ constructor TScreenOptionsRecord.Create;
InputSourceNames[SourceIndex] := InputDevice.Source[SourceIndex].Name;
end;
- Theme.OptionsRecord.SelectSlideInput.showArrows := true;
- Theme.OptionsRecord.SelectSlideInput.oneItemOnly := true;
+ Theme.OptionsMicrophones.SelectSlideInput.showArrows := true;
+ Theme.OptionsMicrophones.SelectSlideInput.oneItemOnly := true;
// add source-selection slider (InteractionID: 1)
- SelectInputSourceID := AddSelectSlide(Theme.OptionsRecord.SelectSlideInput, InputDeviceCfg.Input, InputSourceNames);
+ SelectInputSourceID := AddSelectSlide(Theme.OptionsMicrophones.SelectSlideInput, InputDeviceCfg.Input, InputSourceNames);
// add space for source volume bar
- WidgetYPos := Theme.OptionsRecord.SelectSlideInput.Y +
- Theme.OptionsRecord.SelectSlideInput.H +
+ WidgetYPos := Theme.OptionsMicrophones.SelectSlideInput.Y +
+ Theme.OptionsMicrophones.SelectSlideInput.H +
SourceBarsTotalHeight;
// find max. channel count of all devices
@@ -311,7 +291,7 @@ constructor TScreenOptionsRecord.Create;
begin
// copy reference slide
SelectSlideChannelTheme[ChannelIndex] :=
- Theme.OptionsRecord.SelectSlideChannel;
+ Theme.OptionsMicrophones.SelectSlideChannel;
// set current channel-theme
ChannelTheme := @SelectSlideChannelTheme[ChannelIndex];
// adjust vertical position
@@ -341,19 +321,19 @@ constructor TScreenOptionsRecord.Create;
end;
end;
- Theme.OptionsRecord.SelectThreshold.showArrows := true; //basisbit TODO
- Theme.OptionsRecord.SelectThreshold.oneItemOnly := true;
- SelectThresholdID := AddSelectSlide(Theme.OptionsRecord.SelectThreshold, Ini.ThresholdIndex, IThreshold);
+ Theme.OptionsMicrophones.SelectThreshold.showArrows := true;
+ Theme.OptionsMicrophones.SelectThreshold.oneItemOnly := true;
+ SelectThresholdID := AddSelectSlide(Theme.OptionsMicrophones.SelectThreshold, Ini.ThresholdIndex, IThreshold);
- Theme.OptionsRecord.SelectMicBoost.showArrows := true;
- Theme.OptionsRecord.SelectMicBoost.oneItemOnly := true;
+ Theme.OptionsMicrophones.SelectMicBoost.showArrows := true;
+ Theme.OptionsMicrophones.SelectMicBoost.oneItemOnly := true;
MicBoost[0] := ULanguage.Language.Translate('OPTION_VALUE_OFF');
- AddSelectSlide(Theme.OptionsRecord.SelectMicBoost, Ini.MicBoost, MicBoost);
+ AddSelectSlide(Theme.OptionsMicrophones.SelectMicBoost, Ini.MicBoost, MicBoost);
end;
// add Exit-button
- AddButton(Theme.OptionsRecord.ButtonExit);
+ AddButton(Theme.OptionsMicrophones.ButtonExit);
if (Length(Button[0].Text) = 0) then
AddButtonText(20, 5, Theme.Options.Description[OPTIONS_DESC_INDEX_BACK]);
// store InteractionID
@@ -366,14 +346,14 @@ constructor TScreenOptionsRecord.Create;
Interaction := 0;
end;
-procedure TScreenOptionsRecord.UpdateInputDevice;
+procedure TScreenOptionsMicrophones.UpdateInputDevice;
var
SourceIndex: integer;
InputDevice: TAudioInputDevice;
InputDeviceCfg: PInputDeviceConfig;
ChannelIndex: integer;
begin
- //Log.LogStatus('Update input-device', 'TScreenOptionsRecord.UpdateCard') ;
+ //Log.LogStatus('Update input-device', 'TScreenOptionsMicrophones.UpdateCard') ;
StopPreview();
@@ -393,7 +373,7 @@ procedure TScreenOptionsRecord.UpdateInputDevice;
begin
InputSourceNames[SourceIndex] := InputDevice.Source[SourceIndex].Name;
end;
- UpdateSelectSlideOptions(Theme.OptionsRecord.SelectSlideInput, SelectInputSourceID,
+ UpdateSelectSlideOptions(Theme.OptionsMicrophones.SelectSlideInput, SelectInputSourceID,
InputSourceNames, InputDeviceCfg.Input);
// update channel-to-player mapping sliders
@@ -426,7 +406,7 @@ procedure TScreenOptionsRecord.UpdateInputDevice;
StartPreview();
end;
-procedure TScreenOptionsRecord.ChangeVolume(VolumeChange: single);
+procedure TScreenOptionsMicrophones.ChangeVolume(VolumeChange: single);
var
InputDevice: TAudioInputDevice;
Volume: single;
@@ -451,7 +431,7 @@ procedure TScreenOptionsRecord.ChangeVolume(VolumeChange: single);
NextVolumePollTime := 0;
end;
-procedure TScreenOptionsRecord.OnShow;
+procedure TScreenOptionsMicrophones.OnShow;
var
ChannelIndex: integer;
begin
@@ -472,7 +452,7 @@ procedure TScreenOptionsRecord.OnShow;
UpdateInputDevice();
end;
-procedure TScreenOptionsRecord.OnHide;
+procedure TScreenOptionsMicrophones.OnHide;
var
ChannelIndex: integer;
begin
@@ -485,7 +465,7 @@ procedure TScreenOptionsRecord.OnHide;
SetLength(ChannelPeak, 0);
end;
-procedure TScreenOptionsRecord.StartPreview;
+procedure TScreenOptionsMicrophones.StartPreview;
var
ChannelIndex: integer;
Device: TAudioInputDevice;
@@ -509,7 +489,7 @@ procedure TScreenOptionsRecord.StartPreview;
end;
end;
-procedure TScreenOptionsRecord.StopPreview;
+procedure TScreenOptionsMicrophones.StopPreview;
var
ChannelIndex: integer;
Device: TAudioInputDevice;
@@ -525,7 +505,7 @@ procedure TScreenOptionsRecord.StopPreview;
PreviewDeviceIndex := -1;
end;
-procedure TScreenOptionsRecord.DrawVolume(x, y, Width, Height: single);
+procedure TScreenOptionsMicrophones.DrawVolume(x, y, Width, Height: single);
var
x1, y1, x2, y2: single;
VolBarInnerWidth: integer;
@@ -597,7 +577,7 @@ procedure TScreenOptionsRecord.DrawVolume(x, y, Width, Height: single);
glDisable(GL_BLEND);
end;
-procedure TScreenOptionsRecord.DrawVUMeter(const State: TDrawState; x, y, Width, Height: single);
+procedure TScreenOptionsMicrophones.DrawVUMeter(const State: TDrawState; x, y, Width, Height: single);
var
x1, y1, x2, y2: single;
Volume, PeakVolume: single;
@@ -686,7 +666,7 @@ procedure TScreenOptionsRecord.DrawVUMeter(const State: TDrawState; x, y, Width,
glDisable(GL_BLEND);
end;
-procedure TScreenOptionsRecord.DrawPitch(const State: TDrawState; x, y, Width, Height: single);
+procedure TScreenOptionsMicrophones.DrawPitch(const State: TDrawState; x, y, Width, Height: single);
var
x1, y1, x2, y2: single;
i: integer;
@@ -777,7 +757,7 @@ procedure TScreenOptionsRecord.DrawPitch(const State: TDrawState; x, y, Width, H
glPrint(ToneString);
end;
-function TScreenOptionsRecord.Draw: boolean;
+function TScreenOptionsMicrophones.Draw: boolean;
var
Device: TAudioInputDevice;
DeviceCfg: PInputDeviceConfig;
diff --git a/src/screens/UScreenOptionsNetwork.pas b/src/screens/UScreenOptionsNetwork.pas
index 7db3199d..d98ddbba 100644
--- a/src/screens/UScreenOptionsNetwork.pas
+++ b/src/screens/UScreenOptionsNetwork.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -65,7 +65,7 @@ TScreenOptionsNetwork = class(TMenu)
EncryptPassword: UTF8String;
InsertButton: integer;
-
+
public
constructor Create; override;
function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
@@ -79,10 +79,11 @@ TScreenOptionsNetwork = class(TMenu)
implementation
uses
+ SysUtils,
UGraphic,
ULanguage,
- UUnicodeUtils,
- SysUtils;
+ UScreenPopup,
+ UUnicodeUtils;
var
Receive_String: widestring;
@@ -499,6 +500,8 @@ procedure TScreenOptionsNetwork.OnShow;
I, J: integer;
begin
inherited;
+ if not Assigned(UGraphic.ScreenPopupInsertUser) then //load the screen only the first time
+ UGraphic.ScreenPopupInsertUser := TScreenPopupInsertUser.Create();
CurrentWebsiteIndex := 0;
CurrentUserIndex := 0;
@@ -532,7 +535,6 @@ procedure TScreenOptionsNetwork.OnShow;
end;
Interaction := 0;
-
end;
procedure TScreenOptionsNetwork.UpdateUsernameList(ResetIndex: boolean);
@@ -668,4 +670,3 @@ procedure TScreenOptionsNetwork.DeleteUser;
end;
end.
-
diff --git a/src/screens/UScreenOptionsThemes.pas b/src/screens/UScreenOptionsThemes.pas
index 22dc2fa0..9006ea59 100644
--- a/src/screens/UScreenOptionsThemes.pas
+++ b/src/screens/UScreenOptionsThemes.pas
@@ -67,6 +67,7 @@ implementation
UMain,
UPathUtils,
UUnicodeUtils,
+ UScreenOptions,
USkins;
function TScreenOptionsThemes.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -250,6 +251,8 @@ procedure TScreenOptionsThemes.ReloadScreens;
begin
UGraphic.UnLoadScreens();
UGraphic.LoadScreens();
+ UGraphic.ScreenOptions := TScreenOptions.Create();
+ UGraphic.ScreenOptionsThemes := TScreenOptionsThemes.Create();
Ini.Load;
end;
end;
diff --git a/src/screens/UScreenPartyOptions.pas b/src/screens/UScreenPartyOptions.pas
index 2c6b1a2a..93eede2e 100644
--- a/src/screens/UScreenPartyOptions.pas
+++ b/src/screens/UScreenPartyOptions.pas
@@ -80,14 +80,23 @@ implementation
uses
UGraphic,
- UMain,
UIni,
- UTexture,
ULanguage,
+ UMain,
UParty,
- USong,
UPlaylist,
+ UScreenPartyNewRound,
+ UScreenPartyScore,
+ UScreenPartyWin,
+ UScreenPartyPlayer,
+ UScreenPartyRounds,
+ UScreenPartyTournamentRounds,
+ UScreenPartyTournamentPlayer,
+ UScreenPartyTournamentOptions,
+ UScreenPartyTournamentWin,
+ USong,
USongs,
+ UTexture,
UUnicodeUtils;
function TScreenPartyOptions.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -130,8 +139,8 @@ function TScreenPartyOptions.ParseInput(PressedKey: cardinal; CharCode: UCS4Char
case Mode of
0: InitClassic;
1: InitFree;
- 2: InitChallenge;
- 3: InitTournament;
+ 2: InitTournament;
+ // 3: InitChallenge; // hidden for the moment. Check again in the future
end;
end;
@@ -243,9 +252,9 @@ procedure TScreenPartyOptions.FillLevel;
begin
SetLength(ILevel, 3);
- ILevel[0] := Language.Translate('SING_EASY');
- ILevel[1] := Language.Translate('SING_MEDIUM');
- ILevel[2] := Language.Translate('SING_HARD');
+ ILevel[0] := Language.Translate('OPTION_VALUE_EASY');
+ ILevel[1] := Language.Translate('OPTION_VALUE_MEDIUM');
+ ILevel[2] := Language.Translate('OPTION_VALUE_HARD');
end;
procedure TScreenPartyOptions.SetPlaylists;
@@ -306,7 +315,14 @@ procedure TScreenPartyOptions.SetPlaylist2;
IPlaylist2[0] := 'No Categories found';
end;
end;
- 2:
+
+ 2:
+ begin
+ SetLength(IPlaylist2, 1);
+ IPlaylist2[0] := '---';
+ end;
+
+ { 3: //Challenge mode desactivated for the moment
begin
if (Length(PlaylistMan.Playlists) > 0) then
begin
@@ -318,12 +334,7 @@ procedure TScreenPartyOptions.SetPlaylist2;
SetLength(IPlaylist2, 1);
IPlaylist2[0] := 'No Playlists found';
end;
- end;
- 3:
- begin
- SetLength(IPlaylist2, 1);
- IPlaylist2[0] := '---';
- end;
+ end; }
end;
Playlist2 := 0;
@@ -333,7 +344,14 @@ procedure TScreenPartyOptions.SetPlaylist2;
procedure TScreenPartyOptions.OnShow;
begin
inherited;
-
+ if not Assigned(UGraphic.ScreenPartyNewRound) then //load the screens only the first time
+ begin
+ UGraphic.ScreenPartyNewRound := TScreenPartyNewRound.Create();
+ UGraphic.ScreenPartyScore := TScreenPartyScore.Create();
+ UGraphic.ScreenPartyWin := TScreenPartyWin.Create();
+ UGraphic.ScreenPartyPlayer := TScreenPartyPlayer.Create();
+ UGraphic.ScreenPartyRounds := TScreenPartyRounds.Create();
+ end;
Party.Clear;
// check if there are loaded modes
@@ -411,6 +429,13 @@ procedure TScreenPartyOptions.InitTournament;
begin
ScreenSong.Mode := smPartyTournament;
AudioPlayback.PlaySound(SoundLib.Start);
+ if not Assigned(UGraphic.ScreenPartyTournamentRounds) then //load the screens only the first time
+ begin
+ UGraphic.ScreenPartyTournamentRounds := TScreenPartyTournamentRounds.Create();
+ UGraphic.ScreenPartyTournamentPlayer := TScreenPartyTournamentPlayer.Create();
+ UGraphic.ScreenPartyTournamentOptions := TScreenPartyTournamentOptions.Create();
+ UGraphic.ScreenPartyTournamentWin := TScreenPartyTournamentWin.Create();
+ end;
FadeTo(@ScreenPartyTournamentPlayer);
end;
diff --git a/src/screens/UScreenPartyPlayer.pas b/src/screens/UScreenPartyPlayer.pas
index c7b205e5..5558237a 100644
--- a/src/screens/UScreenPartyPlayer.pas
+++ b/src/screens/UScreenPartyPlayer.pas
@@ -77,7 +77,6 @@ TScreenPartyPlayer = class(TMenu)
Player12Name: cardinal;
constructor Create; override;
- function ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean; override;
function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
procedure OnShow; override;
@@ -212,24 +211,6 @@ procedure TScreenPartyPlayer.UpdateParty;
end;
end;
-function TScreenPartyPlayer.ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean;
-begin
- Result := inherited;
- // only suppress special keys for now
- case PressedKey of
- // Templates for Names Mod
- SDLK_F1, SDLK_F2, SDLK_F3, SDLK_F4, SDLK_F5, SDLK_F6, SDLK_F7, SDLK_F8, SDLK_F9, SDLK_F10, SDLK_F11, SDLK_F12:
- if (Button[Interactions[Interaction].Num].Selected) then
- begin
- SuppressKey := true;
- end
- else
- begin
- Result := false;
- end;
- end;
-end;
-
function TScreenPartyPlayer.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
SDL_ModState: word;
@@ -251,16 +232,7 @@ function TScreenPartyPlayer.ParseInput(PressedKey: cardinal; CharCode: UCS4Char;
SelectsS[Interactions[Interaction].Num].Visible) or
(Button[Interactions[Interaction].Num].Visible);
end;
- procedure HandleNameTemplate(const index: integer);
- var
- isAlternate: boolean;
- begin
- isAlternate := (SDL_ModState = KMOD_LSHIFT) or (SDL_ModState = KMOD_RSHIFT);
- isAlternate := isAlternate or (SDL_ModState = KMOD_LALT); // legacy key combination
- if isAlternate then Ini.NameTemplate[index] := Button[Interactions[Interaction].Num].Text[0].Text
- else Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[index];
- end;
begin
Result := true;
@@ -285,19 +257,6 @@ function TScreenPartyPlayer.ParseInput(PressedKey: cardinal; CharCode: UCS4Char;
// check special keys
case PressedKey of
- // Templates for Names Mod
- SDLK_F1: HandleNameTemplate(0);
- SDLK_F2: HandleNameTemplate(1);
- SDLK_F3: HandleNameTemplate(2);
- SDLK_F4: HandleNameTemplate(3);
- SDLK_F5: HandleNameTemplate(4);
- SDLK_F6: HandleNameTemplate(5);
- SDLK_F7: HandleNameTemplate(6);
- SDLK_F8: HandleNameTemplate(7);
- SDLK_F9: HandleNameTemplate(8);
- SDLK_F10: HandleNameTemplate(9);
- SDLK_F11: HandleNameTemplate(10);
- SDLK_F12: HandleNameTemplate(11);
SDLK_BACKSPACE:
begin
diff --git a/src/screens/UScreenPartyTournamentPlayer.pas b/src/screens/UScreenPartyTournamentPlayer.pas
index 12be7f2b..207e1855 100644
--- a/src/screens/UScreenPartyTournamentPlayer.pas
+++ b/src/screens/UScreenPartyTournamentPlayer.pas
@@ -71,7 +71,6 @@ TScreenPartyTournamentPlayer = class(TMenu)
Player16Name: cardinal;
constructor Create; override;
- function ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean; override;
function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
procedure OnShow; override;
procedure SetAnimationProgress(Progress: real); override;
@@ -147,24 +146,6 @@ procedure TScreenPartyTournamentPlayer.UpdatePartyTournament;
end;
-function TScreenPartyTournamentPlayer.ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean;
-begin
- Result := inherited;
- // only suppress special keys for now
- case PressedKey of
- // Templates for Names Mod
- SDLK_F1, SDLK_F2, SDLK_F3, SDLK_F4, SDLK_F5, SDLK_F6, SDLK_F7, SDLK_F8, SDLK_F9, SDLK_F10, SDLK_F11, SDLK_F12:
- if (Button[Interactions[Interaction].Num].Selected) then
- begin
- SuppressKey := true;
- end
- else
- begin
- Result := false;
- end;
- end;
-end;
-
function TScreenPartyTournamentPlayer.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
SDL_ModState: word;
@@ -211,116 +192,7 @@ function TScreenPartyTournamentPlayer.ParseInput(PressedKey: cardinal; CharCode:
isAlternate := (SDL_ModState = KMOD_LSHIFT) or (SDL_ModState = KMOD_RSHIFT);
isAlternate := isAlternate or (SDL_ModState = KMOD_LALT); // legacy key combination
case PressedKey of
- // Templates for Names Mod
- SDLK_F1:
- if isAlternate then
- begin
- Ini.NameTemplate[0] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[0];
- end;
- SDLK_F2:
- if isAlternate then
- begin
- Ini.NameTemplate[1] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[1];
- end;
- SDLK_F3:
- if isAlternate then
- begin
- Ini.NameTemplate[2] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[2];
- end;
- SDLK_F4:
- if isAlternate then
- begin
- Ini.NameTemplate[3] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[3];
- end;
- SDLK_F5:
- if isAlternate then
- begin
- Ini.NameTemplate[4] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[4];
- end;
- SDLK_F6:
- if isAlternate then
- begin
- Ini.NameTemplate[5] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[5];
- end;
- SDLK_F7:
- if isAlternate then
- begin
- Ini.NameTemplate[6] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[6];
- end;
- SDLK_F8:
- if isAlternate then
- begin
- Ini.NameTemplate[7] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[7];
- end;
- SDLK_F9:
- if isAlternate then
- begin
- Ini.NameTemplate[8] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[8];
- end;
- SDLK_F10:
- if isAlternate then
- begin
- Ini.NameTemplate[9] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[9];
- end;
- SDLK_F11:
- if isAlternate then
- begin
- Ini.NameTemplate[10] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[10];
- end;
- SDLK_F12:
- if isAlternate then
- begin
- Ini.NameTemplate[11] := Button[Interactions[Interaction].Num].Text[0].Text;
- end
- else
- begin
- Button[Interactions[Interaction].Num].Text[0].Text := Ini.NameTemplate[11];
- end;
-
+
SDLK_BACKSPACE:
begin
Button[Interactions[Interaction].Num].Text[0].DeleteLastLetter;
diff --git a/src/screens/UScreenName.pas b/src/screens/UScreenPlayerSelection.pas
similarity index 90%
rename from src/screens/UScreenName.pas
rename to src/screens/UScreenPlayerSelection.pas
index b5b473a2..8ccba721 100644
--- a/src/screens/UScreenName.pas
+++ b/src/screens/UScreenPlayerSelection.pas
@@ -21,7 +21,7 @@
*}
-unit UScreenName;
+unit UScreenPlayerSelection;
interface
@@ -45,7 +45,6 @@ interface
UNote,
UScreenScore,
UScreenSingController,
- UScreenTop5,
ULog,
UTexture,
UThemes;
@@ -87,11 +86,11 @@ TScreenName = class(TMenu)
PlayerAvatarButton: array of integer;
PlayerAvatarButtonMD5: array of UTF8String;
+ PreloadCovers: boolean; //flag to stop to preload covers when exists an user interaction
public
Goto_SingScreen: boolean; //If true then next Screen in SingScreen
constructor Create; override;
- function ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean; override;
function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
function ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean; override;
@@ -140,8 +139,8 @@ function TScreenName.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: in
I: integer;
Btn: integer;
begin
+ Self.PreloadCovers := false;
Result := true;
-
inherited ParseMouse(MouseButton, BtnDown, X, Y);
// transfer mousecords to the 800x600 raster we use to draw
@@ -177,7 +176,7 @@ function TScreenName.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: in
if InRegion(X, Y, Button[PlayerAvatarButton[Btn]].GetMouseOverArea) then
begin
- Interaction := 2;
+ Interaction := 5;
ParseInput(SDLK_LEFT, 0, true);
ParseInput(SDLK_LEFT, 0, true);
@@ -190,7 +189,7 @@ function TScreenName.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: in
if InRegion(X, Y, Button[PlayerAvatarButton[Btn]].GetMouseOverArea) then
begin
- Interaction := 2;
+ Interaction := 5;
ParseInput(SDLK_LEFT, 0, true);
end;
@@ -202,7 +201,7 @@ function TScreenName.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: in
if InRegion(X, Y, Button[PlayerAvatarButton[Btn]].GetMouseOverArea) then
begin
- Interaction := 2;
+ Interaction := 5;
ParseInput(SDLK_RIGHT, 0, true);
end;
@@ -237,56 +236,18 @@ function TScreenName.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: in
end;
end;
-function TScreenName.ShouldHandleInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean; out SuppressKey: boolean): boolean;
-begin
- Result := inherited;
- // only suppress special keys for now
- case PressedKey of
- // Templates for Names Mod
- SDLK_F1, SDLK_F2, SDLK_F3, SDLK_F4, SDLK_F5, SDLK_F6, SDLK_F7, SDLK_F8, SDLK_F9, SDLK_F10, SDLK_F11, SDLK_F12:
- if (Button[PlayerName].Selected) then
- begin
- SuppressKey := true;
- end
- else
- begin
- Result := false;
- end;
- end;
-end;
-
function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
I: integer;
SDL_ModState: word;
Col: TRGB;
- procedure HandleNameTemplate(const index: integer);
- var
- isAlternate: boolean;
- begin
- isAlternate := (SDL_ModState = KMOD_LSHIFT) or (SDL_ModState = KMOD_RSHIFT);
- isAlternate := isAlternate or (SDL_ModState = KMOD_LALT); // legacy key combination
-
- if isAlternate then
- begin
- Ini.NameTemplate[index] := Button[PlayerName].Text[0].Text;
- end
- else
- begin
- Button[PlayerName].Text[0].Text := Ini.NameTemplate[index];
- PlayerNames[PlayerIndex] := Button[PlayerName].Text[0].Text;
- end;
- end;
-
begin
Result := true;
if (PressedDown) then
begin // Key Down
-
- SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT
- + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT);
-
+ Self.PreloadCovers := false;
+ SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT);
if (not Button[PlayerName].Selected) then
begin
// check normal keys
@@ -298,36 +259,21 @@ function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
end;
end
- else if (Interaction = 3) and (IsPrintableChar(CharCode)) then
+ else if (Interaction = 2) and (IsPrintableChar(CharCode)) then //pass printable chars to button
begin
- // pass printable chars to button
- Button[PlayerName].Text[0].Text := Button[PlayerName].Text[0].Text +
- UCS4ToUTF8String(CharCode);
-
- PlayerNames[PlayerIndex] := Button[PlayerName].Text[0].Text;
+ if Length(Button[PlayerName].Text[0].Text) < 12 then
+ begin
+ Button[PlayerName].Text[0].Text := Button[PlayerName].Text[0].Text +UCS4ToUTF8String(CharCode);
+ PlayerNames[PlayerIndex] := Button[PlayerName].Text[0].Text;
+ end;
Exit;
end;
-
// check special keys
case PressedKey of
- // Templates for Names Mod
- SDLK_F1: HandleNameTemplate(0);
- SDLK_F2: HandleNameTemplate(1);
- SDLK_F3: HandleNameTemplate(2);
- SDLK_F4: HandleNameTemplate(3);
- SDLK_F5: HandleNameTemplate(4);
- SDLK_F6: HandleNameTemplate(5);
- SDLK_F7: HandleNameTemplate(6);
- SDLK_F8: HandleNameTemplate(7);
- SDLK_F9: HandleNameTemplate(8);
- SDLK_F10: HandleNameTemplate(9);
- SDLK_F11: HandleNameTemplate(10);
- SDLK_F12: HandleNameTemplate(11);
-
SDLK_BACKSPACE:
begin
- if (Interaction = 3) then
+ if (Interaction = 2) then
begin
Button[PlayerName].Text[0].DeleteLastLetter();
PlayerNames[PlayerIndex] := Button[PlayerName].Text[0].Text;
@@ -397,7 +343,6 @@ function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
//
AudioPlayback.PlaySound(SoundLib.Start);
-
if GoTo_SingScreen then
begin
FadeTo(@ScreenSing);
@@ -425,16 +370,12 @@ function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
SDLK_RIGHT:
begin
- AudioPlayback.PlaySound(SoundLib.Change);
- if (Interaction in [0, 4, 5]) then
+ if (Interaction in [1, 3, 4]) then
InteractInc;
- if (Interaction = 0) then
- RefreshPlayers();
-
- if (Interaction = 1) then
- begin //TODO: adapt this to new playersize
+ if (Interaction = 0) then // Player selection
+ begin //TODO: adapt this to new playersize
if (PlayerIndex < UIni.IPlayersVals[CountIndex]-1) then
begin
PlayerIndex := PlayerIndex + 1;
@@ -446,37 +387,43 @@ function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
end;
- if (Interaction = 2) then
- begin
- SelectNext;
- SetAvatarScroll;
- PlayerAvatars[PlayerIndex] := AvatarTarget;
- SetPlayerAvatar(PlayerIndex);
- end;
+ if (Interaction = 1) then //Number of players
+ begin
+ RefreshPlayers();
+ AudioPlayback.PlaySound(SoundLib.Option);
+ end;
- if (Interaction = 4) then
+ if (Interaction = 3) then //Player color
begin
RefreshColor();
SelectsS[PlayerColor].SetSelect(true);
+ AudioPlayback.PlaySound(SoundLib.Option);
end;
- if (Interaction = 5) then
+
+ if (Interaction = 4) then //level color
begin
PlayerLevel[PlayerIndex] := LevelIndex;
+ AudioPlayback.PlaySound(SoundLib.Option);
end;
+ if (Interaction = 5) then //avatar selection
+ begin
+ SelectNext;
+ SetAvatarScroll;
+ PlayerAvatars[PlayerIndex] := AvatarTarget;
+ SetPlayerAvatar(PlayerIndex);
+ end;
+
+
end;
SDLK_LEFT:
begin
- AudioPlayback.PlaySound(SoundLib.Change);
- if (Interaction in [0, 4, 5]) then
+ if (Interaction in [1, 3, 4]) then
InteractDec;
if (Interaction = 0) then
- RefreshPlayers();
-
- if (Interaction = 1) then
begin
if (PlayerIndex > 0) then
begin
@@ -489,24 +436,36 @@ function TScreenName.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
end;
- if (Interaction = 2) then
+
+ if (Interaction = 1) then
+ begin
+ RefreshPlayers();
+ AudioPlayback.PlaySound(SoundLib.Option);
+ end;
+
+ if (Interaction = 3) then
begin
- SelectPrev;
- SetAvatarScroll;
- PlayerAvatars[PlayerIndex] := AvatarTarget;
- SetPlayerAvatar(PlayerIndex);
+ RefreshColor();
+ SelectsS[PlayerColor].SetSelect(true);
+ AudioPlayback.PlaySound(SoundLib.Option);
end;
if (Interaction = 4) then
begin
- RefreshColor();
- SelectsS[PlayerColor].SetSelect(true);
+ PlayerLevel[PlayerIndex] := LevelIndex;
+ AudioPlayback.PlaySound(SoundLib.Option);
end;
+
if (Interaction = 5) then
begin
- PlayerLevel[PlayerIndex] := LevelIndex;
+ SelectPrev;
+ SetAvatarScroll;
+ PlayerAvatars[PlayerIndex] := AvatarTarget;
+ SetPlayerAvatar(PlayerIndex);
+
end;
+
end;
end;
@@ -783,6 +742,8 @@ constructor TScreenName.Create;
LoadFromTheme(Theme.Name);
+ PlayerSelect := AddButton(Theme.Name.PlayerSelectCurrent);
+
Theme.Name.SelectPlayersCount.oneItemOnly := true;
Theme.Name.SelectPlayersCount.showArrows := true;
PlayersCount := AddSelectSlide(Theme.Name.SelectPlayersCount, CountIndex, IPlayers);
@@ -794,10 +755,6 @@ constructor TScreenName.Create;
PlayerCurrentText[I] := AddText(Theme.Name.PlayerSelectText[I]);
end;
- PlayerSelect := AddButton(Theme.Name.PlayerSelectCurrent);
-
- PlayerAvatar := AddButton(Theme.Name.PlayerButtonAvatar);
- PlayerAvatarIID := High(Interactions);
PlayerName := AddButton(Theme.Name.PlayerButtonName);
Button[PlayerName].Text[0].Writable := true;
@@ -810,8 +767,11 @@ constructor TScreenName.Create;
Theme.Name.SelectPlayerLevel.showArrows := true;
PlayerSelectLevel := AddSelectSlide(Theme.Name.SelectPlayerLevel, LevelIndex, UIni.IDifficulty, 'OPTION_VALUE_');
- isScrolling := false;
+ PlayerAvatar := AddButton(Theme.Name.PlayerButtonAvatar);
+ PlayerAvatarIID := High(Interactions);
+ isScrolling := false;
+ Self.PreloadCovers := true;
GenerateAvatars();
NumVisibleAvatars := Theme.Name.PlayerScrollAvatar.NumAvatars;
@@ -1061,7 +1021,11 @@ function TScreenName.Draw: boolean;
isScrolling := false;
AvatarCurrent := AvatarTarget;
end;
- end;
+ end
+ else if Self.PreloadCovers then //start to preload covers slowly if don't exists user interaction
+ UGraphic.ScreenSong.LoadCovers()
+ else //enable again after user interaction
+ Self.PreloadCovers := true;
SetAvatarScroll;
diff --git a/src/screens/UScreenScore.pas b/src/screens/UScreenScore.pas
index abacb626..5ac9a306 100644
--- a/src/screens/UScreenScore.pas
+++ b/src/screens/UScreenScore.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,10 +16,10 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
-
+
unit UScreenScore;
interface
@@ -216,17 +216,18 @@ implementation
uses
UAvatars,
UGraphic,
- UScreenSong,
- UMenuStatic,
- UTime,
- USkins,
- ULog,
ULanguage,
+ ULog,
+ UMenuStatic,
UNote,
- USong,
UPathUtils,
- UUnicodeUtils,
- UScreenPopup;
+ USkins,
+ USong,
+ UScreenTop5,
+ UScreenPopup,
+ UScreenSong,
+ UTime,
+ UUnicodeUtils;
{
*****************************
@@ -262,7 +263,7 @@ procedure SendScore(SendInfo: TSendInfo; Website: integer);
end;
SendStatus := DllMan.WebsiteSendScore(SendInfo);
-
+
case SendStatus of
0: ScreenPopupError.ShowPopup(Language.Translate('WEBSITE_NO_CONNECTION'));
2: ScreenPopupError.ShowPopup(Language.Translate('WEBSITE_LOGIN_ERROR'));
@@ -422,7 +423,6 @@ function TScreenScore.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Press
else
CurrentRound := 0;
- AudioPlayback.PlaySound(SoundLib.Change);
RefreshTexts;
if not (Ini.SavePlayback=1) then
@@ -448,7 +448,6 @@ function TScreenScore.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Press
else
CurrentRound := Length(PlaylistMedley.Stats)-1;
- AudioPlayback.PlaySound(SoundLib.Change);
RefreshTexts;
if not (Ini.SavePlayback=1) then
@@ -502,7 +501,7 @@ function TScreenScore.ParseMouse(MouseButton: Integer; BtnDown: Boolean; X, Y: i
else
SetInteraction(-1);
- if (MouseButton = SDL_BUTTON_LEFT) and BtnDown then
+ if (MouseButton in [SDL_BUTTON_RIGHT, SDL_BUTTON_LEFT]) and BtnDown then
ParseInput(SDLK_RETURN, 0, true);
end;
@@ -877,6 +876,10 @@ constructor TScreenScore.Create;
//## the bars that visualize the score ##
+ //rating pictures that show a picture according to your rate
+ for I := 0 to 7 do
+ Tex_Score_Ratings[I] := UTexture.Texture.LoadTexture('Rating_'+IntToStr(I), TEXTURE_TYPE_TRANSPARENT);
+
//NoteBar ScoreBar
LoadColor(R, G, B, 'P' + IntToStr(Player) + 'Dark');
Col2 := $10000 * Round(R*255) + $100 * Round(G*255) + Round(B*255);
@@ -1091,6 +1094,11 @@ procedure TScreenScore.OnShow;
V: array[1..UIni.IMaxPlayerCount] of boolean; // visibility array
ArrayStartModifier: integer;
begin
+ if not Assigned(UGraphic.ScreenPopupSendScore) then //load the screens only the first time
+ begin
+ UGraphic.ScreenPopupSendScore := TScreenPopupSendScore.Create();
+ UGraphic.ScreenTop5 := TScreenTop5.Create();
+ end;
FinishScreenDraw := false;
@@ -1505,7 +1513,7 @@ procedure TscreenScore.DrawRating(PlayerNumber: integer; Rating: integer);
glBindTexture(GL_TEXTURE_2D, Tex_Score_Ratings[Rating].TexNum);
glColor3f(1.0, 1.0, 1.0);
-
+
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
diff --git a/src/screens/UScreenSong.pas b/src/screens/UScreenSong.pas
index fc46f194..5330cc80 100644
--- a/src/screens/UScreenSong.pas
+++ b/src/screens/UScreenSong.pas
@@ -1,9 +1,9 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
- COPYRIGHT file distributed with this source distribution.
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
+ COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
You should have received a copy of the GNU General Public License
along with this program. Check "LICENSE" file. If not, see
- .
+ .
*}
@@ -25,22 +25,17 @@
interface
-{$IFDEF FPC}
- {$MODE Delphi}
-{$ENDIF}
+{$MODE OBJFPC}
{$I switches.inc}
uses
SysUtils,
sdl2,
- UCatCovers,
UCommon,
UDataBase,
- UDisplay,
UDllManager,
UPath,
- UFiles,
UIni,
ULanguage,
ULog,
@@ -51,11 +46,6 @@ interface
USongs,
UTexture,
UThemes,
- UUnicodeStringHelper,
- {$IFDEF MSWINDOWS}
- LazUTF8Classes,
- LazUTF8,
- {$ENDIF}
UTime;
type
@@ -64,28 +54,19 @@ interface
TScreenSong = class(TMenu)
private
Equalizer: Tms_Equalizer;
-
- PreviewOpened: Integer; // interaction of the Song that is loaded for preview music
- // -1 if nothing is opened
-
- isScrolling: boolean; // true if song flow is about to move
-
+ PreviewOpened: Integer; //interaction of the song that is loaded for preview music -1 if nothing is opened
+ IsScrolling: boolean; //true if song flow is about to move
fCurrentVideo: IVideo;
- MainChessboardMinLine: integer;
- MainListMinLine: integer;
-
- LastVisibleSongIndex: integer;
- FirstVisibleSongIndex: integer;
-
- ListLastVisibleSongIndex: integer;
+ MinLine: integer; //current chessboard line
+ LastMinLine: integer; //used on list mode
ListFirstVisibleSongIndex: integer;
MainListFirstVisibleSongIndex: integer;
-
- LastSelectMouse: integer;
- LastSelectTime: integer;
-
+ Covers: integer; //number of covers to preload
+ PreloadCovers: boolean; //flag to stop to preload covers when exists an user interaction
procedure StartMusicPreview();
procedure StartVideoPreview();
+ procedure LoadCover(B: integer);
+ procedure LoadMainCover();
public
TextArtist: integer;
TextTitle: integer;
@@ -98,8 +79,8 @@ TScreenSong = class(TMenu)
VideoIcon: cardinal;
//Medley Icons
- MedleyIcon: cardinal;
- CalcMedleyIcon: cardinal;
+ MedleyIcon: cardinal;
+ CalcMedleyIcon: cardinal;
TextMedleyArtist: array of integer;
TextMedleyTitle: array of integer;
TextMedleyNumber: array of integer;
@@ -122,9 +103,6 @@ TScreenSong = class(TMenu)
CoverFull: boolean;
CoverTime: real;
- CoverX: integer;
- CoverY: integer;
- CoverW: integer;
is_jump: boolean; // Jump to Song Mod
is_jump_title:boolean; //Jump to SOng MOd-YTrue if search for Title
@@ -167,7 +145,9 @@ TScreenSong = class(TMenu)
TextNonParty: array of cardinal;
// for chessboard songmenu
- StaticActual: integer;
+ MainCover: integer;
+ SongSelectionUp: integer;
+ SongSelectionDown: integer;
// for list songmenu
StaticList: array of integer;
@@ -179,7 +159,7 @@ TScreenSong = class(TMenu)
ListMedleyIcon: array of integer;
ListCalcMedleyIcon: array of integer;
ListDuetIcon: array of integer;
- ListRapIcon: array of integer;
+ ListRapIcon: array of integer;
PlayMidi: boolean;
MidiFadeIn: boolean;
@@ -216,54 +196,30 @@ TScreenSong = class(TMenu)
MessageTime: cardinal;
MessageTimeFade: cardinal;
- ChessboardMinLine: integer;
- ListMinLine: integer;
- ListLastMinLine: integer;
-
SongIndex: integer; //Index of Song that is playing since UScreenScore...
constructor Create; override;
- procedure SetScroll;
- procedure SetScrollRefresh;
-
+ procedure SetScroll(force: boolean = false);
procedure SetRouletteScroll;
procedure SetChessboardScroll;
procedure SetCarouselScroll;
procedure SetSlotMachineScroll;
procedure SetSlideScroll;
procedure SetListScroll;
-
- procedure SetRouletteScrollRefresh;
- procedure SetChessboardScrollRefresh;
- procedure SetCarouselScrollRefresh;
- procedure SetSlotMachineScrollRefresh;
- procedure SetSlideScrollRefresh;
- procedure SetListScrollRefresh;
-
function ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean; override;
-
function ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean; override;
- function ParseMouseRoulette(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
- function ParseMouseChessboard(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
-
function Draw: boolean; override;
- function FinishedMusic: boolean;
-
- procedure WriteMessage(msg: UTF8String);
procedure FadeMessage();
procedure CloseMessage();
-
- procedure GenerateThumbnails();
+ procedure AddButtons();
procedure OnShow; override;
procedure OnShowFinish; override;
procedure OnHide; override;
- procedure SelectNext(onlyFix: boolean = true);
- procedure SelectPrev;
+ procedure SelectNext();
+ procedure SelectPrev();
procedure SelectNextRow;
procedure SelectPrevRow;
- procedure SelectNextListRow;
- procedure SelectPrevListRow;
- procedure SkipTo(Target: cardinal; TargetInteraction: integer = 0; VS: integer = 0);
+ procedure SkipTo(Target: cardinal);
procedure FixSelected; //Show Wrong Song when Tabs on Fix
procedure FixSelected2; //Show Wrong Song when Tabs on Fix
procedure ShowCatTL(Cat: integer);// Show Cat in Top left
@@ -272,13 +228,11 @@ TScreenSong = class(TMenu)
procedure Refresh;//(GiveStats: boolean); //Refresh Song Sorting
procedure ChangeSorting(Tabs: integer; Duet: boolean; Sorting: integer);
procedure ChangeMusic;
-
function FreeListMode: boolean;
//Party Mode
procedure SelectRandomSong;
procedure SetJoker;
- procedure SetStatics;
procedure ColorizeJokers;
//procedure PartyTimeLimit;
function PermitCategory(ID: integer): boolean;
@@ -291,13 +245,9 @@ TScreenSong = class(TMenu)
procedure OnSongSelect; // called when song flows movement stops at a song
procedure OnSongDeSelect; // called before current song is deselected
- procedure LoadCover(NumberOfButtonInArray: integer);
-
+ procedure LoadCovers();
procedure SongScore;
- //Extensions
- procedure DrawExtensions;
-
//Medley
procedure StartMedley(NumSongs: integer; MinSource: TMedleySource);
function getVisibleMedleyArr(MinSource: TMedleySource): TVisArr;
@@ -312,8 +262,6 @@ TScreenSong = class(TMenu)
procedure ParseInputNextVertical(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean);
procedure ParseInputPrevVertical(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean);
-
- procedure ResetScrollList;
end;
implementation
@@ -321,7 +269,7 @@ implementation
uses
Math,
dglOpenGL,
- UCovers,
+ StrUtils,
UGraphic,
UMain,
UMenuButton,
@@ -329,9 +277,12 @@ implementation
UAudioPlaybackBase,
UParty,
UPlaylist,
+ UScreenPopup,
UScreenSongMenu,
+ UScreenSongJumpto,
USkins,
- UUnicodeUtils, UMenuStatic;
+ UUnicodeUtils,
+ UMenuStatic;
const
MAX_TIME = 30;
@@ -341,10 +292,7 @@ implementation
// ***** Public methods ****** //
function TScreenSong.FreeListMode: boolean;
begin
- if ((Mode = smNormal) or (Mode = smPartyTournament) or (Mode = smPartyFree) or (Mode = smJukebox)) then
- Result := true
- else
- Result := false;
+ Result := (Mode in [smNormal, smPartyTournament, smPartyFree, smJukebox]);
end;
//Show Wrong Song when Tabs on Fix
@@ -352,7 +300,7 @@ procedure TScreenSong.FixSelected;
var
I, I2: integer;
begin
- if (CatSongs.VisibleSongs > 0) then
+ if (USongs.CatSongs.GetVisibleSongs() > 0) then
begin
I2:= 0;
for I := Low(CatSongs.Song) to High(Catsongs.Song) do
@@ -373,7 +321,7 @@ procedure TScreenSong.FixSelected2;
var
I, I2: integer;
begin
- if (CatSongs.VisibleSongs > 0) then
+ if (USongs.CatSongs.GetVisibleSongs() > 0) then
begin
I2:= 0;
for I := Low(CatSongs.Song) to High(Catsongs.Song) do
@@ -420,23 +368,10 @@ procedure TScreenSong.HideCatTL;
end;
//Show Cat in Top Left Mod End
-procedure TScreenSong.ResetScrollList();
-begin
-
- if (TSongMenuMode(Ini.SongMenu) = smList) then
- begin
- ListFirstVisibleSongIndex := 0;
- ListMinLine := 0;
- ListLastMinLine := 0;
-
- SetScrollRefresh;
- end;
-
-end;
-
procedure TScreenSong.ParseInputNextHorizontal(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean);
var
SDL_ModState: word;
+ I: integer;
begin
CloseMessage();
@@ -456,17 +391,10 @@ procedure TScreenSong.ParseInputNextHorizontal(PressedKey: cardinal; CharCode: U
end
else
begin
- if (TSongMenuMode(Ini.SongMenu) <> smList) then
- begin
- AudioPlayback.PlaySound(SoundLib.Change);
- SelectNext(false);
- SetScrollRefresh;
- end
- else
+ for I := 1 to IfThen(PressedKey = SDLK_PAGEDOWN, Theme.Song.Cover.Rows, 1) do
begin
- // list change row
- SelectNextListRow;
- SetScrollRefresh;
+ Self.SelectNext();
+ Self.SetScroll(true)
end;
end;
end;
@@ -475,6 +403,7 @@ procedure TScreenSong.ParseInputNextHorizontal(PressedKey: cardinal; CharCode: U
procedure TScreenSong.ParseInputPrevHorizontal(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean);
var
SDL_ModState: word;
+ I: integer;
begin
CloseMessage();
@@ -494,17 +423,10 @@ procedure TScreenSong.ParseInputPrevHorizontal(PressedKey: cardinal; CharCode: U
end
else
begin
- if (TSongMenuMode(Ini.SongMenu) <> smList) then
- begin
- AudioPlayback.PlaySound(SoundLib.Change);
- SelectPrev;
- SetScrollRefresh;
- end
- else
+ for I := 1 to IfThen(PressedKey = SDLK_PAGEUP, Theme.Song.Cover.Rows, 1) do
begin
- // list change row
- SelectPrevListRow;
- SetScrollRefresh;
+ Self.SelectPrev();
+ Self.SetScroll(true)
end;
end;
end;
@@ -524,7 +446,7 @@ procedure TScreenSong.ParseInputNextVertical(PressedKey: cardinal; CharCode: UCS
if (TSongMenuMode(Ini.SongMenu) <> smChessboard) and (TSongMenuMode(Ini.SongMenu) <> smMosaic) and (TSongMenuMode(Ini.SongMenu) <> smSlotMachine) then
begin
//Cat Change Hack
- if Ini.TabsAtStartup = 1 then
+ if UIni.Ini.Tabs = 1 then
begin
I := Interaction;
@@ -546,21 +468,15 @@ procedure TScreenSong.ParseInputNextVertical(PressedKey: cardinal; CharCode: UCS
CatSongs.ClickCategoryButton(Interaction);
SelectNext;
FixSelected;
-
- //Play Music:
- AudioPlayback.PlaySound(SoundLib.Change);
end;
//Cat Change Hack End}
end
else
- begin
- // chessboard change row
- SelectNextRow;
- SetScrollRefresh;
- end;
-
- // ResetScrollList;
-
+ for I := 1 to IfThen(PressedKey = SDLK_PAGEDOWN, Theme.Song.Cover.Rows, 1) do
+ begin
+ Self.SelectNextRow();
+ Self.SetScroll(true)
+ end;
end
else
begin
@@ -568,7 +484,7 @@ procedure TScreenSong.ParseInputNextVertical(PressedKey: cardinal; CharCode: UCS
begin
// chessboard change row
SelectNextRow;
- SetScrollRefresh;
+ Self.SetScroll(true);
end;
end;
end;
@@ -588,7 +504,7 @@ procedure TScreenSong.ParseInputPrevVertical(PressedKey: cardinal; CharCode: UCS
if (TSongMenuMode(Ini.SongMenu) <> smChessboard) and (TSongMenuMode(Ini.SongMenu) <> smMosaic) and (TSongMenuMode(Ini.SongMenu) <> smSlotMachine) then
begin
//Cat Change Hack
- if Ini.TabsAtStartup = 1 then
+ if UIni.Ini.Tabs = 1 then
begin
I := Interaction;
I2 := 0;
@@ -612,21 +528,15 @@ procedure TScreenSong.ParseInputPrevVertical(PressedKey: cardinal; CharCode: UCS
CatSongs.ClickCategoryButton(I);
SelectNext;
FixSelected;
-
- //Play Music:
- AudioPlayback.PlaySound(SoundLib.Change);
end;
//Cat Change Hack End}
end
else
- begin
- // chessboard change row
- SelectPrevRow;
- SetScrollRefresh;
- end;
-
- // ResetScrollList;
-
+ for I := 1 to IfThen(PressedKey = SDLK_PAGEUP, Theme.Song.Cover.Rows, 1) do
+ begin
+ Self.SelectPrevRow();
+ Self.SetScroll(true)
+ end;
end
else
begin
@@ -634,7 +544,7 @@ procedure TScreenSong.ParseInputPrevVertical(PressedKey: cardinal; CharCode: UCS
begin
// chessboard change row
SelectPrevRow;
- SetScrollRefresh;
+ Self.SetScroll(true);
end;
end;
@@ -646,19 +556,16 @@ procedure TScreenSong.ParseInputPrevVertical(PressedKey: cardinal; CharCode: UCS
// should be checked to know the next window to load;
function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
var
- I: integer;
- I2: integer;
- SDL_ModState: word;
- UpperLetter: UCS4Char;
- TempStr: UTF8String;
- VerifySong, WebList: string;
+ I: integer;
+ I2: integer;
+ SDL_ModState: word;
+ PressedKeyEncoded: UTF8String;
+ Song: USong.TSong;
+ WebList: string;
Fix: boolean;
- VS: integer;
begin
Result := true;
- VS := CatSongs.VisibleSongs;
-
//Song Screen Extensions (Jumpto + Menu)
if (ScreenSongMenu.Visible) then
begin
@@ -673,123 +580,36 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
if (PressedDown) then
begin // Key Down
+ Self.PreloadCovers := false;
+ SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT);
- SDL_ModState := SDL_GetModState and (KMOD_LSHIFT + KMOD_RSHIFT
- + KMOD_LCTRL + KMOD_RCTRL + KMOD_LALT + KMOD_RALT);
-
- //Jump to Artist/Titel
- if ((SDL_ModState and KMOD_LALT <> 0) and (FreeListMode)) then
+ //jump to artist or title letter
+ if Self.FreeListMode() and ((SDL_ModState = KMOD_LCTRL) or (SDL_ModState = KMOD_LALT)) then
begin
- if(PressedKey > 1114111) then
- begin
- Exit;
- end;
- UpperLetter := UCS4UpperCase(PressedKey);
-
if (PressedKey in ([SDLK_a..SDLK_z, SDLK_0..SDLK_9])) then
begin
- I2 := Length(CatSongs.Song);
-
- //Jump To Titel
- if (SDL_ModState = (KMOD_LALT or KMOD_LSHIFT)) then
- begin
- for I := 1 to High(CatSongs.Song) do
- begin
- if (CatSongs.Song[(I + Interaction) mod I2].Visible) then
- begin
- TempStr := CatSongs.Song[(I + Interaction) mod I2].Title;
- if (Length(TempStr) > 0) and
- (UCS4UpperCase(UTF8ToUCS4String(TempStr)[0]) = UpperLetter) then
- begin
- SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2), (I + Interaction) mod I2, VS);
-
- AudioPlayback.PlaySound(SoundLib.Change);
-
- SetScrollRefresh;
- //Break and Exit
- Exit;
- end;
- end;
- end;
- end
- //Jump to Artist
- else if (SDL_ModState = KMOD_LALT) then
- begin
- for I := 1 to High(CatSongs.Song) do
- begin
- if (CatSongs.Song[(I + Interaction) mod I2].Visible) then
- begin
- TempStr := CatSongs.Song[(I + Interaction) mod I2].Artist;
- if (Length(TempStr) > 0) and
- (UCS4UpperCase(UTF8ToUCS4String(TempStr)[0]) = UpperLetter) then
- begin
- SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2), (I + Interaction) mod I2, VS);
-
- AudioPlayback.PlaySound(SoundLib.Change);
-
- SetScrollRefresh;
-
- //Break and Exit
- Exit;
- end;
- end;
- end;
- end;
- end;
-
- Exit;
- end
- else if (((PressedKey = SDLK_PAGEUP) or (PressedKey = SDLK_PAGEDOWN)) and (FreeListMode)) then
- begin
- I2 := Length(CatSongs.Song);
- //get first letter of artist of currently selected song
- UpperLetter := UCS4UpperCase(UTF8ToUCS4String(CatSongs.Song[(Interaction) mod I2].Artist)[0]);
- if (PressedKey = SDLK_PAGEDOWN) then
- begin
- for I := 1 to High(CatSongs.Song) do
- begin
- if (CatSongs.Song[(I + Interaction) mod I2].Visible) then
- begin
- TempStr := CatSongs.Song[(I + Interaction) mod I2].Artist;
- if (Length(TempStr) > 0) and
- (UCS4UpperCase(UTF8ToUCS4String(TempStr)[0]) <> UpperLetter) then
- begin
- SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2), (I + Interaction) mod I2, VS);
- AudioPlayback.PlaySound(SoundLib.Change);
- SetScrollRefresh;
- Exit;
- end;
- end;
- end;
- end
- else if (PressedKey = SDLK_PAGEUP) then
- begin
- for I := High(CatSongs.Song) downto 1 do
+ PressedKeyEncoded := UUnicodeUtils.UCS4ToUTF8String(PressedKey);
+ for I2 := 0 to 1 do
begin
- if (CatSongs.Song[(I + Interaction) mod I2].Visible) then
+ I := 0;
+ for Song in CatSongs.Song do
begin
- TempStr := CatSongs.Song[(I + Interaction) mod I2].Artist;
- if (Length(TempStr) > 0) and
- (UCS4UpperCase(UTF8ToUCS4String(TempStr)[0]) <> UpperLetter) then
+ if
+ Song.Visible
+ and (((I2 = 0) and (I > Interaction)) or ((I2 = 1) and (I < Interaction)))
+ and UUnicodeUtils.UTF8StartsText(PressedKeyEncoded, IfThen(SDL_ModState = KMOD_LCTRL, Song.Title, Song.Artist))
+ then
begin
- SkipTo(CatSongs.VisibleIndex((I + Interaction) mod I2), (I + Interaction) mod I2, VS);
- AudioPlayback.PlaySound(SoundLib.Change);
- SetScrollRefresh;
+ Self.SkipTo(I);
Exit;
end;
+ Inc(I);
end;
end;
end;
Exit;
end;
- // **********************
- // * workaround for LCTRL+R: it should be changed when we have a solution for the
- // * CTRL+'A'..'Z' problem
- if (SDL_ModState = KMOD_LCTRL) and (PressedKey = SDLK_R) then
- CharCode := UCS4Char('R');
- // **********************
-
// check normal keys
case UCS4UpperCase(CharCode) of
Ord('Q'):
@@ -912,7 +732,7 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
else if not MakeMedley and
(CatSongs.Song[Interaction].Medley.Source>=msCalculated) and
(Mode = smNormal)then
- StartMedley(0, msCalculated);
+ StartMedley(0, msCalculated);
end;
Ord('D'):
@@ -927,11 +747,11 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
Ord('R'):
begin
- Randomize;
+ Randomize;
if (Songs.SongList.Count > 0) and
(FreeListMode) then
begin
- if (SDL_ModState = KMOD_LSHIFT) and (Ini.TabsAtStartup = 1) then // random category
+ if (SDL_ModState = KMOD_LSHIFT) and (UIni.Ini.Tabs = 1) then // random category
begin
I2 := 0; // count cats
for I := 0 to High(CatSongs.Song) do
@@ -962,7 +782,7 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
end;
end
- else if (SDL_ModState = KMOD_LCTRL) and (Ini.TabsAtStartup = 1) then // random in all categories
+ else if (SDL_ModState = KMOD_LCTRL) and (UIni.Ini.Tabs = 1) then // random in all categories
begin
repeat
I2 := Random(High(CatSongs.Song) + 1);
@@ -991,15 +811,14 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
Inc(I2);
// choose song
- SkipTo(I2 - I);
+ Self.SkipTo(I2 - I);
end
else // random in one category
begin
- SkipTo(Random(CatSongs.VisibleSongs));
+ Self.SkipTo(Random(USongs.CatSongs.GetVisibleSongs()));
end;
- AudioPlayback.PlaySound(SoundLib.Change);
- SetScrollRefresh;
+ Self.SetScroll(true);
end;
Exit;
end;
@@ -1014,9 +833,7 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
for I:= 0 to High(Database.NetworkUser) do
begin
DllMan.LoadWebsite(I);
- VerifySong := DllMan.WebsiteVerifySong(CatSongs.Song[Interaction].MD5);
-
- if (VerifySong = 'OK_SONG') then
+ if (DllMan.WebsiteVerifySong(WideString(CatSongs.Song[Interaction].MD5)) = 'OK_SONG') then
WebList := Database.NetworkUser[I].Website + #13
end;
@@ -1034,14 +851,15 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
SDLK_ESCAPE,
SDLK_BACKSPACE :
begin
- CloseMessage();
+ Self.CloseMessage();
+ Self.HideCatTL();
if (FreeListMode) then
begin
Fix := true;
//On Escape goto Cat-List Hack
- if (Ini.TabsAtStartup = 1) and (CatSongs.CatNumShow <> -1) then
+ if (UIni.Ini.Tabs = 1) and (CatSongs.CatNumShow <> -1) then
begin
//Find Category
@@ -1074,49 +892,40 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
//Stop Music
//StopMusicPreview();
- OnSongDeSelect;
+ Self.OnSongDeSelect();
CatSongs.ShowCategoryList;
- //Show Cat in Top Left Mod
- HideCatTL;
-
//Show Wrong Song when Tabs on Fix
if (Fix) then
begin
SelectNext;
FixSelected;
+ Self.SetScroll(true);
end;
- ChessboardMinLine := MainChessboardMinLine;
- ListMinLine := MainListMinLine;
ListFirstVisibleSongIndex := MainListFirstVisibleSongIndex;
if (TSongMenuMode(Ini.SongMenu) in [smList]) then
- ListLastMinLine := -1;
+ Self.LastMinLine := -1;
end
else
begin
//On Escape goto Cat-List Hack End
//Tabs off and in Search or Playlist -> Go back to Song view
+ Self.StopMusicPreview();
if (CatSongs.CatNumShow < -1) then
begin
- //Atm: Set Empty Filter
CatSongs.SetFilter('', fltAll);
-
- //Show Cat in Top Left Mod
- HideCatTL;
Interaction := 0;
-
- //Show Wrong Song when Tabs on Fix
- SelectNext;
- FixSelected;
+ //it not needed in all modes, for example chessboard
+ Self.SelectNext();
+ Self.FixSelected();
+ Self.SetScroll(true);
end
else
begin
- StopMusicPreview();
- AudioPlayback.PlaySound(SoundLib.Back);
//if (Mode = smPartyTournament) then
// CurrentPartyTime := MAX_TIME - StrToInt(Text[TextPartyTime].Text);
@@ -1135,30 +944,23 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
//When in party Mode then Ask before Close
else if (Mode = smPartyClassic) then
begin
- AudioPlayback.PlaySound(SoundLib.Back);
CheckFadeTo(@ScreenMain,'MSG_END_PARTY');
end;
if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic, smList, smSlotMachine]) then
- SetScrollRefresh;
+ Self.SetScroll(true);
end;
SDLK_RETURN:
begin
CloseMessage();
-
- LastSelectTime := SDL_GetTicks;
-
if (Songs.SongList.Count > 0) then
begin
if CatSongs.Song[Interaction].Main then
begin // clicked on Category Button
- MainChessboardMinLine := ChessboardMinLine;
- ChessboardMinLine := 0;
-
- MainListMinLine := ListMinLine;
- ListMinLine := 0;
+ Self.MinLine := 0;
+ Self.LastMinLine := 0;
ListFirstVisibleSongIndex := 0;
//Show Cat in Top Left Mod
@@ -1169,10 +971,7 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
//Show Wrong Song when Tabs on Fix
SelectNext;
FixSelected;
-
- SetScrollRefresh;
-
- ResetScrollList;
+ Self.SetScroll(true);
end
else
begin // clicked on song
@@ -1247,41 +1046,29 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
end;
end;
-
- SDLK_DOWN:
+ SDLK_DOWN, SDLK_PAGEDOWN:
begin
- LastSelectTime := SDL_GetTicks;
-
if (TSongMenuMode(Ini.SongMenu) in [smSlotMachine, smList]) then
ParseInputNextHorizontal(PressedKey, CharCode, PressedDown)
else
ParseInputNextVertical(PressedKey, CharCode, PressedDown);
end;
-
- SDLK_UP:
+ SDLK_UP, SDLK_PAGEUP:
begin
- LastSelectTime := SDL_GetTicks;
-
if (TSongMenuMode(Ini.SongMenu) in [smSlotMachine, smList]) then
ParseInputPrevHorizontal(PressedKey, CharCode, PressedDown)
else
ParseInputPrevVertical(PressedKey, CharCode, PressedDown);
end;
-
SDLK_RIGHT:
begin
- LastSelectTime := SDL_GetTicks;
-
if (TSongMenuMode(Ini.SongMenu) in [smSlotMachine, smList]) then
ParseInputNextVertical(PressedKey, CharCode, PressedDown)
else
ParseInputNextHorizontal(PressedKey, CharCode, PressedDown);
end;
-
SDLK_LEFT:
begin
- LastSelectTime := SDL_GetTicks;
-
if (TSongMenuMode(Ini.SongMenu) in [smSlotMachine, smList]) then
ParseInputPrevVertical(PressedKey, CharCode, PressedDown)
else
@@ -1292,8 +1079,11 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
if (Mode = smJukebox) and (not CatSongs.Song[Interaction].Main) then
ScreenJukebox.AddSongToJukeboxList(Interaction);
- if (Mode = smNormal) and (CatSongs.Song[Interaction].isDuet) then
- DuetChange := not DuetChange;
+ if (Mode = smNormal) and (USongs.CatSongs.Song[Interaction].isDuet) then
+ begin
+ Self.DuetChange := not Self.DuetChange;
+ Self.SetScroll(true);
+ end;
end;
SDLK_1:
begin //Joker
@@ -1345,225 +1135,59 @@ function TScreenSong.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Presse
end;
function TScreenSong.ParseMouse(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
+var
+ B: integer;
begin
+ Result := true;
+ Self.PreloadCovers := false;
- // transfer mousecords to the 800x600 raster we use to draw
+ //transfer mousecords to the 800x600 raster we use to draw
+ Y := Round((Y / ScreenH) * RenderH);
X := Round((X / (ScreenW / Screens)) * RenderW);
if (X > RenderW) then
X := X - RenderW;
- Y := Round((Y / ScreenH) * RenderH);
-
- if (ScreenSongMenu.Visible) then
- begin
- Result := ScreenSongMenu.ParseMouse(MouseButton, BtnDown, X, Y);
- exit;
- end
- else if (ScreenSongJumpTo.Visible) then
- begin
- Result := ScreenSongJumpTo.ParseMouse(MouseButton, BtnDown, X, Y);
- exit;
- end
- else // no extension visible
- begin
-
- case TSongMenuMode(Ini.SongMenu) of
- smChessboard: Result := ParseMouseChessboard(MouseButton, BtnDown, X, Y);
- smMosaic: Result := ParseMouseChessboard(MouseButton, BtnDown, X, Y);
- smSlotMachine: Result := ParseMouseChessboard(MouseButton, BtnDown, X, Y);
- else
- Result := ParseMouseRoulette(MouseButton, BtnDown, X, Y);
- end;
- end;
-end;
-
-function TScreenSong.ParseMouseChessboard(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
-var
- B: integer;
-begin
- Result := true;
-
- if (BtnDown) then
+ if UGraphic.ScreenSongMenu.Visible then
+ Result := UGraphic.ScreenSongMenu.ParseMouse(MouseButton, BtnDown, X, Y)
+ else if UGraphic.ScreenSongJumpTo.Visible then
+ Result := UGraphic.ScreenSongJumpTo.ParseMouse(MouseButton, BtnDown, X, Y)
+ else if BtnDown then
begin
- //if RightMbESC is set, send ESC keypress
- if RightMbESC and (MouseButton = SDL_BUTTON_RIGHT) then
- Result:=ParseInput(SDLK_ESCAPE, 0, true)
-
- //song scrolling with mousewheel
- else if (MouseButton = SDL_BUTTON_WHEELDOWN) then
- ParseInput(SDLK_DOWN, 0, true)
-
- else if (MouseButton = SDL_BUTTON_WHEELUP) then
- ParseInput(SDLK_UP, 0, true)
-
- else
- begin
-
- // click cover
- for B := 0 to High(Button) do
+ case MouseButton of
+ SDL_BUTTON_LEFT:
begin
- if (Button[B].Visible) then
- begin
- if InRegion(X, Y, Button[B].GetMouseOverArea) then
- begin
- ParseInput(SDLK_RETURN, 0, true)
- end;
- end;
+ for B := 0 to High(Self.Button) do
+ if Self.Button[B].Visible and (Self.Button[B].Z > 0.9) and Self.InRegion(X, Y, Self.Button[B].GetMouseOverArea()) then //z to roulette mode fix
+ if Self.Interaction = B then
+ Self.ParseInput(SDLK_RETURN, 0, true)
+ else
+ Self.SkipTo(B);
+
+ if Self.InRegion(X, Y, Self.Statics[Self.SongSelectionUp].GetMouseOverArea()) then //arrow to page up
+ Self.ParseInput(SDLK_PAGEUP, 0, true)
+ else if Self.InRegion(X, Y, Self.Statics[Self.SongSelectionDown].GetMouseOverArea()) then //arrow to page down
+ Self.ParseInput(SDLK_PAGEDOWN, 0, true);
end;
+ SDL_BUTTON_RIGHT: //go back
+ if Self.RightMbESC then
+ Result := Self.ParseInput(SDLK_ESCAPE, 0, true);
+ SDL_BUTTON_MIDDLE: //open song menu
+ Self.ParseInput(0, Ord('M'), true);
+ SDL_BUTTON_WHEELDOWN: //next song
+ Self.SelectNext();
+ SDL_BUTTON_WHEELUP: //previous song
+ Self.SelectPrev();
end;
-
end
- else
- begin
-
- // hover cover
- for B := 0 to High(Button) do
- begin
- if (Button[B].Visible) then
+ else if UIni.TSongMenuMode(UIni.Ini.SongMenu) = smChessboard then //hover cover
+ for B := 0 to High(Self.Button) do
+ if Self.Button[B].Visible and Self.InRegion(X, Y, Self.Button[B].GetMouseOverArea()) and (Self.Interaction <> B) then
begin
- if InRegion(X, Y, Button[B].GetMouseOverArea) then
- begin
- if (Interaction <> B) then
- begin
- // play current hover
- isScrolling := false;
- OnSongDeSelect;
- Interaction := B;
- SetScrollRefresh;
- LastSelectMouse := SDL_GetTicks;
- LastSelectTime := SDL_GetTicks;
- end;
- end;
+ Self.Interaction := B;
+ Self.SongTarget := B;
+ Self.OnSongDeSelect();
+ Self.SetScroll();
end;
- end;
-
- end;
-end;
-
-function TScreenSong.ParseMouseRoulette(MouseButton: integer; BtnDown: boolean; X, Y: integer): boolean;
-var
- I, J: Integer;
- Btn: Integer;
-begin
- Result := true;
-
- if (BtnDown) then
- begin
- //if RightMbESC is set, send ESC keypress
- if RightMbESC and (MouseButton = SDL_BUTTON_RIGHT) then
- Result:=ParseInput(SDLK_ESCAPE, 0, true)
-
- //song scrolling with mousewheel
- else if (MouseButton = SDL_BUTTON_WHEELDOWN) then
- ParseInput(SDLK_RIGHT, 0, true)
-
- else if (MouseButton = SDL_BUTTON_WHEELUP) then
- ParseInput(SDLK_LEFT, 0, true)
-
- //LMB anywhere starts
- else if (MouseButton = SDL_BUTTON_LEFT) then
- begin
- if (CatSongs.VisibleSongs =3) or (CatSongs.VisibleSongs = 4) then
- begin
- // select the second visible button left from selected
- I := 0;
- Btn := Interaction;
- while (I < 1) do
- begin
- Dec(Btn);
- if (Btn < 0) then
- Btn := High(CatSongs.Song);
-
- if (CatSongs.Song[Btn].Visible) then
- Inc(I);
- end;
-
- // test the 3 front buttons for click
- for I := 0 to 2 do
- begin
- if InRegion(X, Y, Button[Btn].GetMouseOverArea) then
- begin
- // song cover clicked
- if (I = 1) then
- begin // Selected Song clicked -> start singing
- ParseInput(SDLK_RETURN, 0, true);
- end
- else
- begin // one of the other 4 covers in the front clicked -> select it
- J := I - 1;
- while (J < 0) do
- begin
- ParseInput(SDLK_LEFT, 0, true);
- Inc(J);
- end;
-
- while (J > 0) do
- begin
- ParseInput(SDLK_RIGHT, 0, true);
- Dec(J);
- end;
- end;
- Break;
- end;
-
- Btn := CatSongs.FindNextVisible(Btn);
- if (Btn = -1) then
- Break;
- end;
- end
- else if (CatSongs.VisibleSongs > 4) then
- begin
- // select the second visible button left from selected
- I := 0;
- Btn := Interaction;
- while (I < 2) do
- begin
- Dec(Btn);
- if (Btn < 0) then
- Btn := High(CatSongs.Song);
-
- if (CatSongs.Song[Btn].Visible) then
- Inc(I);
- end;
-
- // test the 5 front buttons for click
- for I := 0 to 4 do
- begin
-
- if InRegion(X, Y, Button[Btn].GetMouseOverArea) then
- begin
- // song cover clicked
- if (I = 2) then
- begin // Selected Song clicked -> start singing
- ParseInput(SDLK_RETURN, 0, true);
- end
- else
- begin // one of the other 4 covers in the front clicked -> select it
- J := I - 2;
- while (J < 0) do
- begin
- ParseInput(SDLK_LEFT, 0, true);
- Inc(J);
- end;
-
- while (J > 0) do
- begin
- ParseInput(SDLK_RIGHT, 0, true);
- Dec(J);
- end;
- end;
- Break;
- end;
-
- Btn := CatSongs.FindNextVisible(Btn);
- if (Btn = -1) then
- Break;
- end;
- end
- else
- ParseInput(SDLK_RETURN, 0, true);
- end;
- end;
end;
procedure TScreenSong.ColorizeJokers;
@@ -1597,6 +1221,9 @@ constructor TScreenSong.Create;
begin
inherited Create;
+ Self.AddButtons();
+ Self.Covers := High(USongs.CatSongs.Song);
+ Self.PreloadCovers := true;
LoadFromTheme(Theme.Song);
TextArtist := AddText(Theme.Song.TextArtist);
@@ -1676,7 +1303,7 @@ constructor TScreenSong.Create;
Equalizer := Tms_Equalizer.Create(AudioPlayback, Theme.Song.Equalizer);
PreviewOpened := -1;
- isScrolling := false;
+ Self.IsScrolling := false;
fCurrentVideo := nil;
@@ -1718,8 +1345,15 @@ constructor TScreenSong.Create;
StaticMedley[I] := AddStatic(Theme.Song.StaticMedley[I]);
end;
- StaticActual := AddStatic(Theme.Song.Cover.SelectX, Theme.Song.Cover.SelectY,
- Theme.Song.Cover.SelectW, Theme.Song.Cover.SelectH, PATH_NONE);
+ Self.MainCover := AddStatic(
+ Theme.Song.Cover.SelectX,
+ Theme.Song.Cover.SelectY,
+ Theme.Song.Cover.SelectW,
+ Theme.Song.Cover.SelectH,
+ PATH_NONE
+ );
+ Self.SongSelectionUp := Self.AddStatic(UThemes.Theme.Song.SongSelectionUp);
+ Self.SongSelectionDown := Self.AddStatic(UThemes.Theme.Song.SongSelectionDown);
Num := Theme.Song.ListCover.Rows;
@@ -1796,194 +1430,101 @@ constructor TScreenSong.Create;
ListRapIcon[I] := AddStatic(Theme.Song.RapIcon);
end;
- MainChessboardMinLine := 0;
- MainListMinLine := 0;
-
- ChessboardMinLine := 0;
- ListMinLine := 0;
+ Self.MinLine := 0;
ListFirstVisibleSongIndex := 0;
-
- LastSelectMouse := 0;
- LastSelectTime := 0;
-
end;
procedure TScreenSong.ColorDuetNameSingers();
+ procedure SetColor(Singer: integer; Color: integer);
+ begin
+ Self.Statics[Singer].Texture.ColR := ColPlayer[Color].R;
+ Self.Statics[Singer].Texture.ColG := ColPlayer[Color].G;
+ Self.Statics[Singer].Texture.ColB := ColPlayer[Color].B;
+ end;
var
Col: TRGB;
begin
- if (PlayersPlay = 1) then
- begin
- Statics[Static2PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static2PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static2PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Col := GetPlayerLightColor(Ini.SingColor[0]);
- Statics[Static2PlayersDuetSingerP2].Texture.ColR := Col.R;
- Statics[Static2PlayersDuetSingerP2].Texture.ColG := Col.G;
- Statics[Static2PlayersDuetSingerP2].Texture.ColB := Col.B;
- end;
-
- if (PlayersPlay = 2) then
- begin
- Statics[Static2PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static2PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static2PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
+ case UNote.PlayersPlay of
+ 1:
+ begin
+ SetColor(Static2PlayersDuetSingerP1, 0);
- Statics[Static2PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static2PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static2PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
- end;
+ Col := UThemes.GetPlayerLightColor(Ini.SingColor[0]);
+ Self.Statics[Static2PlayersDuetSingerP2].Texture.ColR := Col.R;
+ Self.Statics[Static2PlayersDuetSingerP2].Texture.ColG := Col.G;
+ Self.Statics[Static2PlayersDuetSingerP2].Texture.ColB := Col.B;
+ end;
+ 2:
+ begin
+ SetColor(Static2PlayersDuetSingerP1, 0);
+ SetColor(Static2PlayersDuetSingerP2, 1);
+ end;
+ 3:
+ begin
+ SetColor(Static3PlayersDuetSingerP1, 0);
+ SetColor(Static3PlayersDuetSingerP2, 1);
+ SetColor(Static3PlayersDuetSingerP3, 2);
+ end;
+ 4:
+ begin
+ if UGraphic.Screens = 1 then
+ begin
+ SetColor(Static2PlayersDuetSingerP1, 0);
+ SetColor(Static2PlayersDuetSingerP2, 1);
+ SetColor(Static4PlayersDuetSingerP3, 2);
+ SetColor(Static4PlayersDuetSingerP4, 3);
+ end
+ else
+ begin
+ if UGraphic.ScreenAct = 1 then
+ begin
+ SetColor(Static2PlayersDuetSingerP1, 0);
+ SetColor(Static2PlayersDuetSingerP2, 1);
+ end;
- if (PlayersPlay = 3) then
- begin
- Statics[Static3PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static3PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static3PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Statics[Static3PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static3PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static3PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
-
- Statics[Static3PlayersDuetSingerP3].Texture.ColR := ColPlayer[2].R;
- Statics[Static3PlayersDuetSingerP3].Texture.ColG := ColPlayer[2].G;
- Statics[Static3PlayersDuetSingerP3].Texture.ColB := ColPlayer[2].B;
- end;
-
- if (PlayersPlay = 4) then
- begin
- if (Screens = 1) then
- begin
- Statics[Static2PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static2PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static2PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Statics[Static2PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static2PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static2PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
-
- Statics[Static4PlayersDuetSingerP3].Texture.ColR := ColPlayer[2].R;
- Statics[Static4PlayersDuetSingerP3].Texture.ColG := ColPlayer[2].G;
- Statics[Static4PlayersDuetSingerP3].Texture.ColB := ColPlayer[2].B;
-
- Statics[Static4PlayersDuetSingerP4].Texture.ColR := ColPlayer[3].R;
- Statics[Static4PlayersDuetSingerP4].Texture.ColG := ColPlayer[3].G;
- Statics[Static4PlayersDuetSingerP4].Texture.ColB := ColPlayer[3].B;
- end
- else
- begin
- if (ScreenAct = 1) then
- begin
- Statics[Static2PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static2PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static2PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Statics[Static2PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static2PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static2PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
- end;
-
- if (ScreenAct = 2) then
- begin
- Statics[Static2PlayersDuetSingerP1].Texture.ColR := ColPlayer[2].R;
- Statics[Static2PlayersDuetSingerP1].Texture.ColG := ColPlayer[2].G;
- Statics[Static2PlayersDuetSingerP1].Texture.ColB := ColPlayer[2].B;
-
- Statics[Static2PlayersDuetSingerP2].Texture.ColR := ColPlayer[3].R;
- Statics[Static2PlayersDuetSingerP2].Texture.ColG := ColPlayer[3].G;
- Statics[Static2PlayersDuetSingerP2].Texture.ColB := ColPlayer[3].B;
- end;
- end;
- end;
-
- if (PlayersPlay = 6) then
- begin
- if (Screens = 1) then
- begin
- Statics[Static3PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static3PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static3PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Statics[Static3PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static3PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static3PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
-
- Statics[Static3PlayersDuetSingerP3].Texture.ColR := ColPlayer[2].R;
- Statics[Static3PlayersDuetSingerP3].Texture.ColG := ColPlayer[2].G;
- Statics[Static3PlayersDuetSingerP3].Texture.ColB := ColPlayer[2].B;
-
- Statics[Static6PlayersDuetSingerP4].Texture.ColR := ColPlayer[3].R;
- Statics[Static6PlayersDuetSingerP4].Texture.ColG := ColPlayer[3].G;
- Statics[Static6PlayersDuetSingerP4].Texture.ColB := ColPlayer[3].B;
-
- Statics[Static6PlayersDuetSingerP5].Texture.ColR := ColPlayer[4].R;
- Statics[Static6PlayersDuetSingerP5].Texture.ColG := ColPlayer[4].G;
- Statics[Static6PlayersDuetSingerP5].Texture.ColB := ColPlayer[4].B;
-
- Statics[Static6PlayersDuetSingerP6].Texture.ColR := ColPlayer[5].R;
- Statics[Static6PlayersDuetSingerP6].Texture.ColG := ColPlayer[5].G;
- Statics[Static6PlayersDuetSingerP6].Texture.ColB := ColPlayer[5].B;
- end
- else
- begin
- if (ScreenAct = 1) then
- begin
- Statics[Static3PlayersDuetSingerP1].Texture.ColR := ColPlayer[0].R;
- Statics[Static3PlayersDuetSingerP1].Texture.ColG := ColPlayer[0].G;
- Statics[Static3PlayersDuetSingerP1].Texture.ColB := ColPlayer[0].B;
-
- Statics[Static3PlayersDuetSingerP2].Texture.ColR := ColPlayer[1].R;
- Statics[Static3PlayersDuetSingerP2].Texture.ColG := ColPlayer[1].G;
- Statics[Static3PlayersDuetSingerP2].Texture.ColB := ColPlayer[1].B;
-
- Statics[Static3PlayersDuetSingerP3].Texture.ColR := ColPlayer[2].R;
- Statics[Static3PlayersDuetSingerP3].Texture.ColG := ColPlayer[2].G;
- Statics[Static3PlayersDuetSingerP3].Texture.ColB := ColPlayer[2].B;
+ if UGraphic.ScreenAct = 2 then
+ begin
+ SetColor(Static2PlayersDuetSingerP1, 2);
+ SetColor(Static2PlayersDuetSingerP2, 3);
+ end;
+ end;
end;
-
- if (ScreenAct = 2) then
+ 6:
begin
- Statics[Static3PlayersDuetSingerP1].Texture.ColR := ColPlayer[3].R;
- Statics[Static3PlayersDuetSingerP1].Texture.ColG := ColPlayer[3].G;
- Statics[Static3PlayersDuetSingerP1].Texture.ColB := ColPlayer[3].B;
-
- Statics[Static3PlayersDuetSingerP2].Texture.ColR := ColPlayer[4].R;
- Statics[Static3PlayersDuetSingerP2].Texture.ColG := ColPlayer[4].G;
- Statics[Static3PlayersDuetSingerP2].Texture.ColB := ColPlayer[4].B;
-
- Statics[Static3PlayersDuetSingerP3].Texture.ColR := ColPlayer[5].R;
- Statics[Static3PlayersDuetSingerP3].Texture.ColG := ColPlayer[5].G;
- Statics[Static3PlayersDuetSingerP3].Texture.ColB := ColPlayer[5].B;
+ if UGraphic.Screens = 1 then
+ begin
+ SetColor(Static3PlayersDuetSingerP1, 0);
+ SetColor(Static3PlayersDuetSingerP2, 1);
+ SetColor(Static3PlayersDuetSingerP3, 2);
+ SetColor(Static6PlayersDuetSingerP4, 3);
+ SetColor(Static6PlayersDuetSingerP5, 4);
+ SetColor(Static6PlayersDuetSingerP6, 5);
+ end
+ else
+ begin
+ if UGraphic.ScreenAct = 1 then
+ begin
+ SetColor(Static3PlayersDuetSingerP1, 0);
+ SetColor(Static3PlayersDuetSingerP2, 1);
+ SetColor(Static3PlayersDuetSingerP3, 2);
+ end;
+ if UGraphic.ScreenAct = 2 then
+ begin
+ SetColor(Static3PlayersDuetSingerP1, 3);
+ SetColor(Static3PlayersDuetSingerP2, 4);
+ SetColor(Static3PlayersDuetSingerP3, 5);
+ end;
+ end;
end;
- end;
end;
end;
-procedure TScreenSong.GenerateThumbnails();
-var
- I: integer;
- CoverFile: IPath;
- Song: TSong;
-begin
- if (Length(CatSongs.Song) <= 0) then
- Exit;
-
- // set length of button array once instead for every song
- SetButtonLength(Length(CatSongs.Song));
-
- // create all buttons
- for I := 0 to High(CatSongs.Song) do
- AddButton(300 + I*250, 140, 200, 200, PATH_NONE, TEXTURE_TYPE_PLAIN, Theme.Song.Cover.Reflections);
-
- // reset selection
- if (Length(CatSongs.Song) > 0) then
- Interaction := 0;
-end;
-
{ called when song flows movement stops at a song }
procedure TScreenSong.OnSongSelect;
begin
+ Self.SongTarget := Self.Interaction;
+ Self.IsScrolling := false;
if (Ini.PreviewVolume <> 0) then
begin
StartMusicPreview;
@@ -1994,51 +1535,32 @@ procedure TScreenSong.OnSongSelect;
CoverTime := 0;
SongIndex := -1;
-
- //SetScrollRefresh;
end;
{ called before current song is deselected }
procedure TScreenSong.OnSongDeSelect;
begin
+ Self.IsScrolling := true;
DuetChange := false;
CoverTime := 10;
StopMusicPreview();
StopVideoPreview();
PreviewOpened := -1;
-
- //SetScrollRefresh;
-end;
-
-procedure TScreenSong.SetScrollRefresh;
-begin
- case TSongMenuMode(Ini.SongMenu) of
- smRoulette: SetRouletteScrollRefresh;
- smChessboard: SetChessboardScrollRefresh;
- smCarousel: SetCarouselScrollRefresh;
- smSlotMachine: SetSlotMachineScrollRefresh;
- smSlide: SetSlideScrollRefresh;
- smList: SetListScrollRefresh;
- smMosaic: SetChessboardScrollRefresh;
- end;
- {if Button[Interaction].Texture.TexNum > 0 then
- begin
- glDeleteTextures(1, PGLuint(@Button[Interaction].Texture.TexNum));
- Button[Interaction].Texture.TexNum := 0;
- end;
- Button[Interaction].Texture := Covers.FindCover(Button[Interaction].Texture.Name).GetTexture();}
- //basisbit todo here
end;
-procedure TScreenSong.SetScroll;
+procedure TScreenSong.SetScroll(force: boolean = false);
var
VS, B, SongsInCat: integer;
+ DuetPlayer1: UTF8String = '';
+ DuetPlayer2: UTF8String = '';
begin
- VS := CatSongs.VisibleSongs;
+ if not (force or Self.IsScrolling) then //to avoid unnecessary modifications if nothing changes
+ Exit;
+
+ VS := USongs.CatSongs.GetVisibleSongs();
if VS > 0 then
begin
-
case TSongMenuMode(Ini.SongMenu) of
smRoulette: SetRouletteScroll;
smChessboard: SetChessboardScroll;
@@ -2055,8 +1577,8 @@ procedure TScreenSong.SetScroll;
Statics[VideoIcon].Visible := CatSongs.Song[Interaction].Video.IsSet;
// Set visibility of medley icons
- Statics[MedleyIcon].Visible := (CatSongs.Song[Interaction].Medley.Source = msTag);
- Statics[CalcMedleyIcon].Visible := (CatSongs.Song[Interaction].Medley.Source = msCalculated);
+ Statics[MedleyIcon].Visible := (CatSongs.Song[Interaction].Medley.Source = msTag) and not CatSongs.Song[Interaction].isDuet;
+ Statics[CalcMedleyIcon].Visible := (CatSongs.Song[Interaction].Medley.Source = msCalculated) and not CatSongs.Song[Interaction].isDuet;
//Set Visibility of Duet Icon
Statics[DuetIcon].Visible := CatSongs.Song[Interaction].isDuet;
@@ -2064,7 +1586,6 @@ procedure TScreenSong.SetScroll;
//Set Visibility of Rap Icon
Statics[RapIcon].Visible := CatSongs.Song[Interaction].hasRap;
-
// Set texts
Text[TextArtist].Text := CatSongs.Song[Interaction].Artist;
Text[TextTitle].Text := CatSongs.Song[Interaction].Title;
@@ -2076,19 +1597,17 @@ procedure TScreenSong.SetScroll;
end;
// Duet Singers
- if (CatSongs.Song[Interaction].isDuet) then
+ if USongs.CatSongs.Song[Interaction].isDuet then
begin
- if (PlayersPlay = 3) or (PlayersPlay = 6) then
+ if (UNote.PlayersPlay = 3) or (UNote.PlayersPlay = 6) then
begin
Text[Text3PlayersDuetSingerP1].Visible := true;
Text[Text3PlayersDuetSingerP2].Visible := true;
Text[Text3PlayersDuetSingerP3].Visible := true;
-
Statics[Static3PlayersDuetSingerP1].Visible := true;
Statics[Static3PlayersDuetSingerP2].Visible := true;
Statics[Static3PlayersDuetSingerP3].Visible := true;
-
- if (Screens = 1) and (PlayersPlay = 6) then
+ if (UGraphic.Screens = 1) and (UNote.PlayersPlay = 6) then
begin
Statics[Static6PlayersDuetSingerP4].Visible := true;
Statics[Static6PlayersDuetSingerP5].Visible := true;
@@ -2099,11 +1618,9 @@ procedure TScreenSong.SetScroll;
begin
Text[Text2PlayersDuetSingerP1].Visible := true;
Text[Text2PlayersDuetSingerP2].Visible := true;
-
Statics[Static2PlayersDuetSingerP1].Visible := true;
Statics[Static2PlayersDuetSingerP2].Visible := true;
-
- if (Screens = 1) and (PlayersPlay = 4) then
+ if (UGraphic.Screens = 1) and (UNote.PlayersPlay = 4) then
begin
Statics[Static4PlayersDuetSingerP3].Visible := true;
Statics[Static4PlayersDuetSingerP4].Visible := true;
@@ -2111,100 +1628,68 @@ procedure TScreenSong.SetScroll;
end;
// Set duet texts
- if (DuetChange) then
+ if Self.DuetChange then
begin
- if (PlayersPlay = 3) or (PlayersPlay = 6) then
- begin
- if (PlayersPlay = 3) then
- begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[1];
- end
- else
- begin
- if (ScreenAct = 1) then
- begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[1];
- end
- else
- begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[0];
- end;
- end;
- end
- else
- begin
- Text[Text2PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text2PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[0];
- end;
+ DuetPlayer1 := CatSongs.Song[Interaction].DuetNames[1];
+ DuetPlayer2 := CatSongs.Song[Interaction].DuetNames[0];
end
else
begin
- if (PlayersPlay = 3) or (PlayersPlay = 6) then
- begin
- if (PlayersPlay = 3) then
- begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[0];
- end
- else
+ DuetPlayer1 := CatSongs.Song[Interaction].DuetNames[0];
+ DuetPlayer2 := CatSongs.Song[Interaction].DuetNames[1];
+ end;
+ case UNote.PlayersPlay of
+ 6:
begin
- if (ScreenAct = 1) then
+ if UGraphic.ScreenAct = 1 then
begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[0];
+ Text[Text3PlayersDuetSingerP1].Text := DuetPlayer1;
+ Text[Text3PlayersDuetSingerP2].Text := DuetPlayer2;
+ Text[Text3PlayersDuetSingerP3].Text := DuetPlayer1;
end
else
begin
- Text[Text3PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[1];
- Text[Text3PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text3PlayersDuetSingerP3].Text := CatSongs.Song[Interaction].DuetNames[1];
- end;
+ Text[Text3PlayersDuetSingerP1].Text := DuetPlayer2;
+ Text[Text3PlayersDuetSingerP2].Text := DuetPlayer1;
+ Text[Text3PlayersDuetSingerP3].Text := DuetPlayer2;
+ end
+ end;
+ 3:
+ begin
+ Text[Text3PlayersDuetSingerP1].Text := DuetPlayer1;
+ Text[Text3PlayersDuetSingerP2].Text := DuetPlayer2;
+ Text[Text3PlayersDuetSingerP3].Text := DuetPlayer1;
+ end;
+ else //1 or 2 players
+ begin
+ Text[Text2PlayersDuetSingerP1].Text := DuetPlayer1;
+ Text[Text2PlayersDuetSingerP2].Text := DuetPlayer2;
end;
- end
- else
- begin
- Text[Text2PlayersDuetSingerP1].Text := CatSongs.Song[Interaction].DuetNames[0];
- Text[Text2PlayersDuetSingerP2].Text := CatSongs.Song[Interaction].DuetNames[1];
- end;
end;
end
else
begin
Text[Text2PlayersDuetSingerP1].Visible := false;
Text[Text2PlayersDuetSingerP2].Visible := false;
-
- Statics[Static2PlayersDuetSingerP1].Visible := false;
- Statics[Static2PlayersDuetSingerP2].Visible := false;
-
Text[Text3PlayersDuetSingerP1].Visible := false;
Text[Text3PlayersDuetSingerP2].Visible := false;
Text[Text3PlayersDuetSingerP3].Visible := false;
-
+ Statics[Static2PlayersDuetSingerP1].Visible := false;
+ Statics[Static2PlayersDuetSingerP2].Visible := false;
Statics[Static3PlayersDuetSingerP1].Visible := false;
Statics[Static3PlayersDuetSingerP2].Visible := false;
Statics[Static3PlayersDuetSingerP3].Visible := false;
-
Statics[Static4PlayersDuetSingerP3].Visible := false;
Statics[Static4PlayersDuetSingerP4].Visible := false;
-
Statics[Static6PlayersDuetSingerP4].Visible := false;
Statics[Static6PlayersDuetSingerP5].Visible := false;
Statics[Static6PlayersDuetSingerP6].Visible := false;
-
end;
//Set Song Score
SongScore;
- if (Ini.TabsAtStartup = 1) and (CatSongs.CatNumShow = -1) then
+ if (UIni.Ini.Tabs = 1) and (CatSongs.CatNumShow = -1) then
begin
Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].OrderNum) + '/' + IntToStr(CatSongs.CatCount);
SongsInCat := CatSongs.Song[Interaction].CatNumber;
@@ -2217,7 +1702,7 @@ procedure TScreenSong.SetScroll;
Text[TextNumber].Text := IntToStr(CatSongs.VisibleIndex(Interaction)+1) + '/' + IntToStr(VS)
else if (CatSongs.CatNumShow = -3) then
Text[TextNumber].Text := IntToStr(CatSongs.VisibleIndex(Interaction)+1) + '/' + IntToStr(VS)
- else if (Ini.TabsAtStartup = 1) then
+ else if (UIni.Ini.Tabs = 1) then
begin
Text[TextNumber].Text := IntToStr(CatSongs.Song[Interaction].CatNumber)+ '/' + IntToStr(VS);
if not Interaction = 0 then Text[TextNumber].Text := Text[TextNumber].Text + '/' + IntToStr(CatSongs.Song[Interaction - CatSongs.Song[Interaction].CatNumber].CatNumber);
@@ -2240,731 +1725,393 @@ procedure TScreenSong.SetScroll;
end;
end;
-(**
- * Roulette
- *)
procedure TScreenSong.SetRouletteScroll;
var
- B: integer;
- Angle: real;
- Pos: real;
- VS: integer;
- Padding: real;
- X,AutoWidthCorrection: real;
+ I, VisibleIndex: integer;
+ VS: integer;
+ B: TButton;
+ Angle, AutoWidthCorrection, Pos: real;
begin
- VS := CatSongs.VisibleSongs();
-
- //calculate Auto-Width-Correction
+ VS := USongs.CatSongs.GetVisibleSongs();
AutoWidthCorrection:= (UGraphic.RenderH/UGraphic.ScreenH)*(UGraphic.ScreenW/UGraphic.RenderW); //ToDo basisbit: width for 2-screen-setup
if Screens > 1 then
AutoWidthCorrection:= AutoWidthCorrection / 2;
- //LoadCover(Interaction);
- // Update positions of all buttons
- for B := 0 to High(Button) do
+
+ I := 0;
+ VisibleIndex := 0;
+ for B in Button do
begin
- Button[B].Visible := CatSongs.Song[B].Visible; // adjust visibility
- if Button[B].Visible then // Only change pos for visible buttons
+ B.Visible := CatSongs.Song[I].Visible; // adjust visibility
+ if B.Visible then // Only change pos for visible buttons
begin
// Pos is the distance to the centered cover in the range [-VS/2..+VS/2]
- Pos := (CatSongs.VisibleIndex(B) - SongCurrent);
- if (Pos < -VS/2) then
+ Pos := VisibleIndex - Self.SongCurrent;
+ Inc(VisibleIndex);
+ if (Pos < -VS / 2) then
Pos := Pos + VS
- else if (Pos > VS/2) then
+ else if (Pos > VS / 2) then
Pos := Pos - VS;
// Avoid overlapping of the front covers.
// Use an alternate position for the five front covers.
if (Abs(Pos) < 2.5) then
begin
- LoadCover(B);
+ Self.LoadCover(I);
Angle := Pi * (Pos / Min(VS, 5)); // Range: (-1/4*Pi .. +1/4*Pi)
-
- Button[B].H := Abs(Theme.Song.Cover.H * AutoWidthCorrection * cos(Angle*0.8));
- Button[B].W := Abs(Theme.Song.Cover.W * cos(Angle*0.8));
-
- //Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H;
- Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H;
-
- Padding := (Button[B].W - Theme.Song.Cover.W)/2;
- X := Sin(Angle*1.3) * 0.9 * 1.6;
-
- Button[B].X := Theme.Song.Cover.X + Theme.Song.Cover.W * X - Padding;
- Button[B].Y := ((Theme.Song.Cover.Y) + ((Theme.Song.Cover.H) - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.5) - (Button[B].H - (Button[B].H/AutoWidthCorrection));
- Button[B].Z := 0.95 - Abs(Pos) * 0.01;
-
- if VS < 5 then
- begin
- Button[B].Texture.Alpha := 1 - Abs(Pos) / VS * 2;
- end
- else
- Button[B].Texture.Alpha := 1;
+ B.H := Abs(Theme.Song.Cover.H * AutoWidthCorrection * Cos(Angle * 0.8));
+ B.W := Abs(Theme.Song.Cover.W * Cos(Angle * 0.8));
+ // B.Reflectionspacing := 15 * B.H / Theme.Song.Cover.H;
+ B.DeSelectReflectionspacing := 15 * B.H / Theme.Song.Cover.H;
+ B.X := Theme.Song.Cover.X + Theme.Song.Cover.W * Sin(Angle * 1.3) * 0.9 * 1.6 - (B.W - Theme.Song.Cover.W) / 2;
+ B.Y := ((Theme.Song.Cover.Y) + ((Theme.Song.Cover.H) - Abs(Theme.Song.Cover.H * Cos(Angle))) * 0.5) - (B.H - (B.H / AutoWidthCorrection));
+ B.Z := 0.95 - Abs(Pos) * 0.01;
+ B.Texture.Alpha := IfThen(VS < 5, 1 - Abs(Pos) / VS * 2, 1);
end
- { only draw 3 visible covers in the background
- (the 3 that are on the opposite of the front covers}
- (*else if (VS > 7) and (Abs(Pos) > floor(VS/2) - 1.5) then
+ //only draw 5 visible covers in the background (the 5 that are on the opposite of the front covers
+ else if (VS > 9) and (Abs(Pos) > Floor(VS / 2) - 2.5) then
begin
- LoadCover(B);
+ Self.LoadCover(I);
// Transform Pos to range [-1..-3/4, +3/4..+1]
- { the 3 covers at the back will show up in the gap between the
+ { the 5 covers at the back will show up in the gap between the
front cover and its neighbors
one cover will be hiddenbehind the front cover,
but this will not be a lack of performance ;) }
if Pos < 0 then
- Pos := (Pos - 2 + ceil(VS/2))/8 - 0.75
+ Pos := (Pos - 2 + Ceil(VS / 2)) / 8 - 0.75
else
- Pos := (Pos + 2 - floor(VS/2))/8 + 0.75;
+ Pos := (Pos + 2 - Floor(VS / 2)) / 8 + 0.75;
// angle in radians [-2Pi..-Pi, +Pi..+2Pi]
- Angle := 2*Pi * Pos;
-
- Button[B].H := 0.6*(Theme.Song.Cover.H-Abs(Theme.Song.Cover.H * cos(Angle/2)*0.8));
- Button[B].W := 0.6*(Theme.Song.Cover.W-Abs(Theme.Song.Cover.W * cos(Angle/2)*0.8));
-
- //Padding := (Button[B].H - Theme.Song.Cover.H)/2;
-
- Button[B].X := Theme.Song.Cover.X+Theme.Song.Cover.W/2-Button[b].W/2+Theme.Song.Cover.W/320*((Theme.Song.Cover.W)*sin(Angle/2)*1.52);
- Button[B].Y := Theme.Song.Cover.Y - (Button[B].H - Theme.Song.Cover.H)*0.75;
- Button[B].Z := (0.4 - Abs(Pos/4)) -0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers
-
- Button[B].Texture.Alpha := 1;
-
- //Button[B].Reflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H;
- Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H;
- end*)
- { all other covers are not visible }
+ Angle := 2 * Pi * Pos;
+ B.H := 0.6 * (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * Cos(Angle / 2) * 0.8));
+ B.W := 0.6 * (Theme.Song.Cover.W - Abs(Theme.Song.Cover.W * Cos(Angle / 2) * 0.8));
+ B.X := Theme.Song.Cover.X + Theme.Song.Cover.W / 2 - B.W / 2 + Theme.Song.Cover.W / 320 * (Theme.Song.Cover.W * Sin(Angle / 2) * 1.52);
+ B.Y := Theme.Song.Cover.Y - (B.H - Theme.Song.Cover.H) * 0.75;
+ B.Z := (0.4 - Abs(Pos / 4)) - 0.00001; //z < 0.49999 is behind the cover 1 is in front of the covers
+ B.Texture.Alpha := 1;
+ //B.Reflectionspacing := 15 * B.H / Theme.Song.Cover.H;
+ B.DeSelectReflectionspacing := 15 * B.H / Theme.Song.Cover.H;
+ end
else
- begin
- Button[B].Visible := false;
- end;
+ B.Visible := false;
end;
+ Inc(I);
end;
end;
-procedure TScreenSong.SetRouletteScrollRefresh;
-var
- B: integer;
- Angle: real;
- Z, Z2: real;
- VS: integer;
-begin
- VS := CatSongs.VisibleSongs();
-
- for B := 0 to High(Button) do
- begin
- Button[B].Visible := CatSongs.Song[B].Visible;
- if Button[B].Visible then
- begin
- // angle between the cover and selected song-cover in radians
- Angle := 2*Pi * (CatSongs.VisibleIndex(B) - SongCurrent) / VS;
-
- // calc z-position from angle
- Z := (1 + cos(Angle)) / 2; // scaled to range [0..1]
- Z2 := (1 + 2*Z) / 3; // scaled to range [1/3..1]
-
- // adjust cover's width and height according its z-position
- // Note: Theme.Song.Cover.W is not used as width and height are equal
- // and Theme.Song.Cover.W is used as circle radius in Scroll5.
- Button[B].W := Theme.Song.Cover.W * Z2;
- Button[B].H := Theme.Song.Cover.H * Z2;//Button[B].W;
-
- // set cover position
- Button[B].X := Theme.Song.Cover.X +
- (0.185 * Theme.Song.Cover.W * VS * sin(Angle)) * Z2 -
- ((Button[B].W - Theme.Song.Cover.W)/2);
- Button[B].Y := Theme.Song.Cover.Y +
- (Theme.Song.Cover.H - Abs(Button[B].H)) * 0.7;
- Button[B].Z := Z / 2 + 0.3;
- end;
- end;
-end;
-
-(**
- * Chessboard
- *)
procedure TScreenSong.SetChessboardScroll;
var
- B: integer;
- GridY, GridX, FactorH, FactorW: real;
- CoverH, CoverW, ZoomH, ZoomW, CurrentTick: integer;
- Padding: integer;
- MaxRow, MaxCol, Line, LastLine, Index, Count: integer;
- CorrectX: real;
- First: boolean;
+ B, CoverH, CoverW, MaxRow, MaxCol, Line, Index, Count: integer;
begin
- Padding := Theme.Song.Cover.Padding;
- GridX := Theme.Song.Cover.X;
- GridY := Theme.Song.Cover.Y;
-
CoverH := Theme.Song.Cover.H;
CoverW := Theme.Song.Cover.W;
-
- ZoomH := Theme.Song.Cover.ZoomThumbH;
- ZoomW := Theme.Song.Cover.ZoomThumbW;
-
- FactorH := Theme.Song.Cover.ZoomThumbH;
- FactorW := Theme.Song.Cover.ZoomThumbW;
-
- MaxRow := Theme.Song.Cover.Rows + ChessboardMinLine;
+ MaxRow := Theme.Song.Cover.Rows;
MaxCol := Theme.Song.Cover.Cols;
-
+ Line := 0;
Index := 0;
- LastLine := 0;
Count := 0;
- First := true;
- CorrectX := 0;
- // new song select by mouse
- if (LastSelectMouse <> 0) and (SDL_GetTicks > LastSelectMouse + MAX_TIME_MOUSE_SELECT) then
+ for B := 0 to High(Self.Button) do
begin
- LastSelectMouse := 0;
- OnSongSelect;
- end;
-
- // Update positions of all buttons
- for B := 0 to High(Button) do
- begin
- Button[B].Visible := CatSongs.Song[B].Visible; // adjust visibility
-
- if (Button[B].Visible) then
- begin
- LastVisibleSongIndex := B;
-
- if (First) then
- begin
- FirstVisibleSongIndex := B;
- First := false;
- end;
- end;
-
+ Self.Button[B].Visible := USongs.CatSongs.Song[B].Visible;
Line := Count div MaxCol;
-
- if (Button[B].Visible) and (Line < MaxRow) then // Only change pos for visible buttons
+ if Self.Button[B].Visible and (Line < (MaxRow + Self.MinLine)) then //only change position for visible buttons
begin
-
- if (Line >= ChessboardMinLine) then
+ if Line >= Self.MinLine then
begin
- LoadCover(B);
- if (Index = Interaction) then
+ Self.LoadCover(B);
+ Self.Button[B].X := Theme.Song.Cover.X + (CoverW + Theme.Song.Cover.Padding) * (Count mod MaxCol);
+ Self.Button[B].Y := Theme.Song.Cover.Y + (CoverH + Theme.Song.Cover.Padding) * (Line - Self.MinLine);
+ if Index = Interaction then
begin
- if (LastSelectTime <> 0) then
+ if Self.Button[B].H < Theme.Song.Cover.ZoomThumbH then //zoom effect in 10 steps
begin
- CurrentTick := SDL_GetTicks;
- FactorH := CoverH + (1/((ZoomH - CoverH)/(CurrentTick - LastSelectTime)*0.6));
- FactorW := CoverW + (1/((ZoomW - CoverW)/(CurrentTick - LastSelectTime)*0.6));
+ Self.Button[B].H := Self.Button[B].H + ((Theme.Song.Cover.ZoomThumbH - CoverH) / 10);
+ Self.Button[B].W := Self.Button[B].W + ((Theme.Song.Cover.ZoomThumbW - CoverW) / 10);
end
- else
- begin
- FactorH := ZoomH;
- FactorW := ZoomW;
- end;
-
- if (FactorH > ZoomH) then
- FactorH := ZoomH;
-
- if (FactorW > ZoomW) then
- FactorW := ZoomW;
+ else //finished zoom effect
+ Self.OnSongSelect();
- if (FactorW = ZoomW) and (FactorH = ZoomH) then
- LastSelectTime := 0;
-
- Button[B].H := FactorH;
- Button[B].W := FactorW;
- Button[B].Z := 1;
+ Self.Button[B].X := Self.Button[B].X - (Self.Button[B].W - CoverW) / 2;
+ Self.Button[B].Y := Self.Button[B].Y - (Self.Button[B].H - CoverH) / 2;
+ Self.Button[B].Z := 1;
end
else
begin
- Button[B].H := CoverH;
- Button[B].W := CoverW;
- Button[B].Z := 0.9;
- end;
-
- Button[B].Reflection := false;
-
- if (Count = 0) or (Line <> LastLine) then
- begin
- Button[B].X := GridX;
- end
- else
- begin
- Button[B].X := CorrectX + CoverW + Padding;
- end;
-
- CorrectX := Button[B].X;
-
- if (Index = Interaction) then
- Button[B].X := Button[B].X - (FactorW - CoverW)/2;
-
- if (Line = ChessboardMinLine)then
- begin
- Button[B].Y := GridY;
-
- if (Index = Interaction) then
- Button[B].Y := Button[B].Y - (FactorH - CoverH)/2;
+ Self.Button[B].SetSelect(false);
+ Self.Button[B].H := CoverH;
+ Self.Button[B].W := CoverW;
+ Self.Button[B].Z := 0.9;
end
- else
- begin
- Button[B].Y := GridY + (CoverH + Padding) * (Line - ChessboardMinLine);
-
- if (Index = Interaction) then
- Button[B].Y := Button[B].Y - (FactorH - CoverH)/2;
- end;
-
- LastLine := Line;
end
- else
+ else //hide not visible songs upper than MinLine + MaxRow
begin
- Button[B].Visible := false;
- Button[B].Z := 0;
+ Self.Button[B].Visible := false;
+ Self.Button[B].Z := 0;
end;
-
- Count := Count + 1;
+ Inc(Count);
end
- else
+ else //hide not visible songs lower than MinLine
begin
- Button[B].Visible := false;
- Button[B].Z := 0;
+ Self.Button[B].Visible := false;
+ Self.Button[B].Z := 0;
end;
-
- Index := Index + 1;
+ Inc(Index);
end;
-
-end;
-
-procedure TScreenSong.SetChessboardScrollRefresh;
-begin
- if Statics[StaticActual].Texture.Name <> Skin.GetTextureFileName('SongCover') then
+ Self.LoadMainCover();
+ if not Self.Button[Self.Interaction].Visible then
begin
- glDeleteTextures(1, PGLuint(@Statics[StaticActual].Texture.TexNum));
+ Self.MinLine := Ceil((USongs.CatSongs.VisibleIndex(Self.Interaction) + 1 - MaxCol * MaxRow) / MaxCol);
+ if (Line - Self.MinLine) > MaxRow then //to decrease line when push up (or pag up) key
+ Self.MinLine += MaxRow - 1;
end;
-
- Statics[StaticActual].Texture := Covers.FindCover(Button[Interaction].Texture.Name).GetTexture();
- Statics[StaticActual].Texture.Alpha := 1;
-
- Statics[StaticActual].Texture.X := Theme.Song.Cover.SelectX;
- Statics[StaticActual].Texture.Y := Theme.Song.Cover.SelectY;
- Statics[StaticActual].Texture.W := Theme.Song.Cover.SelectW;
- Statics[StaticActual].Texture.H := Theme.Song.Cover.SelectH;
- Statics[StaticActual].Texture.Z := 1;
-
- Statics[StaticActual].Reflection := Theme.Song.Cover.SelectReflection;
- Statics[StaticActual].Reflectionspacing := Theme.Song.Cover.SelectReflectionSpacing;
end;
-(**
- * Carousel
- *)
procedure TScreenSong.SetCarouselScroll;
var
- B, Count: integer;
+ B, VisibleIndex: integer;
+ X: real;
begin
-
- Count := 0;
-
- // line
- for B := 0 to High(Button) do
+ VisibleIndex := 0;
+ for B := 0 to High(Self.Button) do
begin
- Button[B].Visible := CatSongs.Song[B].Visible;
-
- if (Button[B].Visible) then
+ Self.Button[B].Visible := USongs.CatSongs.Song[B].Visible;
+ if Self.Button[B].Visible then
begin
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * (Theme.Song.Cover.W + Theme.Song.Cover.Padding);
-
- if (Button[B].X < -Theme.Song.Cover.W) or (Button[B].X > 800) then
- begin
- Button[B].Visible := false;
- end
- else
- begin
- Button[B].Visible := true;
- LoadCover(B);
- end;
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * (Theme.Song.Cover.W + Theme.Song.Cover.Padding);
- Button[B].Y := Theme.Song.Cover.Y;
- Button[B].W := Theme.Song.Cover.W;
- Button[B].H := Theme.Song.Cover.H;
+ X := Theme.Song.Cover.X + (VisibleIndex - Self.SongCurrent) * (Theme.Song.Cover.W + Theme.Song.Cover.Padding);
+ Inc(VisibleIndex);
+ if not ((X < -Theme.Song.Cover.W) or (X > 800)) then
+ Self.LoadCover(B)
+ else //hide preload covers
+ Self.Button[B].Visible := false;
- Count := Count + 1;
+ Self.Button[B].H := Theme.Song.Cover.H;
+ Self.Button[B].W := Theme.Song.Cover.W;
+ Self.Button[B].X := X; //after load cover to avoid cover flash on change
+ Self.Button[B].Y := Theme.Song.Cover.Y;
+ Self.Button[B].Z := 0.95; //more than 0.9 to be clicked with mouse and less than 1 to hide reflection
end;
end;
end;
-procedure TScreenSong.SetCarouselScrollRefresh;
-begin
-end;
-
-(**
- * Slot Machine
- *)
procedure TScreenSong.SetSlotMachineScroll;
var
- B: integer;
- Angle: real;
- Pos: real;
- VS: integer;
- diff: real;
- X: real;
+ B, VS, VisibleIndex: integer;
+ Angle, Pos: real;
begin
- VS := CatSongs.VisibleSongs;
-
- for B := Low(Button) to High(Button) do
+ VS := USongs.CatSongs.GetVisibleSongs();
+ VisibleIndex := 0;
+ for B := 0 to High(Self.Button) do
begin
- Button[B].Visible := CatSongs.Song[B].Visible; //Adjust Visibility
- if Button[B].Visible then //Only Change Pos for Visible Buttons
+ Self.Button[B].Visible := USongs.CatSongs.Song[B].Visible;
+ if Self.Button[B].Visible then
begin
- Pos := (CatSongs.VisibleIndex(B) - SongCurrent);
+ Pos := (VisibleIndex - Self.SongCurrent);
+ Inc(VisibleIndex);
if (Pos < -VS/2) then
Pos := Pos + VS
else if (Pos > VS/2) then
Pos := Pos - VS;
- //fixed Positions
if (Abs(Pos) < 2.0) then
begin
- LoadCover(B);
+ Self.LoadCover(B);
Angle := Pi * (Pos / 5);
-
- Button[B].Texture.Alpha := 1 - Abs(Pos/1.5);
-
- Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle*1.2));
-
- Button[B].DeSelectReflectionspacing := 15 * Button[B].H/Theme.Song.Cover.H;
-
- Button[B].Z := 0.05 - Abs(Pos) * 0.01;
-
- Button[B].X := (Theme.Song.Cover.X + (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.8);
-
- Button[B].W := Button[B].H;
-
- Diff := (Button[B].H - Theme.Song.Cover.H)/2;
-
- X := Sin(Angle*1.3)*0.8;
-
- Button[B].Y := Theme.Song.Cover.Y + Theme.Song.Cover.W * X - Diff;
-
+ Self.Button[B].Texture.Alpha := 1 - Abs(Pos / 1.5);
+ Self.Button[B].H := Abs(Theme.Song.Cover.H * cos(Angle * 1.2));
+ Self.Button[B].W := Self.Button[B].H;
+ Self.Button[B].X := (Theme.Song.Cover.X + (Theme.Song.Cover.H - Abs(Theme.Song.Cover.H * cos(Angle))) * 0.8);
+ Self.Button[B].Y := Theme.Song.Cover.Y + Theme.Song.Cover.W * (Sin(Angle * 1.3) * 0.8) - ((Self.Button[B].H - Theme.Song.Cover.H) / 2);
+ Self.Button[B].Z := 1;
+ Self.Button[B].DeSelectReflectionspacing := 15 * Self.Button[B].H / Theme.Song.Cover.H;
end
else
- begin
- Button[B].Visible := false;
- end;
- end;
+ Self.Button[B].Visible := false;
+ end;
end;
end;
-procedure TScreenSong.SetSlotMachineScrollRefresh;
-begin
-end;
-
-(**
- * Slide
- *)
procedure TScreenSong.SetSlideScroll;
var
- B, Count, DiffH: integer;
- Scale: real;
+ B, VisibleIndex, DiffH: integer;
+ Scale, X, Z: real;
begin
-
- Count := 0;
+ VisibleIndex := 0;
Scale := 0.90;
DiffH := 20;
-
- // line
- for B := 0 to High(Button) do
+ for B := 0 to High(Self.Button) do
begin
- Button[B].Visible := CatSongs.Song[B].Visible;
-
- if (Button[B].Visible) then
+ Self.Button[B].Visible := USongs.CatSongs.Song[B].Visible;
+ if Self.Button[B].Visible then
begin
-
- if (B <= Interaction) then
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * Theme.Song.Cover.Padding
- else
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * Theme.Song.Cover.W - (Count - SongCurrent) * (Theme.Song.Cover.W * Scale - Theme.Song.Cover.Padding);
-
- if not (Button[B].X < -Theme.Song.Cover.W) or (Button[B].X > 800) then
- LoadCover(B);
-
- if (B <= Interaction) then
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * Theme.Song.Cover.Padding
- else
- Button[B].X := Theme.Song.Cover.X + (Count - SongCurrent) * Theme.Song.Cover.W - (Count - SongCurrent) * (Theme.Song.Cover.W * Scale - Theme.Song.Cover.Padding);
-
- Button[B].Y := Theme.Song.Cover.Y;
- Button[B].W := Theme.Song.Cover.W;
- Button[B].H := Theme.Song.Cover.H;
-
- if (B < Interaction) then
+ Z := Theme.SongMenu.SelectSlide1.Z - 0.02; //all covers under arrows
+ X := Theme.Song.Cover.X + (VisibleIndex - Self.SongCurrent) * Theme.Song.Cover.Padding;
+ Inc(VisibleIndex);
+ if not ((X < -Theme.Song.Cover.W) or (X > 800)) then
begin
- Button[B].Z := B/High(Button);
-
- Button[B].Texture.RightScale := Scale;
- Button[B].Texture.LeftScale := 1;
-
- Button[B].H := Theme.Song.Cover.H - DiffH;
- Button[B].W := Button[B].W * Scale;
-
- Button[B].Y := Theme.Song.Cover.Y + DiffH;
-
- Button[B].Texture.Alpha := 1;
- end
- else
- begin
- if (B > Interaction) then
+ Self.LoadCover(B);
+ Self.Button[B].X := X; //after load cover to avoid cover flash on change
+ if B = Self.Interaction then
begin
- Button[B].Z := 1 - ((Count + 1)/100);
-
- Button[B].Texture.LeftScale := Scale;
- Button[B].Texture.RightScale := 1;
-
- Button[B].H := Theme.Song.Cover.H - DiffH;
- Button[B].W := Button[B].W * Scale;
-
- Button[B].Y := Theme.Song.Cover.Y + DiffH;
-
- Button[B].Texture.Alpha := 1;
+ Self.Button[B].H := Theme.Song.Cover.H;
+ Self.Button[B].W := Theme.Song.Cover.W;
+ Self.Button[B].Y := Theme.Song.Cover.Y;
+ Self.Button[B].Reflection := false;
+ Self.Button[B].Texture.LeftScale := 1;
+ Self.Button[B].Texture.RightScale := 1;
+ Self.Button[B].Z := Z;
end
else
begin
- Button[B].Z := 1;
-
- Button[B].Texture.LeftScale := 1;
- Button[B].Texture.RightScale := 1;
-
- Button[B].H := Theme.Song.Cover.H;
- Button[B].W := Theme.Song.Cover.W;
-
- Button[B].Y := Theme.Song.Cover.Y;
-
- Button[B].Texture.Alpha := 1;
- Button[B].Texture.Z := 1;
+ Self.Button[B].H := Theme.Song.Cover.H - DiffH;
+ Self.Button[B].W := Theme.Song.Cover.W * Scale;
+ Self.Button[B].Y := Theme.Song.Cover.Y + DiffH;
+ Self.Button[B].Reflection := true;
+ Self.Button[B].SetSelect(false);
+ if B < Self.Interaction then
+ begin
+ Self.Button[B].Texture.LeftScale := 1;
+ Self.Button[B].Texture.RightScale := Scale;
+ Self.Button[B].Z := Z - (Self.Interaction - B) * 0.01; //put first covers under following and under arrows
+ end
+ else
+ begin
+ Self.Button[B].Texture.LeftScale := Scale;
+ Self.Button[B].Texture.RightScale := 1;
+ Self.Button[B].Z := Z - (B - Self.Interaction) * 0.01; //put last covers under previous and under arrows
+ end
end;
- end;
-
- if (Button[B].X < -Button[B].W) or (Button[B].X > 800) then
- begin
- Button[B].Visible := false;
end
- else
- Button[B].Visible := true;
-
- Count := Count + 1;
+ else //hide preload covers
+ Self.Button[B].Visible := false;
end;
end;
end;
-procedure TScreenSong.SetSlideScrollRefresh;
-begin
-end;
-
-
-(**
- * List
- *)
procedure TScreenSong.SetListScroll;
var
- B, Line: integer;
- First: boolean;
+ B, Line, I, Current: integer;
+ Alpha: real;
begin
- Line := 0;
- First := true;
+ Current := USongs.CatSongs.VisibleIndex(Self.Interaction);
+ //move up at the start of list or in the rest of it
+ if (Current < Self.MinLine) and ((Current < Theme.Song.Cover.Rows) or (Current <= Self.LastMinLine)) then
+ Self.MinLine := Current
+ //move down in the tail of list or in the rest of it
+ else if (Current - Theme.Song.Cover.Rows >= Self.MinLine) and ((Current > USongs.CatSongs.GetVisibleSongs() - Theme.Song.Cover.Rows) or (Current > Self.LastMinLine)) then
+ Self.MinLine := Current - Theme.Song.Cover.Rows + 1;
+
+ Self.LastMinLine := Self.MinLine;
- // line
- for B := 0 to High(Button) do
+ // save first category
+ if USongs.CatSongs.Song[Interaction].Main then
+ Self.MainListFirstVisibleSongIndex := 0;
+
+ for I := 0 to High(Self.StaticsList) do
begin
- Button[B].Visible := CatSongs.Song[B].Visible;
+ Self.Text[ListTextArtist[I]].Text := '';
+ Self.Text[ListTextTitle[I]].Text := '';
+ Self.Text[ListTextYear[I]].Text := '';
+ Self.Statics[ListVideoIcon[I]].Visible := false;
+ Self.Statics[ListMedleyIcon[I]].Visible := false;
+ Self.Statics[ListCalcMedleyIcon[I]].Visible := false;
+ Self.Statics[ListDuetIcon[I]].Visible := false;
+ Self.Statics[ListRapIcon[I]].Visible := false;
+ Self.StaticsList[I].Texture.TexNum := Self.StaticsList[I].TextureDeSelect.TexNum;
+ Self.StaticsList[I].Texture.W := Theme.Song.ListCover.W;
+ Self.StaticsList[I].Texture.H := Theme.Song.ListCover.H;
+ Self.StaticsList[I].Texture.X := Theme.Song.ListCover.X;
+ end;
- if (Button[B].Visible) then
+ Line := 0;
+ for B := 0 to High(Self.Button) do
+ begin
+ Self.Button[B].Visible := CatSongs.Song[B].Visible;
+ if (Self.Button[B].Visible) then
begin
- if (Line >= ListMinLine) then
+ if (Line >= Self.MinLine) and (Line - Self.MinLine < Theme.Song.ListCover.Rows) then
begin
-
- if (First) then
- begin
- ListFirstVisibleSongIndex := B;
- First := false;
- end;
-
- if (Line - ListMinLine < Theme.Song.ListCover.Rows) then
+ I := Line - Self.MinLine;
+ if I = 0 then
+ Self.ListFirstVisibleSongIndex := B;
+
+ Self.LoadCover(B);
+ Self.Button[B].H := Theme.Song.Cover.H;
+ Self.Button[B].W := Theme.Song.Cover.W;
+ Self.Button[B].X := Theme.Song.Cover.X;
+ Self.Button[B].Y := Theme.Song.Cover.Y + I * (Theme.Song.Cover.H + Theme.Song.Cover.Padding);
+ Self.Button[B].Z := 1;
+ if (B = Self.Interaction) then
begin
- LoadCover(B);
- Button[B].Z := 1;
-
- Button[B].X := Theme.Song.Cover.X;
- Button[B].Y := Theme.Song.Cover.Y + (Line - ListMinLine) * (Theme.Song.Cover.H + Theme.Song.Cover.Padding);
- Button[B].W := Theme.Song.Cover.W;
- Button[B].H := Theme.Song.Cover.H;
-
- Line := Line + 1;
+ Alpha := 1;
+ Self.StaticsList[I].Texture.TexNum := Self.StaticsList[I].TextureSelect.TexNum;
end
else
begin
- Button[B].Visible := false;
+ Self.Button[B].SetSelect(false);
+ Alpha := 0.7;
+ Self.StaticsList[I].Texture.TexNum := Self.StaticsList[I].TextureDeSelect.TexNum;
end;
- end
- else
- begin
- Line := Line + 1;
- Button[B].Visible := false;
- end;
- end;
- end;
-
-end;
-
-procedure TScreenSong.SetListScrollRefresh;
-var
- B, Count, I, VS: integer;
- SongID: array of integer;
- Alpha: real;
-begin
- if Statics[StaticActual].Texture.Name <> Skin.GetTextureFileName('SongCover') then
- begin
- glDeleteTextures(1, PGLuint(@Statics[StaticActual].Texture.TexNum));
- end;
-
- Statics[StaticActual].Texture := Covers.FindCover(Button[Interaction].Texture.Name).GetTexture();
- Statics[StaticActual].Texture.Alpha := 1;
-
- Statics[StaticActual].Texture.X := Theme.Song.Cover.SelectX;
- Statics[StaticActual].Texture.Y := Theme.Song.Cover.SelectY;
- Statics[StaticActual].Texture.W := Theme.Song.Cover.SelectW;
- Statics[StaticActual].Texture.H := Theme.Song.Cover.SelectH;
- Statics[StaticActual].Texture.Z := 1;
-
- Statics[StaticActual].Reflection := Theme.Song.Cover.SelectReflection;
- Statics[StaticActual].Reflectionspacing := Theme.Song.Cover.SelectReflectionSpacing;
-
- for I := 0 to High(StaticsList) do
- begin
- Text[ListTextArtist[I]].Text := '';
- Text[ListTextTitle[I]].Text := '';
- Text[ListTextYear[I]].Text := '';
- Statics[ListVideoIcon[I]].Visible := false;
- Statics[ListMedleyIcon[I]].Visible := false;
- Statics[ListCalcMedleyIcon[I]].Visible := false;
- Statics[ListDuetIcon[I]].Visible := false;
- Statics[ListRapIcon[I]].Visible := false;
-
- //reset
- StaticsList[I].Texture.TexNum := StaticsList[I].TextureDeSelect.TexNum;
- StaticsList[I].Texture.W := Theme.Song.ListCover.W;
- StaticsList[I].Texture.H := Theme.Song.ListCover.H;
- StaticsList[I].Texture.X := Theme.Song.ListCover.X;
- end;
-
- Count := 0;
-
- B := ListFirstVisibleSongIndex;
- VS := CatSongs.VisibleSongs;
-
- if (ListMinLine <> ListLastMinLine) then //and ((ListMinLine <= VS - Theme.Song.ListCover.Rows)) then// change start
- begin
- if (ListLastMinLine < ListMinLine) then
- B := CatSongs.FindNextVisible(B)
- else
- B := CatSongs.FindPreviousVisible(B);
-
- ListLastMinLine := ListMinLine;
- end;
-
- SetLength(SongID, 0);
-
- while ((Count <= High(StaticsList)) and (B <= High(CatSongs.Song))) do
- begin
- if (CatSongs.Song[B].Visible) then
- begin
- SetLength(SongID, Length(SongID) + 1);
-
- SongID[High(SongID)] := B;
- Count := Count + 1;
- end;
-
- B := B + 1;
- end;
-
- // save first category
- if CatSongs.Song[Interaction].Main then
- MainListFirstVisibleSongIndex := CatSongs.FindPreviousVisible(SongID[0]);
-
- for I := 0 to Count - 1 do
- begin
- if (SongID[I] = Interaction) then
- begin
- Alpha := 1;
- StaticsList[I].Texture.TexNum := StaticsList[I].TextureSelect.TexNum;
- end
- else
- Alpha := 0.7;
-
- // Set visibility of video icon
- Statics[ListVideoIcon[I]].Texture.Alpha := Alpha;
- Statics[ListVideoIcon[I]].Visible := CatSongs.Song[SongID[I]].Video.IsSet;
-
- // Set visibility of medley icons
- Statics[ListMedleyIcon[I]].Texture.Alpha := Alpha;
- Statics[ListMedleyIcon[I]].Visible := (CatSongs.Song[SongID[I]].Medley.Source = msTag);
-
- Statics[ListCalcMedleyIcon[I]].Texture.Alpha := Alpha;
- Statics[ListCalcMedleyIcon[I]].Visible := (CatSongs.Song[SongID[I]].Medley.Source = msCalculated);
-
- //Set Visibility of Duet Icon
- Statics[ListDuetIcon[I]].Texture.Alpha := Alpha;
- Statics[ListDuetIcon[I]].Visible := CatSongs.Song[SongID[I]].isDuet;
-
- //Set Visibility of Rap Icon
- Statics[ListRapIcon[I]].Texture.Alpha := Alpha;
- Statics[ListRapIcon[I]].Visible := CatSongs.Song[SongID[I]].hasRap;
-
- // Set texts
- Text[ListTextArtist[I]].Alpha := Alpha;
- Text[ListTextArtist[I]].Text := CatSongs.Song[SongID[I]].Artist;
-
- Text[ListTextTitle[I]].Alpha := Alpha;
- Text[ListTextTitle[I]].Text := CatSongs.Song[SongID[I]].Title;
-
- Text[ListTextYear[I]].Alpha := Alpha;
-
- if ((Ini.Tabs = 0) or (TSortingType(Ini.Sorting) <> sYear))
- and (CatSongs.Song[SongID[I]].Year <> 0) then
- Text[ListTextYear[I]].Text := '(' + InttoStr(CatSongs.Song[SongID[I]].Year) + ')'
- else
- Text[ListTextYear[I]].Text := '';
-
+ Self.Statics[ListVideoIcon[I]].Texture.Alpha := Alpha;
+ Self.Statics[ListVideoIcon[I]].Visible := USongs.CatSongs.Song[B].Video.IsSet;
+ Self.Statics[ListMedleyIcon[I]].Texture.Alpha := Alpha;
+ Self.Statics[ListMedleyIcon[I]].Visible := (USongs.CatSongs.Song[B].Medley.Source = msTag) and not CatSongs.Song[Interaction].isDuet;
+ Self.Statics[ListCalcMedleyIcon[I]].Texture.Alpha := Alpha;
+ Self.Statics[ListCalcMedleyIcon[I]].Visible := (USongs.CatSongs.Song[B].Medley.Source = msCalculated) and not CatSongs.Song[Interaction].isDuet;
+ Self.Statics[ListDuetIcon[I]].Texture.Alpha := Alpha;
+ Self.Statics[ListDuetIcon[I]].Visible := USongs.CatSongs.Song[B].isDuet;
+ Self.Statics[ListRapIcon[I]].Texture.Alpha := Alpha;
+ Self.Statics[ListRapIcon[I]].Visible := USongs.CatSongs.Song[B].hasRap;
+ Self.Text[ListTextArtist[I]].Alpha := Alpha;
+ Self.Text[ListTextArtist[I]].Text := USongs.CatSongs.Song[B].Artist;
+ Self.Text[ListTextTitle[I]].Alpha := Alpha;
+ Self.Text[ListTextTitle[I]].Text := USongs.CatSongs.Song[B].Title;
+ Self.Text[ListTextYear[I]].Alpha := Alpha;
+ Self.Text[ListTextYear[I]].Text := IfThen(((UIni.Ini.Tabs = 0) or (TSortingType(UIni.Ini.Sorting) <> sYear)) and (USongs.CatSongs.Song[B].Year <> 0), IntToStr(USongs.CatSongs.Song[B].Year), '');
+ end
+ else
+ Self.Button[B].Visible := false;
+ Inc(Line);
+ end;
end;
+ Self.LoadMainCover();
+end;
+procedure TScreenSong.AddButtons();
+var
+ I: integer;
+begin
+ for I := Length(Button) to High(USongs.CatSongs.Song) do
+ Self.AddButton(Theme.Song.Cover.X, Theme.Song.Cover.Y, Theme.Song.Cover.W, Theme.Song.Cover.H, PATH_NONE, TEXTURE_TYPE_PLAIN, Theme.Song.Cover.Reflections);
end;
-procedure TScreenSong.OnShow;
+procedure TScreenSong.OnShow();
var
I: integer;
+ Visible: boolean;
begin
inherited;
-
- CloseMessage();
-
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smList, smMosaic]) then
+ if not Assigned(UGraphic.ScreenSongMenu) then //load the screens only the first time
begin
- Statics[StaticActual].Texture.X := Theme.Song.Cover.SelectX;
- Statics[StaticActual].Texture.Y := Theme.Song.Cover.SelectY;
- Statics[StaticActual].Texture.W := Theme.Song.Cover.SelectW;
- Statics[StaticActual].Texture.H := Theme.Song.Cover.SelectH;
- Statics[StaticActual].Texture.Z := 1;
-
- Statics[StaticActual].Reflection := Theme.Song.Cover.SelectReflection;
- Statics[StaticActual].Reflectionspacing := Theme.Song.Cover.SelectReflectionSpacing;
+ UGraphic.ScreenSongMenu := TScreenSongMenu.Create();
+ UGraphic.ScreenSongJumpto := TScreenSongJumpto.Create();
+ UGraphic.ScreenPopupScoreDownload := TScreenPopupScoreDownload.Create();
+ end;
- Statics[StaticActual].Visible := true;
- end
- else
+ //add more buttons if needed because this screen can be created before finish loading songs if meanwhile use options screens
+ if Length(Self.Button) < High(USongs.CatSongs.Song) then
begin
- Statics[StaticActual].Visible := false;
+ Self.AddButtons();
+ Self.Covers := Length(Self.Button) - 1;
end;
+ Self.CloseMessage();
+
if (TSongMenuMode(Ini.SongMenu) <> smList) then
begin
for I := 0 to High(StaticsList) do
begin
StaticsList[StaticList[I]].Visible := false;
-
Text[ListTextArtist[I]].Visible := false;
Text[ListTextTitle[I]].Visible := false;
Text[ListTextYear[I]].Visible := false;
@@ -2972,9 +2119,8 @@ procedure TScreenSong.OnShow;
Statics[ListMedleyIcon[I]].Visible := false;
Statics[ListCalcMedleyIcon[I]].Visible := false;
Statics[ListDuetIcon[I]].Visible := false;
- Statics[ListRapIcon[I]].Visible := false;
+ Statics[ListRapIcon[I]].Visible := false;
end;
-
Text[TextArtist].Visible := true;
Text[TextTitle].Visible := true;
Text[TextYear].Visible := true;
@@ -2982,14 +2128,13 @@ procedure TScreenSong.OnShow;
Statics[MedleyIcon].Visible := true;
Statics[CalcMedleyIcon].Visible := true;
Statics[DuetIcon].Visible := true;
- Statics[RapIcon].Visible := true;
+ Statics[RapIcon].Visible := true;
end
else
begin
for I := 0 to High(StaticsList) do
begin
StaticsList[StaticList[I]].Visible := true;
-
Text[ListTextArtist[I]].Visible := true;
Text[ListTextTitle[I]].Visible := true;
Text[ListTextYear[I]].Visible := true;
@@ -2997,9 +2142,8 @@ procedure TScreenSong.OnShow;
Statics[ListMedleyIcon[I]].Visible := true;
Statics[ListCalcMedleyIcon[I]].Visible := true;
Statics[ListDuetIcon[I]].Visible := true;
- Statics[ListRapIcon[I]].Visible := true;
+ Statics[ListRapIcon[I]].Visible := true;
end;
-
Text[TextArtist].Visible := false;
Text[TextTitle].Visible := false;
Text[TextYear].Visible := false;
@@ -3007,7 +2151,7 @@ procedure TScreenSong.OnShow;
Statics[MedleyIcon].Visible := false;
Statics[CalcMedleyIcon].Visible := false;
Statics[DuetIcon].Visible := false;
- Statics[RapIcon].Visible := false;
+ Statics[RapIcon].Visible := false;
end;
// for duet names
@@ -3042,17 +2186,16 @@ procedure TScreenSong.OnShow;
if Ini.Players = 4 then PlayersPlay := 6;
//Cat Mod etc
- if (Ini.TabsAtStartup = 1) and (CatSongs.CatNumShow = -1) then
+ if (UIni.Ini.Tabs = 1) and (CatSongs.CatNumShow = -1) then
begin
CatSongs.ShowCategoryList;
-
if (TSongMenuMode(Ini.SongMenu) <> smCarousel) and (TSongMenuMode(Ini.SongMenu) <> smSlide) then
FixSelected;
+ end
+ else //initialize visible songs
+ USongs.CatSongs.SetVisibleSongs();
- //Show Cat in Top Left Mod
- HideCatTL;
- end;
-
+ Self.SetScroll(true);
//Playlist Mode
if not(Mode = smPartyClassic) then
@@ -3078,28 +2221,37 @@ procedure TScreenSong.OnShow;
if (ScreenSong.Mode = smJukebox) and (Ini.PartyPopup = 1) then
ScreenSongMenu.MenuShow(SM_Jukebox);
- isScrolling := false;
- SetJoker;
- SetStatics;
+ Self.IsScrolling := false;
+ Self.SetJoker();
+
+ //Set Visibility of Party Statics and Text
+ Visible := (Mode = smPartyClassic);
+ for I := 0 to High(StaticParty) do
+ Statics[StaticParty[I]].Visible := Visible;
+
+ for I := 0 to High(TextParty) do
+ Text[TextParty[I]].Visible := Visible;
+
+ //Set Visibility of Non Party Statics and Text
+ Visible := not Visible;
+ for I := 0 to High(StaticNonParty) do
+ Statics[StaticNonParty[I]].Visible := Visible;
+
+ for I := 0 to High(TextNonParty) do
+ Text[TextNonParty[I]].Visible := Visible;
end;
procedure TScreenSong.OnShowFinish;
begin
DuetChange := false;
-
- isScrolling := true;
+ Self.IsScrolling := true;
CoverTime := 10;
-
- SetScrollRefresh;
-
//if (Mode = smPartyTournament) then
// PartyTime := SDL_GetTicks();
-
end;
procedure TScreenSong.OnHide;
begin
-
// turn music volume to 100%
AudioPlayback.SetVolume(1.0);
@@ -3108,26 +2260,6 @@ procedure TScreenSong.OnHide;
StopVideoPreview();
end;
-procedure TScreenSong.DrawExtensions;
-begin
- //Draw Song Menu
- if (ScreenSongMenu.Visible) then
- begin
- ScreenSongMenu.Draw;
- end
- else if (ScreenSongJumpto.Visible) then
- begin
- ScreenSongJumpto.Draw;
- end;
-end;
-
-function TScreenSong.FinishedMusic: boolean;
-begin
-
- Result := AudioPlayback.Finished;
-
-end;
-
function TScreenSong.Draw: boolean;
var
dx: real;
@@ -3139,7 +2271,7 @@ function TScreenSong.Draw: boolean;
FadeMessage();
- if isScrolling then
+ if Self.IsScrolling and (TSongMenuMode(UIni.Ini.SongMenu) <> smChessboard) then
begin
dx := SongTarget - SongCurrent;
dt := TimeSkip * 7;
@@ -3149,29 +2281,17 @@ function TScreenSong.Draw: boolean;
SongCurrent := SongCurrent + dx*dt;
- if SameValue(SongCurrent, SongTarget, 0.002) and (CatSongs.VisibleSongs > 0) then
- begin
- isScrolling := false;
- SongCurrent := SongTarget;
- OnSongSelect;
- end;
- end;
-
- { //basisbit todo this block was auskommentiert
- if SongCurrent > Catsongs.VisibleSongs then
- begin
- SongCurrent := SongCurrent - Catsongs.VisibleSongs;
- SongTarget := SongTarget - Catsongs.VisibleSongs;
- end; }
-
-
- //Log.BenchmarkStart(5);
-
- // Song Menu Style
- SetScroll;
+ if (Self.SongCurrent = Self.SongTarget) then //if occurs an incomplete scroll add one chance to complete well
+ SongCurrent := SongTarget - 0.002
+ else if SameValue(Self.SongCurrent, Self.SongTarget, 0.002) and (USongs.CatSongs.GetVisibleSongs() > 0) then
+ Self.OnSongSelect();
+ end
+ else if Self.PreloadCovers then //start to preload covers slowly if don't exists user interaction
+ Self.LoadCovers()
+ else //enable again after user interaction
+ Self.PreloadCovers := true;
- //Log.BenchmarkEnd(5);
- //Log.LogBenchmark('SetScroll4', 5);
+ Self.SetScroll();
if (AudioPlayback.Finished) then
CoverTime := 0;
@@ -3180,20 +2300,16 @@ function TScreenSong.Draw: boolean;
if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic, smList]) then
begin
if not(Assigned(fCurrentVideo)) then
- Statics[StaticActual].Texture.Alpha := 1
- else
+ Statics[Self.MainCover].Texture.Alpha := 1
+ else if (CoverTime < 9) then
begin
- if (CoverTime < 9) and Assigned(fCurrentVideo) then
- begin
-
//Update Fading Time
- CoverTime := CoverTime + TimeSkip;
+ CoverTime := CoverTime + TimeSkip;
- //Update Fading Texture
- Statics[StaticActual].Texture.Alpha := 1 - (CoverTime - 1) * 1.5;
- if Statics[StaticActual].Texture.Alpha < 0 then
- Statics[StaticActual].Texture.Alpha := 0;
- end;
+ //Update Fading Texture
+ Statics[Self.MainCover].Texture.Alpha := 1 - (CoverTime - 1) * 1.5;
+ if Statics[Self.MainCover].Texture.Alpha < 0 then
+ Statics[Self.MainCover].Texture.Alpha := 0;
end;
end
else
@@ -3305,7 +2421,7 @@ function TScreenSong.Draw: boolean;
//We draw Buttons for our own
for I := 0 to Length(Button) - 1 do
begin
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic, smList]) or (((I<>Interaction) or not Assigned(fCurrentVideo) or (VideoAlpha<1) or FinishedMusic)) then
+ if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic, smList]) or (((I<>Interaction) or not Assigned(fCurrentVideo) or (VideoAlpha<1) or AudioPlayback.Finished)) then
Button[I].Draw;
end;
@@ -3365,7 +2481,11 @@ function TScreenSong.Draw: boolean;
Equalizer.Draw;
- DrawExtensions;
+ //Draw Song Menu
+ if ScreenSongMenu.Visible then
+ ScreenSongMenu.Draw
+ else if ScreenSongJumpto.Visible then
+ ScreenSongJumpto.Draw;
//if (Mode = smPartyTournament) then
// PartyTimeLimit();
@@ -3373,21 +2493,16 @@ function TScreenSong.Draw: boolean;
Result := true;
end;
-procedure TScreenSong.SelectNext(onlyFix: boolean = true);
+procedure TScreenSong.SelectNext();
var
Skip: integer;
- VS: integer;
NextInt: integer;
begin
- VS := CatSongs.VisibleSongs;
- if VS > 0 then
+ if USongs.CatSongs.GetVisibleSongs() > 0 then
begin
- if (not isScrolling) and (VS > 0) then
- begin
- isScrolling := true;
- OnSongDeselect;
- end;
+ if not Self.IsScrolling then
+ Self.OnSongDeselect();
Skip := 1;
@@ -3399,47 +2514,30 @@ procedure TScreenSong.SelectNext(onlyFix: boolean = true);
SongTarget := SongTarget + 1;//Skip;
-
if not ((TSongMenuMode(Ini.SongMenu) in [smChessboard, smList, smMosaic]) and (NextInt < Interaction)) then
Interaction := NextInt;
// try to keep all at the beginning
- if SongTarget > VS-1 then
+ if SongTarget > USongs.CatSongs.GetVisibleSongs()-1 then
begin
- SongTarget := SongTarget - VS;
- SongCurrent := SongCurrent - VS;
+ SongTarget := SongTarget - USongs.CatSongs.GetVisibleSongs();
+ SongCurrent := SongCurrent - USongs.CatSongs.GetVisibleSongs();
end;
// if ((TSongMenuMode(Ini.SongMenu) in [smList]) and (NextInt = 0)) then
// SongCurrent := -1;
-
- if (not onlyFix) then
- begin
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic]) then
- begin
- if (not Button[Interaction].Visible) then
- ChessboardMinLine := ChessboardMinLine + 1;
- end;
- end;
-
end;
end;
procedure TScreenSong.SelectPrev;
var
Skip: integer;
- VS: integer;
PrevInt: integer;
begin
- VS := CatSongs.VisibleSongs;
-
- if (VS > 0) then
+ if (USongs.CatSongs.GetVisibleSongs() > 0) then
begin
- if (not isScrolling) then
- begin
- isScrolling := true;
- OnSongDeselect;
- end;
+ if not Self.IsScrolling then
+ Self.OnSongDeselect();
Skip := 1;
@@ -3449,147 +2547,71 @@ procedure TScreenSong.SelectPrev;
SongTarget := SongTarget - 1;
PrevInt := (Interaction - Skip + Length(Interactions)) mod Length(Interactions);
-
if not ((TSongMenuMode(Ini.SongMenu) in [smChessboard, smList, smMosaic]) and (PrevInt > Interaction)) then
Interaction := PrevInt;
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smMosaic]) then
- begin
- if (not Button[Interaction].Visible) then
- ChessboardMinLine := ChessboardMinLine - 1;
- end;
-
// try to keep all at the beginning
if SongTarget < 0 then
begin
- SongTarget := SongTarget + CatSongs.VisibleSongs;
- SongCurrent := SongCurrent + CatSongs.VisibleSongs;
+ SongTarget := SongTarget + USongs.CatSongs.GetVisibleSongs();
+ SongCurrent := SongCurrent + USongs.CatSongs.GetVisibleSongs();
end;
end;
end;
procedure TScreenSong.SelectNextRow;
var
- Skip, SongIndex: integer;
- VS: integer;
+ Skip, SongIndexRow: integer;
begin
- VS := CatSongs.VisibleSongs;
-
- AudioPlayback.PlaySound(SoundLib.Change);
-
- if VS > 0 then
+ if USongs.CatSongs.GetVisibleSongs() > 0 then
begin
-
- if (not isScrolling) and (VS > 0) then
- begin
- isScrolling := true;
- OnSongDeselect;
- end;
+ if not Self.IsScrolling then
+ Self.OnSongDeselect();
Skip := 0;
- SongIndex := Interaction;
+ SongIndexRow := Interaction;
- while ((Skip <= Theme.Song.Cover.Cols) and (SongIndex < Length(CatSongs.Song))) do
+ while ((Skip <= Theme.Song.Cover.Cols) and (SongIndexRow < Length(CatSongs.Song))) do
begin
- if (CatSongs.Song[SongIndex].Visible) then
+ if (CatSongs.Song[SongIndexRow].Visible) then
begin
Inc(Skip);
end;
- Inc(SongIndex);
- end;
-
- SongTarget := SongTarget + 1;
-
- if (Skip <= Theme.Song.Cover.Cols) then
- begin
- Interaction := LastVisibleSongIndex;
- end
- else
- begin
- if (CatSongs.Song[SongIndex - 1].Visible) then
- Interaction := SongIndex - 1;
+ Inc(SongIndexRow);
end;
- if (not Button[Interaction].Visible) then
- ChessboardMinLine := ChessboardMinLine + 1;
+ Self.SongTarget += 1;
+ if (USongs.CatSongs.Song[SongIndexRow - 1].Visible) then
+ Self.Interaction := SongIndexRow - 1;
end;
end;
procedure TScreenSong.SelectPrevRow;
var
- Skip, SongIndex: integer;
- VS: integer;
+ Skip, SongIndexRow: integer;
begin
- VS := CatSongs.VisibleSongs;
-
- AudioPlayback.PlaySound(SoundLib.Change);
-
- if (VS > 0) then
+ if (USongs.CatSongs.GetVisibleSongs() > 0) then
begin
-
- if (not isScrolling) and (VS > 0) then
- begin
- isScrolling := true;
- OnSongDeselect;
- end;
+ if not Self.IsScrolling then
+ Self.OnSongDeselect();
Skip := 0;
- SongIndex := Interaction;
+ SongIndexRow := Interaction;
- while ((Skip <= Theme.Song.Cover.Cols) and (SongIndex > -1)) do
+ while ((Skip <= Theme.Song.Cover.Cols) and (SongIndexRow > -1)) do
begin
- if (CatSongs.Song[SongIndex].Visible) then
+ if (CatSongs.Song[SongIndexRow].Visible) then
begin
Inc(Skip);
end;
- Dec(SongIndex);
- end;
-
- SongTarget := SongTarget - 1;
-
- if (Skip <= Theme.Song.Cover.Cols) then
- begin
- Interaction := FirstVisibleSongIndex;
- end
- else
- begin
- if (CatSongs.Song[SongIndex + 1].Visible) then
- Interaction := SongIndex + 1;
+ Dec(SongIndexRow);
end;
- end;
-
- if (not Button[Interaction].Visible) then
- ChessboardMinLine := ChessboardMinLine - 1;
-end;
-
-procedure TScreenSong.SelectNextListRow;
-var
- VS, MaxListLine: integer;
- NrMiddleSong: integer;
- MaxListLineTmp: real;
-begin
- AudioPlayback.PlaySound(SoundLib.Change);
- SelectNext;
-
- if (not Button[Interaction].Visible) then
- begin
- ListLastMinLine := ListMinLine;
- ListMinLine := ListMinLine + 1;
- end;
-end;
-
-procedure TScreenSong.SelectPrevListRow;
-begin
- AudioPlayback.PlaySound(SoundLib.Change);
- SelectPrev;
-
- if (not Button[Interaction].Visible) then
- begin
- ListLastMinLine := ListMinLine;
- ListMinLine := ListMinLine - 1;
+ SongTarget -= 1;
+ if (USongs.CatSongs.Song[SongIndexRow + 1].Visible) then
+ Self.Interaction := SongIndexRow + 1;
end;
end;
@@ -3597,8 +2619,6 @@ procedure TScreenSong.StartMusicPreview();
var
Song: TSong;
PreviewPos: real;
- I: integer;
- Vol: cardinal;
begin
if SongIndex <> -1 then
begin
@@ -3608,7 +2628,7 @@ procedure TScreenSong.StartMusicPreview();
AudioPlayback.Close();
- if CatSongs.VisibleSongs = 0 then
+ if USongs.CatSongs.GetVisibleSongs() = 0 then
Exit;
Song := CatSongs.Song[Interaction];
@@ -3667,17 +2687,13 @@ procedure TScreenSong.StartVideoPreview();
if (Ini.VideoPreview=0) then
Exit;
- if Assigned(fCurrentVideo) then
- begin
- fCurrentVideo.Stop();
- fCurrentVideo := nil;
- end;
+ Self.StopVideoPreview();
//if no audio open => exit
if (PreviewOpened = -1) then
Exit;
- if CatSongs.VisibleSongs = 0 then
+ if USongs.CatSongs.GetVisibleSongs() = 0 then
Exit;
Song := CatSongs.Song[Interaction];
@@ -3720,63 +2736,59 @@ procedure TScreenSong.ChangeMusic;
StartVideoPreview();
end;
-procedure TScreenSong.SkipTo(Target: cardinal; TargetInteraction: integer = 0; VS: integer = 0);
+procedure TScreenSong.SkipTo(Target: cardinal);
var
- i: integer;
- MaxLine: real;
- ChessboardLine: real;
+ I: integer;
begin
- if (TSongMenuMode(Ini.SongMenu) in [smRoulette, smCarousel, smSlide, smSlotMachine]) then
+ if (TSongMenuMode(UIni.Ini.SongMenu) in [smRoulette, smCarousel, smSlide, smSlotMachine]) then
begin
- Interaction := High(CatSongs.Song);
- SongTarget := 0;
-
- for i := 1 to Target+1 do
- SelectNext;
+ Self.Interaction := High(CatSongs.Song);
+ Self.SongTarget := 0;
+ for I := 0 to Target do
+ Self.SelectNext();
- FixSelected2;
- end;
-
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smList, smMosaic]) then
+ Self.FixSelected2();
+ end
+ else if (TSongMenuMode(UIni.Ini.SongMenu) in [smChessboard, smList, smMosaic]) then //TODO it fails with tabs on
begin
- Interaction := TargetInteraction;
- SongTarget := Interaction;
-
- if not (Button[Interaction].Visible) then
- begin
- ChessboardLine := (CatSongs.VisibleIndex(Interaction) - Theme.Song.Cover.Cols * Theme.Song.Cover.Rows) / Theme.Song.Cover.Cols;
-
- if (Frac(ChessboardLine) > 0) then
- ChessboardMinLine := Round(ChessboardLine) + 1
- else
- ChessboardMinLine := Round(ChessboardLine);
-
- MaxLine := (VS - Theme.Song.Cover.Cols * Theme.Song.Cover.Rows) / Theme.Song.Cover.Cols;
-
- if (Frac(Maxline) > 0) then
- MaxLine := Round(MaxLine) + 1
- else
- MaxLine := Round(MaxLine);
-
- if (ChessboardMinLine > MaxLine) then
- ChessboardMinLine := Round(MaxLine);
- end;
-
- FixSelected;
- OnSongSelect;
+ Self.Interaction := Target - 1;
+ Self.SelectNext();
end;
end;
+
procedure TScreenSong.SelectRandomSong;
+ procedure SkipToNoDuet();
+ var
+ Count: Integer;
+ RealTarget, Target: cardinal;
+ begin
+ if (Mode = smPartyClassic) then
+ begin
+ repeat
+ Target := Random(USongs.CatSongs.GetVisibleSongs());
+ RealTarget := -1;
+ Count := -1;
+ repeat
+ Inc(RealTarget);
+ if (CatSongs.Song[RealTarget].Visible) then
+ Inc(Count);
+ until (Count = Target);
+ until not(CatSongs.Song[RealTarget].isDuet);
+ end
+ else
+ Target := Random(USongs.CatSongs.GetVisibleSongs());
+
+ Self.SkipTo(Target);
+ end;
var
- I, I2, Count, RealTarget: integer;
- Target: cardinal;
+ I, I2: integer;
begin
case PlayListMan.Mode of
smAll: // all songs just select random song
begin
// when tabs are activated then use tab method
- if (Ini.TabsAtStartup = 1) then
+ if (UIni.Ini.Tabs = 1) then
begin
repeat
I2 := Low(CatSongs.Song) + Random(High(CatSongs.Song) + 1 - Low(CatSongs.Song));
@@ -3798,123 +2810,25 @@ procedure TScreenSong.SelectRandomSong;
CatSongs.ClickCategoryButton(I);
SelectNext;
-
- // choose song
- // duets not playble
- if (Mode = smPartyClassic) then
- begin
- repeat
- Target := Random(CatSongs.VisibleSongs);
-
- RealTarget := -1;
- Count := -1;
-
- repeat
- Inc(RealTarget);
-
- if (CatSongs.Song[RealTarget].Visible) then
- Inc(Count);
- until (Count = Target);
-
- until not(CatSongs.Song[RealTarget].isDuet);
- end
- else
- Target := Random(CatSongs.VisibleSongs);
-
- SkipTo(Target, RealTarget, CatSongs.VisibleSongs);
- //SkipTo(I2 - I);
- end
- // when tabs are deactivated use easy method
- else
- begin
- // duets not playble
- if (Mode = smPartyClassic) then
- begin
- repeat
- Target := Random(CatSongs.VisibleSongs);
-
- RealTarget := -1;
- Count := -1;
-
- repeat
- Inc(RealTarget);
-
- if (CatSongs.Song[RealTarget].Visible) then
- Inc(Count);
- until (Count = Target);
-
- until not(CatSongs.Song[RealTarget].isDuet);
- end
- else
- Target := Random(CatSongs.VisibleSongs);
-
- SkipTo(Target);
end;
+ SkipToNoDuet();
end;
smCategory: // one category select category and select random song
begin
-
CatSongs.ShowCategoryList;
CatSongs.ClickCategoryButton(PlaylistMan.CurPlayList);
ShowCatTL(PlaylistMan.CurPlayList);
-
SelectNext;
FixSelected2;
-
- // duets not playble
- if (Mode = smPartyClassic) then
- begin
- repeat
- Target := Random(CatSongs.VisibleSongs);
-
- RealTarget := -1;
- Count := -1;
-
- repeat
- Inc(RealTarget);
-
- if (CatSongs.Song[RealTarget].Visible) then
- Inc(Count);
- until (Count = Target);
-
- until not(CatSongs.Song[RealTarget].isDuet);
- end
- else
- Target := Random(CatSongs.VisibleSongs);
-
- SkipTo(Target);
+ SkipToNoDuet();
end;
smPlaylist: // playlist: select playlist and select random song
begin
PlaylistMan.SetPlayList(PlaylistMan.CurPlayList);
-
- // duets not playble
- if (Mode = smPartyClassic) then
- begin
- repeat
- Target := Random(CatSongs.VisibleSongs);
-
- RealTarget := -1;
- Count := -1;
-
- repeat
- Inc(RealTarget);
-
- if (CatSongs.Song[RealTarget].Visible) then
- Inc(Count);
- until (Count = Target);
-
- until not(CatSongs.Song[RealTarget].isDuet);
- end
- else
- Target := Random(CatSongs.VisibleSongs);
-
- SkipTo(Target);
+ SkipToNoDuet();
FixSelected2;
end;
end;
-
- AudioPlayback.PlaySound(SoundLib.Change);
SetScroll;
end;
@@ -4035,32 +2949,7 @@ procedure TScreenSong.SetJoker;
end;
end;
-procedure TScreenSong.SetStatics;
-var
- I: integer;
- Visible: boolean;
-begin
- //Set Visibility of Party Statics and Text
- Visible := (Mode = smPartyClassic);
-
- for I := 0 to High(StaticParty) do
- Statics[StaticParty[I]].Visible := Visible;
-
- for I := 0 to High(TextParty) do
- Text[TextParty[I]].Visible := Visible;
-
- //Set Visibility of Non Party Statics and Text
- Visible := not Visible;
-
- for I := 0 to High(StaticNonParty) do
- Statics[StaticNonParty[I]].Visible := Visible;
-
- for I := 0 to High(TextNonParty) do
- Text[TextNonParty[I]].Visible := Visible;
-end;
-
//Procedures for Menu
-
procedure TScreenSong.StartSong;
begin
CatSongs.Selected := Interaction;
@@ -4096,23 +2985,45 @@ procedure TScreenSong.DoJoker (Team: integer);
end;
end;
-procedure TScreenSong.LoadCover(NumberOfButtonInArray: integer);
-var
- deb1: string;
- CoverFile: IPath;
- Song: TSong;
+{ Preload covers on draw if not exists a user interaction }
+procedure TScreenSong.LoadCovers();
begin
- if not Assigned(Button[NumberOfButtonInArray].Texture.Name) then
+ if Self.Covers > 0 then
begin
- Song := CatSongs.Song[NumberOfButtonInArray];
- CoverFile := Song.Path.Append(Song.Cover);
- if not CoverFile.IsFile() or Song.Cover.IsUnset then
- CoverFile := Skin.GetTextureFileName('SongCover');
+ Self.LoadCover(Self.Covers);
+ Dec(Self.Covers);
+ end
+end;
- Button[NumberOfButtonInArray].Texture := Covers.AddCover(CoverFile).GetTexture();
+{ Load covers dynamically in a song button }
+procedure TScreenSong.LoadCover(B: integer);
+begin
+ if not Assigned(Self.Button[B].Texture.Name) then
+ begin
+ Self.Button[B].Texture := UTexture.Texture.LoadTexture(USongs.CatSongs.Song[B].Path.Append(USongs.CatSongs.Song[B].Cover));
+ if not Assigned(Self.Button[B].Texture.Name) then //the default cover is used if texture assignment failed or don't exist
+ Self.Button[B].Texture := UTexture.Texture.LoadTexture(USkins.Skin.GetTextureFileName('SongCover'));
end;
end;
+{ Load main cover in some game modes }
+procedure TScreenSong.LoadMainCover();
+begin
+ if Statics[Self.MainCover].Texture.Name <> Skin.GetTextureFileName('SongCover') then
+ glDeleteTextures(1, PGLuint(@Statics[Self.MainCover].Texture.TexNum));
+
+ if TSongMenuMode(UIni.Ini.SongMenu) in [smChessboard, smMosaic] then //to load cover after change line
+ Self.LoadCover(Self.Interaction);
+
+ Statics[Self.MainCover].Texture := UTexture.Texture.LoadTexture(Button[Self.Interaction].Texture.Name);
+ Statics[Self.MainCover].Texture.X := Theme.Song.Cover.SelectX;
+ Statics[Self.MainCover].Texture.Y := Theme.Song.Cover.SelectY;
+ Statics[Self.MainCover].Texture.W := Theme.Song.Cover.SelectW;
+ Statics[Self.MainCover].Texture.H := Theme.Song.Cover.SelectH;
+ Statics[Self.MainCover].Texture.Z := 1;
+ Statics[Self.MainCover].Texture.Alpha := 1;
+end;
+
procedure TScreenSong.Refresh;
begin
@@ -4172,7 +3083,6 @@ procedure TScreenSong.StartMedley(NumSongs: integer; MinSource: TMedleySource);
var
I: integer;
VS: integer;
-
begin
//Sel3 := 0;
if (NumSongs > 0) and not MakeMedley then
@@ -4181,7 +3091,7 @@ procedure TScreenSong.StartMedley(NumSongs: integer; MinSource: TMedleySource);
if VS < NumSongs then
PlaylistMedley.NumMedleySongs := VS
else
- PlaylistMedley.NumMedleySongs := NumSongs;
+ PlaylistMedley.NumMedleySongs := NumSongs;
//set up Playlist Medley
SetLength(PlaylistMedley.Song, 0);
@@ -4348,26 +3258,10 @@ procedure TScreenSong.SongScore;
end;
-
-procedure TScreenSong.WriteMessage(msg: UTF8String);
-begin
-
- MessageTime := SDL_GetTicks();
-
- Statics[InfoMessageBG].Texture.Alpha := 1;
- Text[InfoMessageText].Alpha := 1;
-
- Statics[InfoMessageBG].Visible := true;
- Text[InfoMessageText].Visible := true;
- Text[InfoMessageText].Text := msg;
-
-end;
-
procedure TScreenSong.FadeMessage();
var
factor: real;
begin
-
if ((SDL_GetTicks - MessageTime)/1000 > MAX_MESSAGE) then
begin
if (MessageTimeFade = 0) then
@@ -4382,7 +3276,6 @@ procedure TScreenSong.FadeMessage();
Statics[InfoMessageBG].Draw;
Text[InfoMessageText].Draw;
-
end;
procedure TScreenSong.CloseMessage();
@@ -4396,7 +3289,7 @@ procedure TScreenSong.ChangeSorting(Tabs: integer; Duet: boolean; Sorting: integ
I, Count: integer;
begin
Ini.Sorting := Sorting;
- Ini.TabsAtStartup := Tabs;
+ UIni.Ini.Tabs := Tabs;
//ClearButtons();
CatSongs.Refresh;
diff --git a/src/screens/UScreenSongJumpto.pas b/src/screens/UScreenSongJumpto.pas
index e9514dd1..434ce3c5 100644
--- a/src/screens/UScreenSongJumpto.pas
+++ b/src/screens/UScreenSongJumpto.pas
@@ -1,8 +1,8 @@
{*
UltraStar Deluxe WorldParty - Karaoke Game
-
- UltraStar Deluxe WorldParty is the legal property of its developers,
- whose names are too numerous to list here. Please refer to the
+
+ UltraStar Deluxe WorldParty is the legal property of its developers,
+ whose names are too numerous to list here. Please refer to the
COPYRIGHT file distributed with this source distribution.
This program is free software: you can redistribute it and/or modify
@@ -16,7 +16,7 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
- along with this program. Check "LICENSE" file. If not, see
+ along with this program. Check "LICENSE" file. If not, see
.
*}
@@ -92,7 +92,6 @@ function TScreenSongJumpto.ParseInput(PressedKey: cardinal; CharCode: UCS4Char;
Button[0].Text[0].ColR := Theme.SongJumpto.ButtonSearchText.ColR;
Button[0].Text[0].ColG := Theme.SongJumpto.ButtonSearchText.ColG;
Button[0].Text[0].ColB := Theme.SongJumpto.ButtonSearchText.ColB;
-
Button[0].Text[0].Text := Button[0].Text[0].Text + UCS4ToUTF8String(CharCode);
SetTextFound(CatSongs.SetFilter(Button[0].Text[0].Text, fSelectType));
end;
@@ -118,8 +117,7 @@ function TScreenSongJumpto.ParseInput(PressedKey: cardinal; CharCode: UCS4Char;
begin
//ScreenSong.UnLoadDetailedCover;
Button[0].Text[0].Text := '';
- CatSongs.SetFilter('', fltAll);
- SetTextFound(0);
+ SetTextFound(CatSongs.SetFilter('', fltAll));
end;
end;
@@ -234,28 +232,15 @@ procedure TScreenSongJumpto.SetTextFound(Count: cardinal);
//Set visSongs
fVisSongs := Count;
- //Fix SongSelection
- if (TSongMenuMode(Ini.SongMenu) in [smRoulette, smCarousel, smSlide, smSlotMachine]) then
- begin
- ScreenSong.Interaction := high(CatSongs.Song);
- end;
-
- if (TSongMenuMode(Ini.SongMenu) in [smChessboard, smList, smMosaic]) then
- begin
- ScreenSong.Interaction := 0;
- ScreenSong.ChessboardMinLine := 0;
- ScreenSong.ListMinLine := 0;
- end;
-
+ ScreenSong.Interaction := 0;
ScreenSong.SelectNext;
ScreenSong.FixSelected;
-
- ScreenSong.SetScrollRefresh;
+ ScreenSong.SetScroll(true);
//Play Correct Music
- if (ScreenSong.Interaction <> fLastPlayed) or (CatSongs.VisibleSongs = 0) then
+ if (ScreenSong.Interaction <> fLastPlayed) or (USongs.CatSongs.GetVisibleSongs() = 0) then
begin
- if (CatSongs.VisibleSongs > 0) then
+ if (USongs.CatSongs.GetVisibleSongs() > 0) then
fLastPlayed := ScreenSong.Interaction
else
fLastPlayed := -1;
diff --git a/src/screens/UScreenSongMenu.pas b/src/screens/UScreenSongMenu.pas
index 82fd3aad..e0a89998 100644
--- a/src/screens/UScreenSongMenu.pas
+++ b/src/screens/UScreenSongMenu.pas
@@ -77,8 +77,6 @@ TScreenSongMenu = class(TMenu)
SM_Refresh_Scores = 64 or 6;
SM_Song = 64 or 8;
SM_Medley = 64 or 16;
- SM_Sorting = 64 or 32;
- SM_Extra = 64 or 64;
SM_Jukebox = 64 or 128;
var
@@ -170,9 +168,8 @@ function TScreenSongMenu.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Pr
end
else
begin
- AudioPlayback.PlaySound(SoundLib.Change);
ScreenSong.SelectNext;
- ScreenSong.SetScrollRefresh;
+ ScreenSong.SetScroll(true);
end;
end;
SDLK_LEFT:
@@ -185,9 +182,8 @@ function TScreenSongMenu.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; Pr
end
else
begin
- AudioPlayback.PlaySound(SoundLib.Change);
ScreenSong.SelectPrev;
- ScreenSong.SetScrollRefresh;
+ ScreenSong.SetScroll(true);
end;
end;
@@ -328,21 +324,17 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[0].Visible := true;
Button[1].Visible := ((Length(PlaylistMedley.Song) > 0) or (CatSongs.Song[ScreenSong.Interaction].Medley.Source > msNone));
Button[2].Visible := true;
- Button[3].Visible := true;
- Button[4].Visible := true;
+ Button[3].Visible := false;
+ Button[4].Visible := false;
SelectsS[0].Visible := false;
SelectsS[1].Visible := false;
SelectsS[2].Visible := false;
- // need because of no web dll
- Button[2].Selectable := true;
-
Button[0].Text[0].Text := Language.Translate('SONG_MENU_SONG');
Button[1].Text[0].Text := Language.Translate('SONG_MENU_MEDLEY');
- Button[2].Text[0].Text := Language.Translate('SONG_MENU_SORTING');
- Button[3].Text[0].Text := Language.Translate('SONG_MENU_REFRESH_SCORES');
- Button[4].Text[0].Text := Language.Translate('SONG_MENU_EXTRA');
+ Button[2].Text[0].Text := Language.Translate('SONG_MENU_REFRESH_SCORES');
+
end;
SM_Song:
begin
@@ -352,7 +344,7 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[0].Visible := true;
Button[1].Visible := true;
Button[2].Visible := true;
- Button[3].Visible := true;
+ Button[3].Visible := false;
Button[4].Visible := true;
SelectsS[0].Visible := false;
@@ -390,47 +382,6 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[4].Text[0].Text := Language.Translate('SONG_MENU_CANCEL');
end;
- SM_Sorting:
- begin
- CurMenu := sMenu;
- Text[0].Text := Language.Translate('SONG_MENU_NAME_SORTING');
-
- Button[0].Visible := false;
- Button[1].Visible := false;
- Button[2].Visible := false;
- Button[3].Visible := true;
- Button[4].Visible := true;
-
- SelectsS[0].Visible := true;
- SelectsS[1].Visible := true;
- SelectsS[2].Visible := true;
-
- SetLength(ISelections1, 2);
- ISelections1[0] := Language.Translate('SONG_MENU_SORTING_TABS_OFF');
- ISelections1[1] := Language.Translate('SONG_MENU_SORTING_TABS_ON');
-
- SetLength(ISelections2, 2);
- ISelections2[0] := Language.Translate('SONG_MENU_SORTING_ALL');
- ISelections2[1] := Language.Translate('SONG_MENU_SORTING_DUET');
-
- SetLength(ISelections3, Length(UIni.ISorting));
- For I := 0 to High(UIni.ISorting) do
- ISelections3[I] := UIni.ISorting[I];
-
- SelectValue1 := Ini.Tabs;
- SelectValue3 := Ini.Sorting;
-
- UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide1, 0, ISelections1, SelectValue1);
- UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide2, 1, ISelections2, SelectValue2);
- UpdateSelectSlideOptions(Theme.SongMenu.SelectSlide3, 2, ISelections3, SelectValue3);
-
- //Button[3].Visible := (Ini.Sorting <> SelectValue3);
- Button[3].Text[0].Text := Language.Translate('SONG_MENU_SORTING_APPLY');
- Button[4].Text[0].Text := Language.Translate('SONG_MENU_CANCEL');
-
- Interaction := 3;
- end;
-
SM_PlayList:
begin
CurMenu := sMenu;
@@ -449,7 +400,6 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY');
Button[1].Text[0].Text := Language.Translate('SONG_MENU_CHANGEPLAYERS');
Button[2].Text[0].Text := Language.Translate('SONG_MENU_PLAYLIST_DEL');
- Button[3].Text[0].Text := Language.Translate('SONG_MENU_EDIT');
end;
SM_Playlist_Add:
@@ -721,9 +671,7 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[0].Text[0].Text := Language.Translate('SONG_MENU_PLAY');
end;
- SM_Extra:
- begin
- end;
+
SM_Jukebox:
begin
CurMenu := sMenu;
@@ -732,7 +680,7 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
UpdateJukeboxButtons();
- Button[0].Visible := (Ini.TabsAtStartup = 1);
+ Button[0].Visible := (UIni.Ini.Tabs = 1);
Button[3].Visible := false;
Button[4].Visible := true;
@@ -745,7 +693,7 @@ procedure TScreenSongMenu.MenuShow(sMenu: byte);
Button[4].Text[0].Text := Language.Translate('SONG_MENU_START_JUKEBOX');
- if (Ini.TabsAtStartup = 1) then
+ if (UIni.Ini.Tabs = 1) then
Interaction := 0
else
Interaction := 1;
@@ -773,39 +721,12 @@ procedure TScreenSongMenu.HandleReturn;
end;
2: // button 3
- begin
- ScreenPopupError.ShowPopup(Language.Translate('PARTY_MODE_NOT_AVAILABLE'));
- // MenuShow(SM_Sorting);
- end;
-
- 3: // selectslide 1
- begin
- //Dummy
- end;
-
- 4: // selectslide 2
- begin
- //Dummy
- end;
-
- 5: // selectslide 3
- begin
- //Dummy
- end;
-
- 6: // button 4
begin
// show refresh scores menu
MenuShow(SM_Refresh_Scores);
ScreenSong.StopMusicPreview();
ScreenSong.StopVideoPreview();
end;
- 7: // button 5
- begin
- ScreenPopupError.ShowPopup(Language.Translate('PARTY_MODE_NOT_AVAILABLE'));
- // show extras
- //MenuShow(SM_Extra);
- end;
end;
end;
@@ -838,24 +759,9 @@ procedure TScreenSongMenu.HandleReturn;
MenuShow(SM_Playlist_Add);
end;
- 3: // selectslide 1
- begin
- //Dummy
- end;
-
- 4: // selectslide 2
- begin
- //Dummy
- end;
-
- 5: // selectslide 3
- begin
- //Dummy
- end;
-
7: // button 5
begin
- // show main menu
+ // show main menu (cancel)
MenuShow(SM_Main);
end;
end;
@@ -919,37 +825,6 @@ procedure TScreenSongMenu.HandleReturn;
end;
end;
- SM_Sorting:
- begin
- Case Interaction of
- 0: //Button 1
- begin
- end;
-
- 1: //Button 2
- begin
- end;
-
- 3: //Slide
- begin
- //dummy
- end;
-
- 6: //Button 4
- begin
- //Change Sorting
- ScreenSong.ChangeSorting(SelectValue1, (SelectValue2 = 0), SelectValue3);
- Visible := false;
- end;
-
- 7: // button 5
- begin
- // show main menu
- MenuShow(SM_Main);
- end;
- end;
- end;
-
SM_PlayList:
begin
Visible := false;
diff --git a/src/screens/UScreenStatMain.pas b/src/screens/UScreenStatMain.pas
index e22de585..7b89c05c 100644
--- a/src/screens/UScreenStatMain.pas
+++ b/src/screens/UScreenStatMain.pas
@@ -61,14 +61,15 @@ TScreenStatMain = class(TMenu)
implementation
uses
+ Classes,
+ UCommon,
UGraphic,
UDataBase,
- USongs,
- USong,
ULanguage,
- UCommon,
- Classes,
ULog,
+ USongs,
+ USong,
+ UScreenStatDetail,
UUnicodeUtils;
function TScreenStatMain.ParseInput(PressedKey: cardinal; CharCode: UCS4Char; PressedDown: boolean): boolean;
@@ -158,7 +159,6 @@ constructor TScreenStatMain.Create;
AddButtonText(14, 20, Theme.Options.Description[OPTIONS_DESC_INDEX_BACK]);
Interaction := 0;
-
end;
procedure TScreenStatMain.OnShow;
@@ -166,6 +166,9 @@ procedure TScreenStatMain.OnShow;
I: integer;
begin
inherited;
+ if not Assigned(UGraphic.ScreenStatDetail) then //load the screen only the first time
+ UGraphic.ScreenStatDetail := TScreenStatDetail.Create();
+
//Set Songs with Vid
SongsWithVid := 0;
for I := 0 to Songs.SongList.Count -1 do
diff --git a/src/screens/controllers/UScreenSingController.pas b/src/screens/controllers/UScreenSingController.pas
index 0f17ea10..2da82b69 100644
--- a/src/screens/controllers/UScreenSingController.pas
+++ b/src/screens/controllers/UScreenSingController.pas
@@ -57,7 +57,7 @@ interface
type
- TPos = record // Lines[part].Line[line].Note[note]
+ TPos = record // CurrentSong.Lines[part].Line[line].Note[note]
part: integer;
line: integer;
note: integer;
@@ -1081,12 +1081,12 @@ procedure TScreenSingController.LoadNextSong();
begin
found := false;
- for line := 0 to length(Lines[0].Line) - 1 do
+ for line := 0 to length(CurrentSong.Lines[0].Line) - 1 do
begin
- for note := 0 to length(Lines[0].Line[line].Note) - 1 do
+ for note := 0 to length(CurrentSong.Lines[0].Line[line].Note) - 1 do
begin
- if (beat >= Lines[0].Line[line].Note[note].Start) and
- (beat <= Lines[0].Line[line].Note[note].Start + Lines[0].Line[line].Note[note].Length) then
+ if (beat >= CurrentSong.Lines[0].Line[line].Note[note].Start) and
+ (beat <= CurrentSong.Lines[0].Line[line].Note[note].Start + CurrentSong.Lines[0].Line[line].Note[note].Length) then
begin
Result.part := 0;
Result.line := line;
@@ -1103,12 +1103,12 @@ procedure TScreenSingController.LoadNextSong();
if CurrentSong.isDuet and (PlayersPlay <> 1) then
begin
- for Line := 0 to length(Lines[1].Line) - 1 do
+ for Line := 0 to length(CurrentSong.Lines[1].Line) - 1 do
begin
- for Note := 0 to length(Lines[1].Line[Line].Note) - 1 do
+ for Note := 0 to length(CurrentSong.Lines[1].Line[Line].Note) - 1 do
begin
- if (beat>=Lines[1].Line[Line].Note[Note].Start) and
- (beat<=Lines[1].Line[Line].Note[Note].Start + Lines[1].Line[Line].Note[Note].Length) then
+ if (beat>=CurrentSong.Lines[1].Line[Line].Note[Note].Start) and
+ (beat<=CurrentSong.Lines[1].Line[Line].Note[Note].Start + CurrentSong.Lines[1].Line[Line].Note[Note].Length) then
begin
Result.CP := 1;
Result.line := Line;
@@ -1125,11 +1125,11 @@ procedure TScreenSingController.LoadNextSong();
min := high(integer);
//second try (approximating)
- for line := 0 to length(Lines[0].Line) - 1 do
+ for line := 0 to length(CurrentSong.Lines[0].Line) - 1 do
begin
- for note := 0 to length(Lines[0].Line[line].Note) - 1 do
+ for note := 0 to length(CurrentSong.Lines[0].Line[line].Note) - 1 do
begin
- diff := abs(Lines[0].Line[line].Note[note].Start - beat);
+ diff := abs(CurrentSong.Lines[0].Line[line].Note[note].Start - beat);
if diff < min then
begin
Result.part := 0;
@@ -1143,11 +1143,11 @@ procedure TScreenSingController.LoadNextSong();
if CurrentSong.isDuet and (PlayersPlay <> 1) then
begin
- for Line := 0 to length(Lines[1].Line) - 1 do
+ for Line := 0 to length(CurrentSong.Lines[1].Line) - 1 do
begin
- for Note := 0 to length(Lines[1].Line[Line].Note) - 1 do
+ for Note := 0 to length(CurrentSong.Lines[1].Line[Line].Note) - 1 do
begin
- diff := abs(Lines[1].Line[Line].Note[Note].Start - beat);
+ diff := abs(CurrentSong.Lines[1].Line[Line].Note[Note].Start - beat);
if diff= PlaylistMedley.CurrentMedleySong then
@@ -1227,7 +1225,7 @@ procedure TScreenSingController.LoadNextSong();
//medley start and end timestamps
StartNote := FindNote(CurrentSong.Medley.StartBeat - round(CurrentSong.BPM*CurrentSong.Medley.FadeIn_time/60));
- MedleyStart := GetTimeFromBeat(Lines[0].Line[StartNote.line].Note[0].Start);
+ MedleyStart := GetTimeFromBeat(CurrentSong.Lines[0].Line[StartNote.line].Note[0].Start);
//check Medley-Start
if (MedleyStart+CurrentSong.Medley.FadeIn_time*0.5>GetTimeFromBeat(CurrentSong.Medley.StartBeat)) then
@@ -1357,25 +1355,25 @@ procedure TScreenSingController.LoadNextSong();
begin
// initialize lyrics by filling its queue
while (not LyricsDuetP1.IsQueueFull) and
- (LyricsDuetP1.LineCounter <= High(Lines[0].Line)) do
+ (LyricsDuetP1.LineCounter <= High(CurrentSong.Lines[0].Line)) do
begin
- LyricsDuetP1.AddLine(@Lines[0].Line[LyricsDuetP1.LineCounter]);
+ LyricsDuetP1.AddLine(@CurrentSong.Lines[0].Line[LyricsDuetP1.LineCounter]);
end;
// initialize lyrics by filling its queue
while (not LyricsDuetP2.IsQueueFull) and
- (LyricsDuetP2.LineCounter <= High(Lines[1].Line)) do
+ (LyricsDuetP2.LineCounter <= High(CurrentSong.Lines[1].Line)) do
begin
- LyricsDuetP2.AddLine(@Lines[1].Line[LyricsDuetP2.LineCounter]);
+ LyricsDuetP2.AddLine(@CurrentSong.Lines[1].Line[LyricsDuetP2.LineCounter]);
end;
end
else
begin
// initialize lyrics by filling its queue
while (not Lyrics.IsQueueFull) and
- (Lyrics.LineCounter <= High(Lines[0].Line)) do
+ (Lyrics.LineCounter <= High(CurrentSong.Lines[0].Line)) do
begin
- Lyrics.AddLine(@Lines[0].Line[Lyrics.LineCounter]);
+ Lyrics.AddLine(@CurrentSong.Lines[0].Line[Lyrics.LineCounter]);
end;
end;
@@ -1391,18 +1389,18 @@ procedure TScreenSingController.LoadNextSong();
if (CurrentSong.isDuet) and (PlayersPlay <> 1) then
begin
- for Index := Low(Lines[1].Line) to High(Lines[1].Line) do
- if Lines[1].Line[Index].TotalNotes = 0 then
+ for Index := Low(CurrentSong.Lines[1].Line) to High(CurrentSong.Lines[1].Line) do
+ if CurrentSong.Lines[1].Line[Index].TotalNotes = 0 then
Inc(NumEmptySentences[1]);
- for Index := Low(Lines[0].Line) to High(Lines[0].Line) do
- if Lines[0].Line[Index].TotalNotes = 0 then
+ for Index := Low(CurrentSong.Lines[0].Line) to High(CurrentSong.Lines[0].Line) do
+ if CurrentSong.Lines[0].Line[Index].TotalNotes = 0 then
Inc(NumEmptySentences[0]);
end
else
begin
- for Index := Low(Lines[0].Line) to High(Lines[0].Line) do
- if Lines[0].Line[Index].TotalNotes = 0 then
+ for Index := Low(CurrentSong.Lines[0].Line) to High(CurrentSong.Lines[0].Line) do
+ if CurrentSong.Lines[0].Line[Index].TotalNotes = 0 then
Inc(NumEmptySentences[0]);
end;
@@ -1619,7 +1617,7 @@ procedure TScreenSingController.OnSentenceEnd(CP: integer; SentenceIndex: cardin
// TODO: move this to a better place
MAX_LINE_RATING = 8; // max. rating for singing performance
begin
- Line := @Lines[CP].Line[SentenceIndex];
+ Line := @CurrentSong.Lines[CP].Line[SentenceIndex];
// check for empty sentence
if Line.TotalNotes <= 0 then
@@ -1632,7 +1630,7 @@ procedure TScreenSingController.OnSentenceEnd(CP: integer; SentenceIndex: cardin
MaxSongScore := MAX_SONG_SCORE - MAX_SONG_LINE_BONUS;
// Note: ScoreValue is the sum of all note values of the song
- MaxLineScore := MaxSongScore * (Line.TotalNotes / Lines[CP].ScoreValue);
+ MaxLineScore := MaxSongScore * (Line.TotalNotes / CurrentSong.Lines[CP].ScoreValue);
for PlayerIndex := 0 to High(Player) do
begin
@@ -1667,7 +1665,7 @@ procedure TScreenSingController.OnSentenceEnd(CP: integer; SentenceIndex: cardin
if Ini.LineBonus > 0 then
begin
// line-bonus points (same for each line, no matter how long the line is)
- LineBonus := MAX_SONG_LINE_BONUS / (Length(Lines[CP].Line) -
+ LineBonus := MAX_SONG_LINE_BONUS / (Length(CurrentSong.Lines[CP].Line) -
NumEmptySentences[CP]);
// apply line-bonus
CurrentPlayer.ScoreLine :=
@@ -1733,9 +1731,9 @@ procedure TScreenSingController.OnSentenceChange(CP: integer; SentenceIndex: car
(not tmp_Lyric.IsQueueFull) do
begin
// add the next line to the queue or a dummy if no more lines are available
- if (tmp_Lyric.LineCounter <= High(Lines[CP].Line)) then
+ if (tmp_Lyric.LineCounter <= High(CurrentSong.Lines[CP].Line)) then
begin
- tmp_Lyric.AddLine(@Lines[CP].Line[tmp_Lyric.LineCounter]);
+ tmp_Lyric.AddLine(@CurrentSong.Lines[CP].Line[tmp_Lyric.LineCounter]);
end
else
tmp_Lyric.AddLine(nil);
@@ -1774,15 +1772,6 @@ procedure TScreenSingController.UpdateMedleyStats(medley_end: boolean); //TODO
if PlaylistMedley.CurrentMedleySong <= PlaylistMedley.NumMedleySongs then
for I := 0 to num - 1 do
PlaylistMedley.Stats[len - 1].Player[I] := Player[I];
-
- if medley_end and not PlaylistMedley.ApplausePlayed and
- (PlaylistMedley.CurrentMedleySong<=PlaylistMedley.NumMedleySongs) then
- begin
- PlaylistMedley.ApplausePlayed:=true;
-
- AudioPlayback.Fade(CurrentSong.Medley.FadeOut_time, 0.1);
- AudioPlayback.PlaySound(SoundLib.Applause);
- end;
end;
diff --git a/src/screens/views/UScreenSingView.pas b/src/screens/views/UScreenSingView.pas
index 085af4d2..507f35da 100644
--- a/src/screens/views/UScreenSingView.pas
+++ b/src/screens/views/UScreenSingView.pas
@@ -1752,25 +1752,25 @@ procedure TScreenSingView.DrawInfoLyricBar();
x := x + GAPxStart; //move x to the right by Song-Gap-Seconds
//width
- //LastLine := Lines[0].Line[Length(Lines[0].Line) - 1];
+ //LastLine := CurrentSong.Lines[0].Line[Length(CurrentSong.Lines[0].Line) - 1];
w := w - GAPxStart;
//calculate total singing seconds of song
SongStart := 99999999999999;
SongEnd := CurrentSong.BPM*TotalTime/60;
- for CurrentLine := 0 to High(Lines) do //P1 of Duett or standard, P2 of Duett,..
+ for CurrentLine := 0 to High(CurrentSong.Lines) do //P1 of Duett or standard, P2 of Duett,..
begin
- numLines := Length(Lines[CurrentLine].Line); //Lyric lines
+ numLines := Length(CurrentSong.Lines[CurrentLine].Line); //Lyric lines
if (numLines < 2) then //catch cases which could cause endless loop
Exit;
- if SongStart > (Lines[CurrentLine].Line[0].Note[0].Start+(CurrentSong.BPM*CurrentSong.GAP*(1/60/1000))) then
- SongStart := Lines[CurrentLine].Line[0].Note[0].Start + (CurrentSong.BPM*CurrentSong.GAP*(1/60/1000));
+ if SongStart > (CurrentSong.Lines[CurrentLine].Line[0].Note[0].Start+(CurrentSong.BPM*CurrentSong.GAP*(1/60/1000))) then
+ SongStart := CurrentSong.Lines[CurrentLine].Line[0].Note[0].Start + (CurrentSong.BPM*CurrentSong.GAP*(1/60/1000));
end;
ww := SongEnd - SongStart;
- for CurrentLine := 0 to High(Lines) do //for P1 of Duett-lyrics or standard-lyrics, P2 of Duett,..
+ for CurrentLine := 0 to High(CurrentSong.Lines) do //for P1 of Duett-lyrics or standard-lyrics, P2 of Duett,..
begin
- numLines := Length(Lines[CurrentLine].Line); //Lyric lines
+ numLines := Length(CurrentSong.Lines[CurrentLine].Line); //Lyric lines
if (numLines < 2) then //catch cases which could cause endless loop
Exit;
//set color to player.color
@@ -1782,11 +1782,11 @@ procedure TScreenSingView.DrawInfoLyricBar();
glbegin(gl_quads);
for line := 0 to numLines - 1 do
begin
- if (Lines[CurrentLine].Line[line].Note = nil) or (ww < Lines[CurrentLine].Line[line].Note[Lines[CurrentLine].Line[line].HighNote].Start) then Continue;
- pos := (Lines[CurrentLine].Line[line].Note[0].Start)/ww*w;
- br := (Lines[CurrentLine].Line[line].Note[Lines[CurrentLine].Line[line].HighNote].Start +
- Lines[CurrentLine].Line[line].Note[Lines[CurrentLine].Line[line].HighNote].Length -
- Lines[CurrentLine].Line[line].Note[0].Start ) / ww*w; //br = last note of sentence position + its length - first note of sentence position
+ if (CurrentSong.Lines[CurrentLine].Line[line].Note = nil) or (ww < CurrentSong.Lines[CurrentLine].Line[line].Note[CurrentSong.Lines[CurrentLine].Line[line].HighNote].Start) then Continue;
+ pos := (CurrentSong.Lines[CurrentLine].Line[line].Note[0].Start)/ww*w;
+ br := (CurrentSong.Lines[CurrentLine].Line[line].Note[CurrentSong.Lines[CurrentLine].Line[line].HighNote].Start +
+ CurrentSong.Lines[CurrentLine].Line[line].Note[CurrentSong.Lines[CurrentLine].Line[line].HighNote].Length -
+ CurrentSong.Lines[CurrentLine].Line[line].Note[0].Start ) / ww*w; //br = last note of sentence position + its length - first note of sentence position
//draw a square
glVertex2f(x+pos, y); //left top
diff --git a/src/units/.gitkeep b/src/units/.gitkeep
deleted file mode 100644
index e69de29b..00000000