Ce script permis maintenant non seulement de voir le texte en code Morse, mais aussi de l’entendre. L’utilisateur peut taper du texte, voir sa conversion en Morse.
Convertisseur Morse avec Son et Contrôle de Vitesse
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="author" content="F4HXN">
<meta name="description" content="Traducteur de Code Morse V2.0">
<meta name="copyright" content="Libre de droits">
<title>Traducteur de Code Morse v2.0</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Convertisseur Morse avec Son</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f0f0f0;
}
.container {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
textarea {
width: 300px;
height: 100px;
margin-bottom: 10px;
}
#morseOutput {
font-family: monospace;
white-space: pre-wrap;
background-color: #eee;
padding: 10px;
border-radius: 4px;
margin-bottom: 10px;
}
button {
padding: 10px;
background-color: #4CAF50;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
button:hover {
background-color: #45a049;
}
</style>
</head>
<body>
<div class="container">
<h2>Convertisseur Morse avec Son</h2>
<textarea id="inputText" placeholder="Tapez votre texte ici..."></textarea>
<div id="morseOutput"></div>
<button id="playButton">Jouer le son en morse</button>
</div>
<script>
const morseCode = {
'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.',
'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..',
'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.',
'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-',
'Y': '-.--', 'Z': '--..', '0': '-----', '1': '.----', '2': '..---',
'3': '...--', '4': '....-', '5': '.....', '6': '-....', '7': '--...',
'8': '---..', '9': '----.', '.': '.-.-.-', ',': '--..--', '?': '..--..',
"'": '.----.', '!': '-.-.--', '/': '-..-.', '(': '-.--.', ')': '-.--.-',
'&': '.-...', ':': '---...', ';': '-.-.-.', '=': '-...-', '+': '.-.-.',
'-': '-....-', '_': '..--.-', '"': '.-..-.', '$': '...-..-', '@': '.--.-.',
' ': '/'
};
function textToMorse(text) {
return text.toUpperCase().split('').map(char => morseCode[char] || char).join(' ');
}
const inputText = document.getElementById('inputText');
const morseOutput = document.getElementById('morseOutput');
const playButton = document.getElementById('playButton');
inputText.addEventListener('input', function() {
const morseText = textToMorse(this.value);
morseOutput.textContent = morseText;
});
// Configuration audio
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
const dotDuration = 0.1;
const dashDuration = dotDuration * 3;
const pauseDuration = dotDuration;
function playTone(duration) {
const oscillator = audioContext.createOscillator();
oscillator.type = 'sine';
oscillator.frequency.setValueAtTime(600, audioContext.currentTime);
oscillator.connect(audioContext.destination);
oscillator.start();
oscillator.stop(audioContext.currentTime + duration);
}
async function playMorseCode(morseText) {
for (const char of morseText) {
if (char === '.') {
playTone(dotDuration);
await new Promise(resolve => setTimeout(resolve, dotDuration * 1000));
} else if (char === '-') {
playTone(dashDuration);
await new Promise(resolve => setTimeout(resolve, dashDuration * 1000));
} else if (char === ' ' || char === '/') {
await new Promise(resolve => setTimeout(resolve, pauseDuration * 1000));
}
}
}
playButton.addEventListener('click', function() {
const morseText = morseOutput.textContent;
playMorseCode(morseText);
});
</script>
</body>
</html>