@jjlmoya/utils-hardware 1.3.0 → 1.5.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.
Files changed (98) hide show
  1. package/package.json +2 -1
  2. package/src/tests/faq_count.test.ts +1 -1
  3. package/src/tests/i18n_coverage.test.ts +36 -0
  4. package/src/tests/locale_completeness.test.ts +1 -1
  5. package/src/tests/slug_uniqueness.test.ts +81 -0
  6. package/src/tests/title_quality.test.ts +1 -1
  7. package/src/tool/batteryHealthEstimator/i18n/de.ts +158 -0
  8. package/src/tool/batteryHealthEstimator/i18n/id.ts +158 -0
  9. package/src/tool/batteryHealthEstimator/i18n/it.ts +158 -0
  10. package/src/tool/batteryHealthEstimator/i18n/ja.ts +158 -0
  11. package/src/tool/batteryHealthEstimator/i18n/ko.ts +158 -0
  12. package/src/tool/batteryHealthEstimator/i18n/nl.ts +158 -0
  13. package/src/tool/batteryHealthEstimator/i18n/pl.ts +158 -0
  14. package/src/tool/batteryHealthEstimator/i18n/pt.ts +158 -0
  15. package/src/tool/batteryHealthEstimator/i18n/ru.ts +158 -0
  16. package/src/tool/batteryHealthEstimator/i18n/sv.ts +158 -0
  17. package/src/tool/batteryHealthEstimator/i18n/tr.ts +158 -0
  18. package/src/tool/batteryHealthEstimator/i18n/zh.ts +158 -0
  19. package/src/tool/batteryHealthEstimator/index.ts +15 -7
  20. package/src/tool/deadPixelTest/i18n/de.ts +218 -0
  21. package/src/tool/deadPixelTest/i18n/id.ts +218 -0
  22. package/src/tool/deadPixelTest/i18n/it.ts +218 -0
  23. package/src/tool/deadPixelTest/i18n/ja.ts +218 -0
  24. package/src/tool/deadPixelTest/i18n/ko.ts +218 -0
  25. package/src/tool/deadPixelTest/i18n/nl.ts +218 -0
  26. package/src/tool/deadPixelTest/i18n/pl.ts +218 -0
  27. package/src/tool/deadPixelTest/i18n/pt.ts +218 -0
  28. package/src/tool/deadPixelTest/i18n/ru.ts +218 -0
  29. package/src/tool/deadPixelTest/i18n/sv.ts +218 -0
  30. package/src/tool/deadPixelTest/i18n/tr.ts +218 -0
  31. package/src/tool/deadPixelTest/i18n/zh.ts +217 -0
  32. package/src/tool/deadPixelTest/index.ts +15 -7
  33. package/src/tool/gamepadTest/i18n/de.ts +186 -0
  34. package/src/tool/gamepadTest/i18n/id.ts +186 -0
  35. package/src/tool/gamepadTest/i18n/it.ts +186 -0
  36. package/src/tool/gamepadTest/i18n/ja.ts +186 -0
  37. package/src/tool/gamepadTest/i18n/ko.ts +186 -0
  38. package/src/tool/gamepadTest/i18n/nl.ts +186 -0
  39. package/src/tool/gamepadTest/i18n/pl.ts +186 -0
  40. package/src/tool/gamepadTest/i18n/pt.ts +186 -0
  41. package/src/tool/gamepadTest/i18n/ru.ts +186 -0
  42. package/src/tool/gamepadTest/i18n/sv.ts +186 -0
  43. package/src/tool/gamepadTest/i18n/tr.ts +186 -0
  44. package/src/tool/gamepadTest/i18n/zh.ts +186 -0
  45. package/src/tool/gamepadTest/index.ts +15 -7
  46. package/src/tool/gamepadVibrationTester/i18n/de.ts +155 -0
  47. package/src/tool/gamepadVibrationTester/i18n/id.ts +155 -0
  48. package/src/tool/gamepadVibrationTester/i18n/it.ts +155 -0
  49. package/src/tool/gamepadVibrationTester/i18n/ja.ts +155 -0
  50. package/src/tool/gamepadVibrationTester/i18n/ko.ts +155 -0
  51. package/src/tool/gamepadVibrationTester/i18n/nl.ts +155 -0
  52. package/src/tool/gamepadVibrationTester/i18n/pl.ts +155 -0
  53. package/src/tool/gamepadVibrationTester/i18n/pt.ts +155 -0
  54. package/src/tool/gamepadVibrationTester/i18n/ru.ts +155 -0
  55. package/src/tool/gamepadVibrationTester/i18n/sv.ts +155 -0
  56. package/src/tool/gamepadVibrationTester/i18n/tr.ts +155 -0
  57. package/src/tool/gamepadVibrationTester/i18n/zh.ts +155 -0
  58. package/src/tool/gamepadVibrationTester/index.ts +15 -7
  59. package/src/tool/keyboardTest/i18n/de.ts +146 -0
  60. package/src/tool/keyboardTest/i18n/id.ts +146 -0
  61. package/src/tool/keyboardTest/i18n/it.ts +146 -0
  62. package/src/tool/keyboardTest/i18n/ja.ts +146 -0
  63. package/src/tool/keyboardTest/i18n/ko.ts +146 -0
  64. package/src/tool/keyboardTest/i18n/nl.ts +146 -0
  65. package/src/tool/keyboardTest/i18n/pl.ts +146 -0
  66. package/src/tool/keyboardTest/i18n/pt.ts +146 -0
  67. package/src/tool/keyboardTest/i18n/ru.ts +146 -0
  68. package/src/tool/keyboardTest/i18n/sv.ts +146 -0
  69. package/src/tool/keyboardTest/i18n/tr.ts +146 -0
  70. package/src/tool/keyboardTest/i18n/zh.ts +146 -0
  71. package/src/tool/keyboardTest/index.ts +15 -7
  72. package/src/tool/mousePollingTest/i18n/de.ts +135 -0
  73. package/src/tool/mousePollingTest/i18n/id.ts +135 -0
  74. package/src/tool/mousePollingTest/i18n/it.ts +135 -0
  75. package/src/tool/mousePollingTest/i18n/ja.ts +135 -0
  76. package/src/tool/mousePollingTest/i18n/ko.ts +135 -0
  77. package/src/tool/mousePollingTest/i18n/nl.ts +135 -0
  78. package/src/tool/mousePollingTest/i18n/pl.ts +135 -0
  79. package/src/tool/mousePollingTest/i18n/pt.ts +135 -0
  80. package/src/tool/mousePollingTest/i18n/ru.ts +135 -0
  81. package/src/tool/mousePollingTest/i18n/sv.ts +135 -0
  82. package/src/tool/mousePollingTest/i18n/tr.ts +135 -0
  83. package/src/tool/mousePollingTest/i18n/zh.ts +135 -0
  84. package/src/tool/mousePollingTest/index.ts +15 -7
  85. package/src/tool/toneGenerator/i18n/de.ts +146 -0
  86. package/src/tool/toneGenerator/i18n/id.ts +146 -0
  87. package/src/tool/toneGenerator/i18n/it.ts +146 -0
  88. package/src/tool/toneGenerator/i18n/ja.ts +146 -0
  89. package/src/tool/toneGenerator/i18n/ko.ts +146 -0
  90. package/src/tool/toneGenerator/i18n/nl.ts +146 -0
  91. package/src/tool/toneGenerator/i18n/pl.ts +146 -0
  92. package/src/tool/toneGenerator/i18n/pt.ts +146 -0
  93. package/src/tool/toneGenerator/i18n/ru.ts +146 -0
  94. package/src/tool/toneGenerator/i18n/sv.ts +146 -0
  95. package/src/tool/toneGenerator/i18n/tr.ts +146 -0
  96. package/src/tool/toneGenerator/i18n/zh.ts +146 -0
  97. package/src/tool/toneGenerator/index.ts +15 -7
  98. package/src/types.ts +1 -1
