@jjlmoya/utils-games-development 1.49.0 → 1.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/category/index.ts +2 -1
- package/src/entries.ts +5 -1
- package/src/tests/locale_completeness.test.ts +1 -1
- package/src/tests/tool_validation.test.ts +2 -2
- package/src/tool/audioLoopPointFinder/audio-loop-point-finder.css +322 -0
- package/src/tool/audioLoopPointFinder/audio-player.ts +84 -0
- package/src/tool/audioLoopPointFinder/bibliography.astro +6 -0
- package/src/tool/audioLoopPointFinder/bibliography.ts +16 -0
- package/src/tool/audioLoopPointFinder/client.ts +262 -0
- package/src/tool/audioLoopPointFinder/component.astro +147 -0
- package/src/tool/audioLoopPointFinder/dom-utils.ts +55 -0
- package/src/tool/audioLoopPointFinder/entry.ts +27 -0
- package/src/tool/audioLoopPointFinder/i18n/de.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/en.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/es.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/fr.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/id.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/it.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/ja.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/ko.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/nl.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/pl.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/pt.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/ru.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/sv.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/tr.ts +211 -0
- package/src/tool/audioLoopPointFinder/i18n/zh.ts +211 -0
- package/src/tool/audioLoopPointFinder/index.ts +11 -0
- package/src/tool/audioLoopPointFinder/logic.test.ts +72 -0
- package/src/tool/audioLoopPointFinder/logic.ts +214 -0
- package/src/tool/audioLoopPointFinder/metadata-parser.ts +94 -0
- package/src/tool/audioLoopPointFinder/seo.astro +15 -0
- package/src/tool/audioLoopPointFinder/ui.ts +42 -0
- package/src/tool/audioLoopPointFinder/waveform-renderer.ts +53 -0
- package/src/tool/spriteSheetPacker/sprite-sheet-packer.css +55 -19
- package/src/tools.ts +3 -0
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { AudioLoopPointFinderUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
|
|
6
|
+
slug: 'detecteur-points-boucle-audio-jeux',
|
|
7
|
+
title: 'Détecteur de Points de Boucle Audio et Injecteur de Métadonnées',
|
|
8
|
+
description: 'Localisez les points de boucle audio exacts, ajustez les passages par zéro pour éliminer les clics et exportez des fichiers WAV avec des métadonnées LOOPSTART et LOOPEND.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Détecteur de Points de Boucle Audio pour Jeux',
|
|
11
|
+
subtitle: 'Analyseur de forme d onde interactif, détecteur de passage par zéro et marqueur de métadonnées WAV',
|
|
12
|
+
dropzoneTitle: 'Déposez le fichier audio ici ou cliquez pour parcourir',
|
|
13
|
+
dropzoneSubtitle: 'Prend en charge les pistes audio WAV, OGG, MP3 et FLAC',
|
|
14
|
+
dropzoneButton: 'Sélectionner le Fichier Audio',
|
|
15
|
+
audioInfoTitle: 'Propriétés de la Piste Audio',
|
|
16
|
+
durationLabel: 'Durée',
|
|
17
|
+
sampleRateLabel: 'Taux d Échantillonnage',
|
|
18
|
+
channelsLabel: 'Canaux Audio',
|
|
19
|
+
totalSamplesLabel: 'Nombre Total d Échantillons',
|
|
20
|
+
loopControlsTitle: 'Configuration de la Région de Boucle',
|
|
21
|
+
loopStartLabel: 'Marqueur de Début de Boucle',
|
|
22
|
+
loopEndLabel: 'Marqueur de Fin de Boucle',
|
|
23
|
+
loopDurationLabel: 'Durée de la Boucle',
|
|
24
|
+
zeroCrossingLabel: 'Ajustement Passage par Zéro',
|
|
25
|
+
snapZeroCrossingButton: 'Ajuster au Passage par Zéro le Plus Proche',
|
|
26
|
+
playLoopButton: 'Aperçu de la Boucle Fluide',
|
|
27
|
+
pauseLoopButton: 'Mettre en Pause',
|
|
28
|
+
stopLoopButton: 'Arrêter la Lecture',
|
|
29
|
+
exportWavButton: 'Exporter WAV avec Métadonnées',
|
|
30
|
+
sampleUnitLabel: 'Échantillons',
|
|
31
|
+
secondUnitLabel: 'Secondes',
|
|
32
|
+
zoomLabel: 'Zoom Forme d Onde',
|
|
33
|
+
zoomInButton: 'Zoom Avant',
|
|
34
|
+
zoomOutButton: 'Zoom Arrière',
|
|
35
|
+
resetZoomButton: 'Réinitialiser la Vue',
|
|
36
|
+
noFileSelected: 'Aucun fichier audio chargé pour le moment',
|
|
37
|
+
invalidAudioFile: 'Échec du décodage du fichier audio',
|
|
38
|
+
presetsTitle: 'Préréglages Rapides',
|
|
39
|
+
presetFullTrack: 'Boucle Piste Entière',
|
|
40
|
+
presetIntroCut: 'Ignorer 10% d Intro',
|
|
41
|
+
presetMiddleLoop: 'Section Centrale 50%',
|
|
42
|
+
statusLooping: 'Lecture en Boucle Active',
|
|
43
|
+
statusPaused: 'Lecture en Pause',
|
|
44
|
+
statusReady: 'Audio Chargé et Prêt',
|
|
45
|
+
statusLoaded: 'Piste audio chargée avec succès',
|
|
46
|
+
statusDecodeError: 'Erreur lors du décodage du fichier audio',
|
|
47
|
+
statusSnapped: 'Marqueurs ajustés aux passages par zéro',
|
|
48
|
+
statusStopped: 'Lecture arrêtée',
|
|
49
|
+
statusExported: 'Fichier WAV exporté avec métadonnées intégrées',
|
|
50
|
+
},
|
|
51
|
+
seo: [
|
|
52
|
+
{
|
|
53
|
+
type: 'title',
|
|
54
|
+
level: 2,
|
|
55
|
+
text: 'Bouclage Audio Fluide et Alignement d Échantillons pour Jeux Vidéo',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'paragraph',
|
|
59
|
+
html: 'Obtenir une lecture continue de musique de fond dans les jeux vidéo nécessite un alignement exact des échantillons aux limites de la boucle. Les moteurs de jeu modernes comme Unity, Godot, Unreal Engine, FMOD et Wwise utilisent des métadonnées de boucle intégrées telles que LOOPSTART et LOOPEND.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'stats',
|
|
63
|
+
columns: 4,
|
|
64
|
+
items: [
|
|
65
|
+
{ label: 'Précision d Échantillonnage', value: '44.1 kHz / 48 kHz' },
|
|
66
|
+
{ label: 'Seuil de Passage par Zéro', value: 'Amplitude 0.00' },
|
|
67
|
+
{ label: 'Standard de Métadonnées', value: 'RIFF smpl et INFO' },
|
|
68
|
+
{ label: 'Réduction des Clics', value: '100% Phase Alignée' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'title',
|
|
73
|
+
level: 2,
|
|
74
|
+
text: 'Stratégie de Passage par Zéro',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'tip',
|
|
78
|
+
title: 'Réduction des Clics Acoustiques',
|
|
79
|
+
html: 'Alignez toujours les marqueurs de début et de fin de boucle sur les passages par zéro positifs. Cela évite les bruits de clic et le déplacement brusque de la membrane du haut-parleur.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
level: 2,
|
|
84
|
+
text: 'Tableau Comparatif de Compatibilité',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'comparative',
|
|
88
|
+
columns: 2,
|
|
89
|
+
items: [
|
|
90
|
+
{
|
|
91
|
+
title: 'Marqueur de Bloc RIFF smpl',
|
|
92
|
+
description: 'Métadonnées binaires intégrées dans l en-tête WAV',
|
|
93
|
+
points: [
|
|
94
|
+
'Prise en charge native par Godot, FMOD, Wwise et GameMaker',
|
|
95
|
+
'Précision exacte à l échantillon près sans dérive',
|
|
96
|
+
'Incorpore les marqueurs directement dans le fichier WAV',
|
|
97
|
+
'Élimine les clics acoustiques avec l ajustement par zéro',
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
title: 'Découpage Audio Manuel',
|
|
102
|
+
description: 'Séparation de l intro et de la boucle en fichiers distincts',
|
|
103
|
+
points: [
|
|
104
|
+
'Utilisé par les lecteurs multimédias basiques',
|
|
105
|
+
'Sujet aux micro-pauses et imprécisions temporelles',
|
|
106
|
+
'Nécessite la gestion de plusieurs fichiers dans le projet',
|
|
107
|
+
'Risque élevé de clics lors des transitions',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
level: 2,
|
|
115
|
+
text: 'Tableau de Référence des Taux d Échantillonnage',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Taux d Échantillonnage', 'Échantillons par Seconde', 'Domaine d Utilisation Recommandé', 'Résolution Temporelle'],
|
|
120
|
+
rows: [
|
|
121
|
+
['44,100 Hz', '44,100', 'Qualité CD Standard pour Musique de Jeu', '0.0226 ms par échantillon'],
|
|
122
|
+
['48,000 Hz', '48,000', 'Jeux Modernes sur PC et Consoles', '0.0208 ms par échantillon'],
|
|
123
|
+
['96,000 Hz', '96,000', 'Fichiers Audio Master Haute Définition', '0.0104 ms par échantillon'],
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
level: 2,
|
|
129
|
+
text: 'Injection Automatique de Métadonnées en Octets',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Lors de l export des pistes depuis cet outil, les structures de métadonnées sont injectées directement dans l en-tête RIFF du fichier WAV. L outil crée un bloc d échantillon standard et un bloc LIST INFO.',
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
faqTitle: 'Foire Aux Questions',
|
|
137
|
+
faq: [
|
|
138
|
+
{
|
|
139
|
+
question: 'Que sont les balises de métadonnées LOOPSTART et LOOPEND?',
|
|
140
|
+
answer: 'LOOPSTART et LOOPEND sont des champs de métadonnées mesurés en nombre absolu d échantillons.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
question: 'Pourquoi des clics audibles se produisent-ils aux points de boucle?',
|
|
144
|
+
answer: 'Des clics se produisent lorsque la forme d onde à la fin ne correspond pas à l amplitude ou à la phase du début.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
question: 'Mon fichier audio d origine est-il téléversé?',
|
|
148
|
+
answer: 'Non. Tout le traitement et le décodage s effectuent localement dans la mémoire de votre navigateur.',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
howTo: [
|
|
152
|
+
{
|
|
153
|
+
name: 'Charger la Piste Audio',
|
|
154
|
+
text: 'Glissez-déposez votre fichier de musique ou sélectionnez un fichier WAV, OGG, MP3 ou FLAC.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'Positionner les Marqueurs',
|
|
158
|
+
text: 'Ajustez le début et la fin de la boucle via la vue de forme d onde ou les champs numériques.',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'Ajuster aux Passages par Zéro',
|
|
162
|
+
text: 'Cliquez sur le bouton d ajustement au passage par zéro.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'Tester et Exporter',
|
|
166
|
+
text: 'Écoutez la boucle fluide puis exportez le fichier WAV avec métadonnées.',
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
schemas: [
|
|
170
|
+
{
|
|
171
|
+
'@context': 'https://schema.org',
|
|
172
|
+
'@type': 'SoftwareApplication',
|
|
173
|
+
name: 'Détecteur de Points de Boucle Audio pour Jeux',
|
|
174
|
+
applicationCategory: 'MultimediaApplication',
|
|
175
|
+
operatingSystem: 'Any',
|
|
176
|
+
offers: {
|
|
177
|
+
'@type': 'Offer',
|
|
178
|
+
price: '0',
|
|
179
|
+
priceCurrency: 'EUR',
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
'@context': 'https://schema.org',
|
|
184
|
+
'@type': 'FAQPage',
|
|
185
|
+
mainEntity: [
|
|
186
|
+
{
|
|
187
|
+
'@type': 'Question',
|
|
188
|
+
name: 'Que sont les balises de métadonnées LOOPSTART et LOOPEND?',
|
|
189
|
+
acceptedAnswer: {
|
|
190
|
+
'@type': 'Answer',
|
|
191
|
+
text: 'LOOPSTART et LOOPEND sont des champs de métadonnées mesurés en nombre d échantillons.',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
'@context': 'https://schema.org',
|
|
198
|
+
'@type': 'HowTo',
|
|
199
|
+
name: 'Comment trouver et injecter des points de boucle audio',
|
|
200
|
+
step: [
|
|
201
|
+
{
|
|
202
|
+
'@type': 'HowToStep',
|
|
203
|
+
name: 'Charger la Piste Audio',
|
|
204
|
+
text: 'Glissez-déposez votre fichier de musique ou sélectionnez un fichier audio.',
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
bibliographyTitle: 'Références et Lectures Complémentaires',
|
|
210
|
+
bibliography: bibliographyEntries,
|
|
211
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { AudioLoopPointFinderUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
|
|
6
|
+
slug: 'pencari-titik-loop-audio-game',
|
|
7
|
+
title: 'Pencari Titik Loop Audio Game dan Penginjeksian Metadata',
|
|
8
|
+
description: 'Temukan titik loop audio yang akurat, sejajarkan ke persilangan nol untuk menghilangkan bunyi klik, dan ekspor WAV dengan metadata LOOPSTART dan LOOPEND.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Pencari Titik Loop Audio Game',
|
|
11
|
+
subtitle: 'Penganalisis bentuk gelombang interaktif, detektor persilangan nol, dan pengedit metadata WAV',
|
|
12
|
+
dropzoneTitle: 'Tarik file audio ke sini atau klik untuk menjelajah',
|
|
13
|
+
dropzoneSubtitle: 'Mendukung trek audio WAV, OGG, MP3, dan FLAC',
|
|
14
|
+
dropzoneButton: 'Pilih File Audio',
|
|
15
|
+
audioInfoTitle: 'Properti Trek Audio',
|
|
16
|
+
durationLabel: 'Durasi',
|
|
17
|
+
sampleRateLabel: 'Tingkat Sampel',
|
|
18
|
+
channelsLabel: 'Saluran Audio',
|
|
19
|
+
totalSamplesLabel: 'Total Jumlah Sampel',
|
|
20
|
+
loopControlsTitle: 'Konfigurasi Wilayah Loop',
|
|
21
|
+
loopStartLabel: 'Penanda Awal Loop',
|
|
22
|
+
loopEndLabel: 'Penanda Akhir Loop',
|
|
23
|
+
loopDurationLabel: 'Durasi Loop',
|
|
24
|
+
zeroCrossingLabel: 'Penyelarasan Persilangan Nol',
|
|
25
|
+
snapZeroCrossingButton: 'Sejajarkan ke Persilangan Nol Terdekat',
|
|
26
|
+
playLoopButton: 'Pratinjau Loop Mulus',
|
|
27
|
+
pauseLoopButton: 'Jeda Pemutaran',
|
|
28
|
+
stopLoopButton: 'Hentikan Pemutaran',
|
|
29
|
+
exportWavButton: 'Ekspor WAV dengan Metadata',
|
|
30
|
+
sampleUnitLabel: 'Sampel',
|
|
31
|
+
secondUnitLabel: 'Detik',
|
|
32
|
+
zoomLabel: 'Pembesaran Gelombang',
|
|
33
|
+
zoomInButton: 'Perbesar',
|
|
34
|
+
zoomOutButton: 'Perkecil',
|
|
35
|
+
resetZoomButton: 'Atur Ulang Tampilan',
|
|
36
|
+
noFileSelected: 'Belum ada file audio yang dimuat',
|
|
37
|
+
invalidAudioFile: 'Gagal mendekode file audio',
|
|
38
|
+
presetsTitle: 'Preset Cepat',
|
|
39
|
+
presetFullTrack: 'Loop Seluruh Trek',
|
|
40
|
+
presetIntroCut: 'Lewati 10% Intro',
|
|
41
|
+
presetMiddleLoop: 'Bagian Tengah 50%',
|
|
42
|
+
statusLooping: 'Pemutaran Loop Aktif',
|
|
43
|
+
statusPaused: 'Pemutaran Dijeda',
|
|
44
|
+
statusReady: 'Audio Dimuat dan Siap',
|
|
45
|
+
statusLoaded: 'Trek audio berhasil dimuat',
|
|
46
|
+
statusDecodeError: 'Kesalahan mendekode file audio',
|
|
47
|
+
statusSnapped: 'Penanda disejajarkan ke persilangan nol',
|
|
48
|
+
statusStopped: 'Pemutaran dihentikan',
|
|
49
|
+
statusExported: 'File WAV diekspor dengan tag loop',
|
|
50
|
+
},
|
|
51
|
+
seo: [
|
|
52
|
+
{
|
|
53
|
+
type: 'title',
|
|
54
|
+
level: 2,
|
|
55
|
+
text: 'Loop Audio Game Mulus dan Penyelarasan Sampel',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'paragraph',
|
|
59
|
+
html: 'Mencapai pemutaran musik latar belakang yang lancar dalam game memerlukan penyelarasan sampel yang tepat di batas loop. Engine game modern seperti Unity, Godot, Unreal Engine, FMOD, dan Wwise menggunakan metadata LOOPSTART dan LOOPEND.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'stats',
|
|
63
|
+
columns: 4,
|
|
64
|
+
items: [
|
|
65
|
+
{ label: 'Presisi Sampel', value: '44.1 kHz / 48 kHz' },
|
|
66
|
+
{ label: 'Ambang Persilangan Nol', value: 'Amplitudo 0.00' },
|
|
67
|
+
{ label: 'Standar Metadata', value: 'RIFF smpl dan INFO' },
|
|
68
|
+
{ label: 'Pengurangan Klik', value: '100% Fase Sejajar' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'title',
|
|
73
|
+
level: 2,
|
|
74
|
+
text: 'Strategi Persilangan Nol',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'tip',
|
|
78
|
+
title: 'Menghilangkan Bunyi Klik Audio',
|
|
79
|
+
html: 'Selalu sejajarkan penanda awal dan akhir loop pada titik persilangan nol positif. Ini mencegah lonjakan amplitudo mendadak dan bunyi klik.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
level: 2,
|
|
84
|
+
text: 'Tabel Perbandingan Kompatibilitas Metadata',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'comparative',
|
|
88
|
+
columns: 2,
|
|
89
|
+
items: [
|
|
90
|
+
{
|
|
91
|
+
title: 'Penanda Chunk RIFF smpl',
|
|
92
|
+
description: 'Metadata biner standar yang tertanam dalam header WAV',
|
|
93
|
+
points: [
|
|
94
|
+
'Didukung secara native oleh Godot, FMOD, Wwise, dan GameMaker',
|
|
95
|
+
'Memberikan presisi sampel yang akurat tanpa pergeseran waktu',
|
|
96
|
+
'Menyimpan penanda loop langsung di dalam file WAV yang sama',
|
|
97
|
+
'Menghilangkan bunyi klik saat dikombinasikan dengan persilangan nol',
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
title: 'Pemotongan Audio Manual',
|
|
102
|
+
description: 'Memisah intro dan loop menjadi file terpisah',
|
|
103
|
+
points: [
|
|
104
|
+
'Digunakan oleh pemutar media sederhana tanpa pembaca metadata',
|
|
105
|
+
'Rentan terhadap jeda kecil dalam milidetik',
|
|
106
|
+
'Memerlukan pengelolaan banyak file dalam proyek',
|
|
107
|
+
'Risiko tinggi bunyi klik pada transisi',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
level: 2,
|
|
115
|
+
text: 'Tabel Referensi Tingkat Sampel',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Tingkat Sampel', 'Sampel per Detik', 'Penggunaan yang Direkomendasikan', 'Resolusi Waktu'],
|
|
120
|
+
rows: [
|
|
121
|
+
['44,100 Hz', '44,100', 'Musik Game Kualitas CD Standar', '0.0226 ms per sampel'],
|
|
122
|
+
['48,000 Hz', '48,000', 'Game PC dan Konsol Modern', '0.0208 ms per sampel'],
|
|
123
|
+
['96,000 Hz', '96,000', 'Audio Master Resolusi Tinggi', '0.0104 ms per sampel'],
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
level: 2,
|
|
129
|
+
text: 'Penginjeksian Metadata Otomatis',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Saat mengekspor trek audio dari alat ini, struktur metadata baru disuntikkan langsung ke dalam header RIFF dari file WAV.',
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
faqTitle: 'Pertanyaan yang Sering Diajukan',
|
|
137
|
+
faq: [
|
|
138
|
+
{
|
|
139
|
+
question: 'Apa itu tag metadata LOOPSTART dan LOOPEND?',
|
|
140
|
+
answer: 'LOOPSTART dan LOOPEND adalah bidang metadata yang diukur dalam jumlah sampel absolut.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
question: 'Mengapa terjadi bunyi klik pada titik loop?',
|
|
144
|
+
answer: 'Klik terjadi saat bentuk gelombang di akhir tidak cocok dengan amplitudo atau fase di awal.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
question: 'Apakah file audio asli saya diunggah ke server?',
|
|
148
|
+
answer: 'Tidak. Semua pemrosesan dilakukan secara lokal di memori peramban Anda.',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
howTo: [
|
|
152
|
+
{
|
|
153
|
+
name: 'Muat Trek Audio',
|
|
154
|
+
text: 'Tarik dan lepas file musik Anda atau pilih file WAV, OGG, MP3, atau FLAC.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'Atur Penanda Loop',
|
|
158
|
+
text: 'Sesuaikan awal dan akhir loop melalui tampilan gelombang.',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'Sejajarkan ke Persilangan Nol',
|
|
162
|
+
text: 'Klik tombol penyelarasan ke persilangan nol.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'Pratinjau dan Ekspor',
|
|
166
|
+
text: 'Dengarkan pemutaran loop yang mulus lalu ekspor file WAV.',
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
schemas: [
|
|
170
|
+
{
|
|
171
|
+
'@context': 'https://schema.org',
|
|
172
|
+
'@type': 'SoftwareApplication',
|
|
173
|
+
name: 'Pencari Titik Loop Audio Game',
|
|
174
|
+
applicationCategory: 'MultimediaApplication',
|
|
175
|
+
operatingSystem: 'Any',
|
|
176
|
+
offers: {
|
|
177
|
+
'@type': 'Offer',
|
|
178
|
+
price: '0',
|
|
179
|
+
priceCurrency: 'IDR',
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
'@context': 'https://schema.org',
|
|
184
|
+
'@type': 'FAQPage',
|
|
185
|
+
mainEntity: [
|
|
186
|
+
{
|
|
187
|
+
'@type': 'Question',
|
|
188
|
+
name: 'Apa itu tag metadata LOOPSTART dan LOOPEND?',
|
|
189
|
+
acceptedAnswer: {
|
|
190
|
+
'@type': 'Answer',
|
|
191
|
+
text: 'LOOPSTART dan LOOPEND adalah bidang metadata yang diukur dalam jumlah sampel.',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
'@context': 'https://schema.org',
|
|
198
|
+
'@type': 'HowTo',
|
|
199
|
+
name: 'Cara menemukan dan menginjeksikan titik loop audio',
|
|
200
|
+
step: [
|
|
201
|
+
{
|
|
202
|
+
'@type': 'HowToStep',
|
|
203
|
+
name: 'Muat Trek Audio',
|
|
204
|
+
text: 'Tarik dan lepas file musik Anda atau pilih file audio.',
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
bibliographyTitle: 'Referensi dan Bacaan Lebih Lanjut',
|
|
210
|
+
bibliography: bibliographyEntries,
|
|
211
|
+
};
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import type { ToolLocaleContent } from '../../../types';
|
|
2
|
+
import type { AudioLoopPointFinderUI } from '../ui';
|
|
3
|
+
import { bibliographyEntries } from '../bibliography';
|
|
4
|
+
|
|
5
|
+
export const content: ToolLocaleContent<AudioLoopPointFinderUI> = {
|
|
6
|
+
slug: 'trova-punti-loop-audio-giochi',
|
|
7
|
+
title: 'Trova Punti di Loop Audio per Giochi e Iniettore di Metadati',
|
|
8
|
+
description: 'Individua punti di loop audio precisi, aggancia ai passaggi per lo zero ed esporta file WAV con metadati LOOPSTART e LOOPEND per i motori di gioco.',
|
|
9
|
+
ui: {
|
|
10
|
+
title: 'Trova Punti di Loop Audio per Giochi',
|
|
11
|
+
subtitle: 'Analizzatore di forma d onda interattivo, rilevatore di passaggio per lo zero ed etichettatore WAV',
|
|
12
|
+
dropzoneTitle: 'Trascina qui il file audio o clicca per cercare',
|
|
13
|
+
dropzoneSubtitle: 'Supporta tracce audio WAV, OGG, MP3 e FLAC',
|
|
14
|
+
dropzoneButton: 'Seleziona File Audio',
|
|
15
|
+
audioInfoTitle: 'Proprietà Traccia Audio',
|
|
16
|
+
durationLabel: 'Durata',
|
|
17
|
+
sampleRateLabel: 'Frequenza di Campionamento',
|
|
18
|
+
channelsLabel: 'Canali Audio',
|
|
19
|
+
totalSamplesLabel: 'Conteggio Totale Campioni',
|
|
20
|
+
loopControlsTitle: 'Configurazione Regione di Loop',
|
|
21
|
+
loopStartLabel: 'Marcatore Inizio Loop',
|
|
22
|
+
loopEndLabel: 'Marcatore Fine Loop',
|
|
23
|
+
loopDurationLabel: 'Durata del Loop',
|
|
24
|
+
zeroCrossingLabel: 'Aggancio Passaggio per lo Zero',
|
|
25
|
+
snapZeroCrossingButton: 'Aggancia al Passaggio per lo Zero Più Vicino',
|
|
26
|
+
playLoopButton: 'Anteprima Loop Senza Interruzioni',
|
|
27
|
+
pauseLoopButton: 'Pausa Riproduzione',
|
|
28
|
+
stopLoopButton: 'Interrompi Riproduzione',
|
|
29
|
+
exportWavButton: 'Esporta WAV con Metadati',
|
|
30
|
+
sampleUnitLabel: 'Campioni',
|
|
31
|
+
secondUnitLabel: 'Secondi',
|
|
32
|
+
zoomLabel: 'Zoom Forma d Onda',
|
|
33
|
+
zoomInButton: 'Ingrandisci',
|
|
34
|
+
zoomOutButton: 'Riduci',
|
|
35
|
+
resetZoomButton: 'Ripristina Vista',
|
|
36
|
+
noFileSelected: 'Nessun file audio caricato',
|
|
37
|
+
invalidAudioFile: 'Impossibile decodificare il file audio',
|
|
38
|
+
presetsTitle: 'Preimpostazioni Rapide',
|
|
39
|
+
presetFullTrack: 'Loop Traccia Intera',
|
|
40
|
+
presetIntroCut: 'Salta 10% Intro',
|
|
41
|
+
presetMiddleLoop: 'Sezione Centrale 50%',
|
|
42
|
+
statusLooping: 'Riproduzione in Loop Attiva',
|
|
43
|
+
statusPaused: 'Riproduzione in Pausa',
|
|
44
|
+
statusReady: 'Audio Caricato e Pronto',
|
|
45
|
+
statusLoaded: 'Traccia audio caricata con successo',
|
|
46
|
+
statusDecodeError: 'Errore durante la decodifica del file audio',
|
|
47
|
+
statusSnapped: 'Marcatori agganciati ai punti di passaggio per lo zero',
|
|
48
|
+
statusStopped: 'Riproduzione interrotta',
|
|
49
|
+
statusExported: 'File WAV esportato con tag di loop integrati',
|
|
50
|
+
},
|
|
51
|
+
seo: [
|
|
52
|
+
{
|
|
53
|
+
type: 'title',
|
|
54
|
+
level: 2,
|
|
55
|
+
text: 'Loop Audio Fluido e Allineamento dei Campioni nei Videogiochi',
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
type: 'paragraph',
|
|
59
|
+
html: 'Ottenere una riproduzione continua della musica di sottofondo nei videogiochi richiede un allineamento esatto dei campioni ai limiti del loop. Motori di gioco moderni come Unity, Godot, Unreal Engine, FMOD e Wwise utilizzano metadati di loop integrati come LOOPSTART e LOOPEND.',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
type: 'stats',
|
|
63
|
+
columns: 4,
|
|
64
|
+
items: [
|
|
65
|
+
{ label: 'Precisione Campionamento', value: '44.1 kHz / 48 kHz' },
|
|
66
|
+
{ label: 'Soglia Passaggio per lo Zero', value: 'Ampiezza 0.00' },
|
|
67
|
+
{ label: 'Standard Metadati', value: 'RIFF smpl e INFO' },
|
|
68
|
+
{ label: 'Riduzione Clic', value: '100% Fase Allineata' },
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'title',
|
|
73
|
+
level: 2,
|
|
74
|
+
text: 'Strategia di Passaggio per lo Zero',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
type: 'tip',
|
|
78
|
+
title: 'Eliminazione dei Rumori di Clic',
|
|
79
|
+
html: 'Allinea sempre i marcatori di inizio e fine loop sui punti di passaggio per lo zero a pendenza positiva per evitare sbalzi di ampiezza.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
type: 'title',
|
|
83
|
+
level: 2,
|
|
84
|
+
text: 'Tabella Comparativa di Compatibilità',
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
type: 'comparative',
|
|
88
|
+
columns: 2,
|
|
89
|
+
items: [
|
|
90
|
+
{
|
|
91
|
+
title: 'Marcatore RIFF smpl Chunk',
|
|
92
|
+
description: 'Metadati binari standard integrati nell intestazione WAV',
|
|
93
|
+
points: [
|
|
94
|
+
'Supportato nativamente da Godot, FMOD, Wwise e GameMaker',
|
|
95
|
+
'Fornisce precisione esatta al singolo campione',
|
|
96
|
+
'Raggruppa i marcatori di loop direttamente nel file WAV',
|
|
97
|
+
'Elimina i clic acustici con l aggancio allo zero',
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
title: 'Taglio Manuale dell Audio',
|
|
102
|
+
description: 'Separazione di intro e loop in file distinti',
|
|
103
|
+
points: [
|
|
104
|
+
'Utilizzato da lettori multimediali di base',
|
|
105
|
+
'Soggetto a imperfezioni temporali in millisecondi',
|
|
106
|
+
'Richiede la gestione di file multipli nel progetto',
|
|
107
|
+
'Elevato rischio di clic nei punti di transizione',
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
],
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
type: 'title',
|
|
114
|
+
level: 2,
|
|
115
|
+
text: 'Riferimento Frequenze di Campionamento',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
type: 'table',
|
|
119
|
+
headers: ['Frequenza di Campionamento', 'Campioni al Secondo', 'Uso Consigliato', 'Risoluzione Temporale'],
|
|
120
|
+
rows: [
|
|
121
|
+
['44,100 Hz', '44,100', 'Colonna Sonora Standard da CD', '0.0226 ms per campione'],
|
|
122
|
+
['48,000 Hz', '48,000', 'Giochi Moderni per PC e Console', '0.0208 ms per campione'],
|
|
123
|
+
['96,000 Hz', '96,000', 'Audio Master ad Alta Definizione', '0.0104 ms per campione'],
|
|
124
|
+
],
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
type: 'title',
|
|
128
|
+
level: 2,
|
|
129
|
+
text: 'Iniezione Automatica di Metadati in Byte',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
type: 'paragraph',
|
|
133
|
+
html: 'Durante l esportazione delle tracce, le nuove strutture di metadati vengono iniettate direttamente nell intestazione RIFF del file binario WAV.',
|
|
134
|
+
},
|
|
135
|
+
],
|
|
136
|
+
faqTitle: 'Domande Frequenti',
|
|
137
|
+
faq: [
|
|
138
|
+
{
|
|
139
|
+
question: 'Cosa sono i tag di metadati LOOPSTART e LOOPEND?',
|
|
140
|
+
answer: 'LOOPSTART e LOOPEND sono campi di metadati misurati in numero assoluto di campioni.',
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
question: 'Perché si verificano clic udibili nei punti di loop?',
|
|
144
|
+
answer: 'I clic si verificano quando la forma d onda alla fine non corrisponde all ampiezza o alla fase dell inizio.',
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
question: 'Il mio file audio originale viene caricato su un server?',
|
|
148
|
+
answer: 'No. Tutto il processo avviene localmente nella memoria del tuo browser.',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
howTo: [
|
|
152
|
+
{
|
|
153
|
+
name: 'Carica Traccia Audio',
|
|
154
|
+
text: 'Trascina il tuo file o seleziona un file WAV, OGG, MP3 o FLAC.',
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: 'Posiziona i Marcatori',
|
|
158
|
+
text: 'Imposta l inizio e la fine del loop con la forma d onda.',
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'Aggancia allo Zero',
|
|
162
|
+
text: 'Fai clic sul pulsante per agganciare al passaggio per lo zero.',
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
name: 'Anteprima ed Esporta',
|
|
166
|
+
text: 'Ascolta il loop senza interruzioni ed esporta il file WAV.',
|
|
167
|
+
},
|
|
168
|
+
],
|
|
169
|
+
schemas: [
|
|
170
|
+
{
|
|
171
|
+
'@context': 'https://schema.org',
|
|
172
|
+
'@type': 'SoftwareApplication',
|
|
173
|
+
name: 'Trova Punti di Loop Audio per Giochi',
|
|
174
|
+
applicationCategory: 'MultimediaApplication',
|
|
175
|
+
operatingSystem: 'Any',
|
|
176
|
+
offers: {
|
|
177
|
+
'@type': 'Offer',
|
|
178
|
+
price: '0',
|
|
179
|
+
priceCurrency: 'EUR',
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
'@context': 'https://schema.org',
|
|
184
|
+
'@type': 'FAQPage',
|
|
185
|
+
mainEntity: [
|
|
186
|
+
{
|
|
187
|
+
'@type': 'Question',
|
|
188
|
+
name: 'Cosa sono i tag di metadati LOOPSTART e LOOPEND?',
|
|
189
|
+
acceptedAnswer: {
|
|
190
|
+
'@type': 'Answer',
|
|
191
|
+
text: 'LOOPSTART e LOOPEND sono campi di metadati misurati in numero di campioni.',
|
|
192
|
+
},
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
},
|
|
196
|
+
{
|
|
197
|
+
'@context': 'https://schema.org',
|
|
198
|
+
'@type': 'HowTo',
|
|
199
|
+
name: 'Come trovare e iniettare punti di loop audio',
|
|
200
|
+
step: [
|
|
201
|
+
{
|
|
202
|
+
'@type': 'HowToStep',
|
|
203
|
+
name: 'Carica Traccia Audio',
|
|
204
|
+
text: 'Trascina il tuo file o seleziona un file audio.',
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
],
|
|
209
|
+
bibliographyTitle: 'Riferimenti e Letture Approfondite',
|
|
210
|
+
bibliography: bibliographyEntries,
|
|
211
|
+
};
|