@@ -0,0 +1,135 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { TestRatonUI } from '../ui';
4
+
5
+ const slug = 'mouse-polling-rate-test';
6
+ const title = '在线鼠标回报率测试';
7
+ const description =
8
+ '检查鼠标的真实 Hz。使用我们的专业工具验证您的游戏鼠标是否在 1000Hz 或更高频率下工作。';
9
+
10
+ const faqData = [
11
+ {
12
+ question: '什么是鼠标回报率 (Polling Rate)?',
13
+ answer:
14
+ '它是鼠标向电脑报告其位置的频率,以 Hz 为单位衡量。1000Hz 的回报率意味着鼠标每 1 毫秒发送一次数据,从而提供更平滑的移动。',
15
+ },
16
+ {
17
+ question: '为什么我的测试不能持续达到 1000Hz?',
18
+ answer:
19
+ '浏览器只有在鼠标移动时才能测量回报率。如果您移动缓慢或 CPU 非常繁忙,测量值可能会波动。请快速转圈移动鼠标以获得真实的最高峰值。',
20
+ },
21
+ {
22
+ question: '回报率是否越高越好?',
23
+ answer:
24
+ '对于游戏(1000Hz 或更高)来说,通常是的,因为它可以减少延迟。然而,极高的速率(4000Hz 或 8000Hz)会消耗大量 CPU 资源,并非所有游戏都针对这些速率进行了优化。',
25
+ },
26
+ {
27
+ question: '显示器刷新率如何影响鼠标?',
28
+ answer:
29
+ '如果您使用 144Hz 或 240Hz 显示器,较低的回报率(125Hz)会使指针看起来有顿挫感。对于高刷新率显示器,至少使用 500Hz 或 1000Hz 是至关重要的。',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: '准备测试区域',
36
+ text: '将光标置于工具的采集区域内。',
37
+ },
38
+ {
39
+ name: '快速移动鼠标',
40
+ text: '进行快速、大范围的圆周运动。该工具将计算硬件发送的每个 mousemove 事件之间的时间间隔。',
41
+ },
42
+ {
43
+ name: '观察稳定性图表',
44
+ text: '检查 Hz 曲线是否平稳或是否存在突然下降,这可能表明无线鼠标受到干扰或 CPU 存在问题。',
45
+ },
46
+ {
47
+ name: '分析响应时间',
48
+ text: '检查以毫秒为单位的平均延迟(Delay)。一只好的游戏鼠标平均延迟应保持在 1ms 左右。',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'zh',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<TestRatonUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: '常见问题',
91
+ faq: faqData,
92
+ bibliographyTitle: '参考资料',
93
+ bibliography: [
94
+ {
95
+ name: 'Gamepad Polling Rate — Logitech',
96
+ url: 'https://www.logitechg.com/en-us/innovation/delta-zero.html',
97
+ },
98
+ {
99
+ name: 'USB HID Polling Rate — USB Implementers Forum',
100
+ url: 'https://www.usb.org/hid',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: '鼠标回报率权威指南', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: '当您在鼠标垫上物理移动鼠标时,这种模拟运动必须转换为电脑理解的数字信号。<strong>回报率 (Polling Rate)</strong> 是鼠标向电脑“报告”其位置的频率。它以赫兹 (Hz) 为单位。',
110
+ },
111
+ { type: 'title', text: '回报率等级及其用途', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: '<strong>125 Hz</strong> — 鼠标每 8 毫秒报告一次。适用于办公,但在 144Hz 显示器上会感到卡顿。 <strong>1000 Hz</strong> — 游戏黄金标准:每 1 毫秒报告一次。平滑移动,无感知延迟。 <strong>8000 Hz</strong> — 尖端技术(Razer, Logitech)。每 0.125 毫秒报告一次,但需要强劲的 CPU。',
115
+ },
116
+ { type: 'title', text: '为什么我的 Hz 值会波动?', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: '完全正常。大多数现代鼠标都有动态回报率以节省电量。如果您移动鼠标缓慢,它发送的报告就会减少,因为新数据较少。只有快速、持续的移动才能使传感器达到其真实的最高峰值。',
120
+ },
121
+ { type: 'title', text: '回报率 vs DPI:核心区别', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: '<strong>DPI (Dots Per Inch)</strong> 是灵敏度:即鼠标每移动一英寸,光标移动多少像素。 <strong>Hz (回报率)</strong> 是更新频率:即该移动报告的平滑度和及时性。这两个参数是相互独立且互补的。',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: '鼠标测试',
129
+ title: '回报率检测器',
130
+ description: '快速圆周移动鼠标以测量 Hz。',
131
+ labelAvg: '平均值',
132
+ labelPeak: '峰值',
133
+ placeholder: '在此移动鼠标',
134
+ },
135
+ };
@@ -7,10 +7,6 @@ import TestRatonBibliography from './bibliography.astro';
7
7
  import type { TestRatonUI } from './ui';
8
8
  export type TestRatonLocaleContent = ToolLocaleContent<TestRatonUI>;
9
9
 
10
- import { content as es } from './i18n/es';
11
- import { content as en } from './i18n/en';
12
- import { content as fr } from './i18n/fr';
13
-
14
10
  export const testRaton: HardwareToolEntry<TestRatonUI> = {
15
11
  id: 'test-raton',
16
12
  icons: {
@@ -18,9 +14,21 @@ export const testRaton: HardwareToolEntry<TestRatonUI> = {
18
14
  fg: 'mdi:mouse',
19
15
  },
20
16
  i18n: {
21
- es: async () => es,
22
- en: async () => en,
23
- fr: async () => fr,
17
+ de: () => import('./i18n/de').then((m) => m.content),
18
+ en: () => import('./i18n/en').then((m) => m.content),
19
+ es: () => import('./i18n/es').then((m) => m.content),
20
+ fr: () => import('./i18n/fr').then((m) => m.content),
21
+ id: () => import('./i18n/id').then((m) => m.content),
22
+ it: () => import('./i18n/it').then((m) => m.content),
23
+ ja: () => import('./i18n/ja').then((m) => m.content),
24
+ ko: () => import('./i18n/ko').then((m) => m.content),
25
+ nl: () => import('./i18n/nl').then((m) => m.content),
26
+ pl: () => import('./i18n/pl').then((m) => m.content),
27
+ pt: () => import('./i18n/pt').then((m) => m.content),
28
+ ru: () => import('./i18n/ru').then((m) => m.content),
29
+ sv: () => import('./i18n/sv').then((m) => m.content),
30
+ tr: () => import('./i18n/tr').then((m) => m.content),
31
+ zh: () => import('./i18n/zh').then((m) => m.content),
24
32
  },
25
33
  };
26
34
 
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ToneGeneratorUI } from '../ui';
4
+
5
+ const slug = 'ton-frequenz-generator-online';
6
+ const title = 'Online Ton und Frequenzgenerator';
7
+ const description =
8
+ 'Erzeugen Sie Sinus-, Rechteck-, Dreieck- und Sägezahnwellen. Testen Sie Ihre Lautsprecher, Kopfhörer oder Subwoofer mit Frequenzen von 20Hz bis 20kHz.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Wofür wird ein Frequenzgenerator verwendet?',
13
+ answer:
14
+ 'Er wird verwendet, um den Frequenzgang von Lautsprechern und Kopfhörern zu testen, unerwünschte Resonanzen in Möbeln zu erkennen, Lücken in Ihrem Hörbereich zu finden oder sogar bei Tinnitus durch Notch-Therapie zu helfen.',
15
+ },
16
+ {
17
+ question: 'Was ist eine Sinuswelle im Vergleich zu einer Rechteckwelle?',
18
+ answer:
19
+ 'Eine Sinuswelle ist ein reiner Ton ohne Oberwellen (glatt und rund). Eine Rechteckwelle ist reich an ungeraden Oberwellen und klingt viel aggressiver oder digitaler. Die Dreieckwelle liegt dazwischen und ist nützlich für die Audiosynthese.',
20
+ },
21
+ {
22
+ question: 'Kann ich meine Lautsprecher mit diesem Tool beschädigen?',
23
+ answer:
24
+ 'Ja, wenn Sie sehr hohe Lautstärken bei extremen Frequenzen verwenden (insbesondere Bässe unter 30Hz oder Höhen über 15kHz). Beginnen Sie immer mit einer niedrigen Systemlautstärke und erhöhen Sie diese schrittweise.',
25
+ },
26
+ {
27
+ question: 'Wie hoch ist der menschliche Hörbereich?',
28
+ answer:
29
+ 'Theoretisch 20Hz bis 20.000Hz (20kHz). Mit zunehmendem Alter ist es jedoch normal, die Fähigkeit zu verlieren, Töne über 15kHz zu hören. Dieser Test kann Ihnen helfen, Ihre persönliche Obergrenze zu überprüfen.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Wellenformtyp auswählen',
36
+ text: 'Wählen Sie zwischen Sinus (rein), Rechteck, Dreieck oder Sägezahn, je nachdem, welche Art von Test Sie durchführen möchten.',
37
+ },
38
+ {
39
+ name: 'Frequenz einstellen',
40
+ text: 'Bewegen Sie den Schieberegler, um durch das hörbare Spektrum zu navigieren. Verwenden Sie die Shortcuts für 60Hz, 440Hz oder 1kHz, um schnell auf Referenzfrequenzen zuzugreifen.',
41
+ },
42
+ {
43
+ name: 'Lautstärke kontrollieren',
44
+ text: 'Stellen Sie sicher, dass die Lautstärke Ihrer Lautsprecher niedrig ist, bevor Sie auf Play drücken. Sie können die Verstärkung direkt über das Tool anpassen.',
45
+ },
46
+ {
47
+ name: 'Reaktion analysieren',
48
+ text: 'Achten Sie auf mögliche Verzerrungen oder Momente, in denen der Ton verschwindet. Dies deutet auf die physikalischen Grenzen Ihrer Audio-Hardware hin.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'de',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Häufig gestellte Fragen',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referenzen',
93
+ bibliography: [
94
+ {
95
+ name: 'MDN Web Docs — Web Audio API',
96
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
+ },
98
+ {
99
+ name: 'ISO 226:2023 — Equal-loudness contours',
100
+ url: 'https://www.iso.org/standard/83117.html',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Alles über Frequenzen und Schallwellen', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Schall ist reine Physik in Bewegung. Mit diesem Tool können Sie Schallwellen in Echtzeit manipulieren, von den tiefsten Bässen, die Sie in Ihrer Brust spüren können, bis hin zu den Ultraschall-Höhen, die nur Tiere wahrnehmen können.',
110
+ },
111
+ { type: 'title', text: 'Menschlicher Hörbereich und Presbyakusis', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Ein gesundes menschliches Ohr nimmt Geräusche zwischen <strong>20Hz und 20kHz</strong> wahr. Mit zunehmendem Alter sinkt die Obergrenze: Die meisten Erwachsenen über 50 können Töne über 12kHz nicht mehr hören. Der 17,4kHz-Ton, bekannt als "Mückenton", ist ein klassischer Test, den typischerweise nur Teenager bestehen können.',
115
+ },
116
+ { type: 'title', text: 'Wellenformen und ihre Verwendung', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: '<strong>Sinus:</strong> reiner Ton ohne Oberwellen, wird in medizinischen Hörtests und zur Instrumentenkalibrierung verwendet. <strong>Rechteck:</strong> reich an ungeraden Oberwellen, klingt wie Retro-8-Bit-Konsolen. <strong>Sägezahn:</strong> enthält alle Oberwellen, die Basis für Synthesizer in der elektronischen Musik. <strong>Dreieck:</strong> Mittelpunkt zwischen Sinus und Rechteck — glatter als Rechteck, aber mit mehr harmonischem Gehalt als Sinus.',
120
+ },
121
+ { type: 'title', text: 'Lautsprechertest und Reinigung durch Vibration', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Eine niederfrequente Welle (typischerweise <strong>165Hz</strong>) bei maximaler Lautstärke mit Rechteck- oder Sägezahnform zwingt die Lautsprechermembran zu heftigen Vibrationen, wodurch Wassertropfen, die im Gitter gefangen sind, mechanisch ausgestoßen werden. Spielen Sie extrem hohe Frequenzen nicht über längere Zeit bei maximaler Lautstärke ab: Auch wenn Sie sie nicht hören können, kann die Energie die Hochtöner Ihrer Ausrüstung beschädigen.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Audio-Generator',
129
+ title: 'Frequenzgenerator',
130
+ description: 'Erzeugen Sie reine Frequenzen für Audiotests.',
131
+ freqLabel: 'Frequenz',
132
+ preset60: '60Hz',
133
+ preset440: '440Hz',
134
+ preset1k: '1kHz',
135
+ rangeMin: '20Hz (Sub-Bass)',
136
+ rangeMax: '20kHz (Ultraschall)',
137
+ waveLabel: 'Wellenform',
138
+ waveSine: 'Sinus',
139
+ waveSquare: 'Rechteck',
140
+ waveSawtooth: 'Sägezahn',
141
+ waveTriangle: 'Dreieck',
142
+ volLabel: 'Lautstärke',
143
+ btnPlay: 'TON ABSPIELEN',
144
+ btnStop: 'STOPP',
145
+ },
146
+ };
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ToneGeneratorUI } from '../ui';
4
+
5
+ const slug = 'generator-nada-frekuensi-online';
6
+ const title = 'Generator Nada dan Frekuensi Online';
7
+ const description =
8
+ 'Hasilkan gelombang sinus, kotak, segitiga, dan gigi gergaji. Uji speaker, headphone, atau subwoofer Anda dengan frekuensi dari 20Hz hingga 20kHz.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'Untuk apa generator frekuensi digunakan?',
13
+ answer:
14
+ 'Digunakan untuk menguji respons frekuensi speaker dan headphone, mendeteksi resonansi yang tidak diinginkan pada furnitur, menemukan celah dalam rentang pendengaran Anda, atau bahkan membantu meredakan tinnitus melalui terapi notch.',
15
+ },
16
+ {
17
+ question: 'Apa perbedaan gelombang sinus versus gelombang kotak?',
18
+ answer:
19
+ 'Gelombang sinus adalah nada murni tanpa harmonik (halus dan bulat). Gelombang kotak kaya akan harmonik ganjil dan terdengar jauh lebih agresif atau digital. Gelombang segitiga berada di antaranya, berguna untuk sintesis audio.',
20
+ },
21
+ {
22
+ question: 'Bisakah saya merusak speaker saya dengan alat ini?',
23
+ answer:
24
+ 'Ya, jika Anda menggunakan volume sangat tinggi pada frekuensi ekstrem (terutama bass di bawah 30Hz atau treble di atas 15kHz). Selalu mulai dengan volume sistem yang rendah dan tingkatkan secara bertahap.',
25
+ },
26
+ {
27
+ question: 'Berapa rentang pendengaran manusia?',
28
+ answer:
29
+ 'Secara teoritis 20Hz hingga 20.000Hz (20kHz). Namun, seiring bertambahnya usia, adalah normal jika kemampuan mendengar di atas 15kHz berkurang. Tes ini dapat membantu memverifikasi batas atas pribadi Anda.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Pilih jenis bentuk gelombang',
36
+ text: 'Pilih antara Sinus (murni), Kotak, Segitiga, atau Gigi Gergaji tergantung pada jenis pengujian yang ingin Anda lakukan.',
37
+ },
38
+ {
39
+ name: 'Sesuaikan frekuensi',
40
+ text: 'Gerakkan penggeser untuk menavigasi spektrum yang dapat didengar. Gunakan pintasan 60Hz, 440Hz, atau 1kHz untuk mengakses frekuensi referensi dengan cepat.',
41
+ },
42
+ {
43
+ name: 'Kontrol volume',
44
+ text: 'Pastikan volume speaker Anda rendah sebelum menekan Play. Anda dapat menyesuaikan gain langsung dari alat.',
45
+ },
46
+ {
47
+ name: 'Analisis respons',
48
+ text: 'Dengarkan kemungkinan distorsi atau saat-saat ketika suara menghilang. Ini akan menunjukkan batas fisik perangkat keras audio Anda.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'id',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Pertanyaan yang Sering Diajukan',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Referensi',
93
+ bibliography: [
94
+ {
95
+ name: 'MDN Web Docs — Web Audio API',
96
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
+ },
98
+ {
99
+ name: 'ISO 226:2023 — Equal-loudness contours',
100
+ url: 'https://www.iso.org/standard/83117.html',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Segala Hal Tentang Frekuensi dan Gelombang Suara', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Suara adalah fisika murni dalam gerakan. Alat ini memungkinkan Anda memanipulasi gelombang suara secara real time, dari bass terdalam yang dapat Anda rasakan di dada hingga nada tinggi ultrasonik yang hanya dapat dirasakan oleh hewan.',
110
+ },
111
+ { type: 'title', text: 'Rentang Pendengaran Manusia dan Presbikusis', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Telinga manusia yang sehat merasakan suara antara <strong>20Hz dan 20kHz</strong>. Seiring bertambahnya usia, batas atas menurun: kebanyakan orang dewasa di atas 50 tahun tidak dapat mendengar di atas 12kHz. Nada 17,4kHz, yang dikenal sebagai "mosquito tone", adalah tes klasik yang biasanya hanya bisa dilewati oleh remaja.',
115
+ },
116
+ { type: 'title', text: 'Jenis Gelombang dan Kegunaannya', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: '<strong>Sinus:</strong> nada murni tanpa harmonik, digunakan dalam tes pendengaran medis dan kalibrasi instrumen. <strong>Kotak:</strong> kaya akan harmonik ganjil, terdengar seperti konsol 8-bit retro. <strong>Gigi Gergaji:</strong> mengandung semua harmonik, dasar dari synthesizer musik elektronik. <strong>Segitiga:</strong> titik tengah antara sinus dan kotak — lebih halus dari kotak tetapi dengan konten harmonik lebih banyak daripada sinus.',
120
+ },
121
+ { type: 'title', text: 'Pengujian Speaker dan Pembersihan Getaran', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Gelombang frekuensi rendah (biasanya <strong>165Hz</strong>) pada volume maksimum dengan bentuk kotak atau gigi gergaji memaksa diafragma speaker bergetar hebat, secara mekanis mengeluarkan tetesan air yang terjebak di kisi-kisi. Jangan memutar frekuensi yang sangat tinggi pada volume maksimum untuk waktu yang lama: meskipun Anda tidak dapat mendengarnya, energinya dapat merusak tweeter peralatan Anda.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Generator Audio',
129
+ title: 'Generator Nada',
130
+ description: 'Hasilkan frekuensi murni untuk pengujian audio.',
131
+ freqLabel: 'Frekuensi',
132
+ preset60: '60Hz',
133
+ preset440: '440Hz',
134
+ preset1k: '1kHz',
135
+ rangeMin: '20Hz (Sub-bass)',
136
+ rangeMax: '20kHz (Ultrasonik)',
137
+ waveLabel: 'Bentuk Gelombang',
138
+ waveSine: 'Sinus',
139
+ waveSquare: 'Kotak',
140
+ waveSawtooth: 'Gigi Gergaji',
141
+ waveTriangle: 'Segitiga',
142
+ volLabel: 'Volume',
143
+ btnPlay: 'PUTAR NADA',
144
+ btnStop: 'BERHENTI',
145
+ },
146
+ };
@@ -0,0 +1,146 @@
1
+ import type { WithContext, FAQPage, HowTo, SoftwareApplication } from 'schema-dts';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+ import type { ToneGeneratorUI } from '../ui';
4
+
5
+ const slug = 'generatore-toni-frequenza-online';
6
+ const title = 'Generatore di Toni e Frequenze Online';
7
+ const description =
8
+ 'Genera onde sinusoidali, quadre, triangolari e a dente di sega. Testa i tuoi altoparlanti, cuffie o subwoofer con frequenze da 20Hz a 20kHz.';
9
+
10
+ const faqData = [
11
+ {
12
+ question: 'A cosa serve un generatore di frequenza?',
13
+ answer:
14
+ 'Viene utilizzato per testare la risposta in frequenza di altoparlanti e cuffie, rilevare risonanze indesiderate nei mobili, trovare lacune nel proprio campo uditivo o persino aiutare a calmare l\'acufene attraverso la terapia notch.',
15
+ },
16
+ {
17
+ question: "Cos'è un'onda sinusoidale rispetto a un'onda quadra?",
18
+ answer:
19
+ "Un'onda sinusoidale è un tono puro senza armoniche (liscio e rotondo). Un'onda quadra è ricca di armoniche dispari e suona molto più aggressiva o digitale. L'onda triangolare si colloca nel mezzo, utile per la sintesi audio.",
20
+ },
21
+ {
22
+ question: 'Posso danneggiare i miei altoparlanti con questo strumento?',
23
+ answer:
24
+ 'Sì, se utilizzi volumi molto alti a frequenze estreme (specialmente bassi sotto i 30Hz o acuti sopra i 15kHz). Inizia sempre con un volume di sistema basso e aumenta gradualmente.',
25
+ },
26
+ {
27
+ question: 'Qual è il range uditivo umano?',
28
+ answer:
29
+ 'Teoricamente da 20Hz a 20.000Hz (20kHz). Tuttavia, con l\'età è normale perdere la capacità di sentire sopra i 15kHz. Questo test può aiutarti a verificare il tuo limite superiore personale.',
30
+ },
31
+ ];
32
+
33
+ const howToData = [
34
+ {
35
+ name: 'Seleziona il tipo di forma d\'onda',
36
+ text: 'Scegli tra Sinusoidale (pura), Quadra, Triangolare o Dente di sega a seconda del tipo di test che vuoi eseguire.',
37
+ },
38
+ {
39
+ name: 'Regola la frequenza',
40
+ text: 'Muovi lo slider per navigare nello spettro udibile. Usa le scorciatoie da 60Hz, 440Hz o 1kHz per accedere rapidamente alle frequenze di riferimento.',
41
+ },
42
+ {
43
+ name: 'Controlla il volume',
44
+ text: 'Assicurati che il volume dell\'altoparlante sia basso prima di premere Play. Puoi regolare il guadagno direttamente dallo strumento.',
45
+ },
46
+ {
47
+ name: 'Analizza la risposta',
48
+ text: 'Ascolta eventuali distorsioni o momenti in cui il suono scompare. Questo indicherà i limiti fisici del tuo hardware audio.',
49
+ },
50
+ ];
51
+
52
+ const faqSchema: WithContext<FAQPage> = {
53
+ '@context': 'https://schema.org',
54
+ '@type': 'FAQPage',
55
+ mainEntity: faqData.map((item) => ({
56
+ '@type': 'Question',
57
+ name: item.question,
58
+ acceptedAnswer: { '@type': 'Answer', text: item.answer },
59
+ })),
60
+ };
61
+
62
+ const howToSchema: WithContext<HowTo> = {
63
+ '@context': 'https://schema.org',
64
+ '@type': 'HowTo',
65
+ name: title,
66
+ description,
67
+ step: howToData.map((step, i) => ({
68
+ '@type': 'HowToStep',
69
+ position: i + 1,
70
+ name: step.name,
71
+ text: step.text,
72
+ })),
73
+ };
74
+
75
+ const appSchema: WithContext<SoftwareApplication> = {
76
+ '@context': 'https://schema.org',
77
+ '@type': 'SoftwareApplication',
78
+ name: title,
79
+ description,
80
+ applicationCategory: 'UtilityApplication',
81
+ operatingSystem: 'All',
82
+ offers: { '@type': 'Offer', price: '0', priceCurrency: 'EUR' },
83
+ inLanguage: 'it',
84
+ };
85
+
86
+ export const content: ToolLocaleContent<ToneGeneratorUI> = {
87
+ slug,
88
+ title,
89
+ description,
90
+ faqTitle: 'Domande Frequenti',
91
+ faq: faqData,
92
+ bibliographyTitle: 'Riferimenti',
93
+ bibliography: [
94
+ {
95
+ name: 'MDN Web Docs — Web Audio API',
96
+ url: 'https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API',
97
+ },
98
+ {
99
+ name: 'ISO 226:2023 — Equal-loudness contours',
100
+ url: 'https://www.iso.org/standard/83117.html',
101
+ },
102
+ ],
103
+ howTo: howToData,
104
+ schemas: [faqSchema, howToSchema, appSchema],
105
+ seo: [
106
+ { type: 'title', text: 'Tutto su Frequenze e Onde Sonore', level: 2 },
107
+ {
108
+ type: 'paragraph',
109
+ html: 'Il suono è pura fisica in movimento. Questo strumento ti permette di manipolare le onde sonore in tempo reale, dai bassi più profondi che puoi sentire nel petto agli alti ultrasonici che solo gli animali possono percepire.',
110
+ },
111
+ { type: 'title', text: 'Range Uditivo Umano e Presbiacusia', level: 3 },
112
+ {
113
+ type: 'paragraph',
114
+ html: 'Un orecchio umano sano percepisce suoni tra <strong>20Hz e 20kHz</strong>. Con l\'età, il limite superiore scende: la maggior parte degli adulti sopra i 50 anni non riesce a sentire sopra i 12kHz. Il tono a 17,4kHz, noto come "mosquito tone", è un classico test che in genere solo gli adolescenti riescono a superare.',
115
+ },
116
+ { type: 'title', text: 'Tipi di Onde e loro utilizzi', level: 3 },
117
+ {
118
+ type: 'paragraph',
119
+ html: '<strong>Sinusoidale:</strong> tono puro senza armoniche, utilizzato nei test uditivi medici e nella calibrazione degli strumenti. <strong>Quadra:</strong> ricca di armoniche dispari, suona come le console retrò a 8 bit. <strong>Dente di sega:</strong> contiene tutte le armoniche, la base dei sintetizzatori musicali elettronici. <strong>Triangolare:</strong> punto di mezzo tra sinusoidale e quadra — più liscia della quadra ma con più contenuto armonico della sinusoidale.',
120
+ },
121
+ { type: 'title', text: 'Test degli Altoparlanti e Pulizia tramite Vibrazione', level: 3 },
122
+ {
123
+ type: 'paragraph',
124
+ html: 'Un\'onda a bassa frequenza (tipicamente <strong>165Hz</strong>) al massimo volume con una forma quadra o a dente di sega costringe il diaframma dell\'altoparlante a vibrare violentemente, espellendo meccanicamente le gocce d\'acqua intrappolate nella griglia. Non riprodurre frequenze estremamente alte al massimo volume per lunghi periodi: anche se non puoi sentirle, l\'energia può danneggiare i tweeter della tua attrezzatura.',
125
+ },
126
+ ],
127
+ ui: {
128
+ badge: 'Generatore Audio',
129
+ title: 'Generatore di Toni',
130
+ description: 'Genera frequenze pure per test audio.',
131
+ freqLabel: 'Frequenza',
132
+ preset60: '60Hz',
133
+ preset440: '440Hz',
134
+ preset1k: '1kHz',
135
+ rangeMin: '20Hz (Sub-bass)',
136
+ rangeMax: '20kHz (Ultrasuoni)',
137
+ waveLabel: 'Forma d\'onda',
138
+ waveSine: 'Sinusoidale',
139
+ waveSquare: 'Quadra',
140
+ waveSawtooth: 'Dente di sega',
141
+ waveTriangle: 'Triangolare',
142
+ volLabel: 'Volume',
143
+ btnPlay: 'RIPRODUCI TONO',
144
+ btnStop: 'STOP',
145
+ },
146
+ };