Я использую Tone.js в своем проекте, чтобы проанализировать загруженный аудиофайл, где я играл в музыкальную пьесу. С этим анализом я хочу показать вопрос об аудио, который связан с теорией музыки. Когда пользователь отвечает на вопрос, это показывает, если вы ответили правильно или неправильно, и объяснение. Кто -нибудь может мне помочь?async function analyzeAudio()
{
const fileInput = document.getElementById("audioUpload").files[0];
if (!fileInput) {
alert(currentLanguage === "en" ? "Upload an audio file!" : "Upload een audio-bestand!");
return;
}
//Upload audio file from your files
const audioPlayer = document.getElementById("audioPlayer");
audioPlayer.src = URL.createObjectURL(fileInput);
audioPlayer.style.display = "block";
audioPlayer.load();
//Read and analyze the uploaded audio
const reader = new FileReader();
reader.readAsArrayBuffer(fileInput);
reader.onload = async () => {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
audioBuffer = await audioContext.decodeAudioData(reader.result);
const offlineContext = new OfflineAudioContext(1, audioBuffer.length, audioBuffer.sampleRate);
const source = offlineContext.createBufferSource();
source.buffer = audioBuffer;
const analyser = offlineContext.createAnalyser();
analyser.fftSize = 2048;
const dataArray = new Uint8Array(analyser.frequencyBinCount);
// console.log(dataArray)
source.connect(analyser);
analyser.connect(offlineContext.destination);
source.start();
await offlineContext.startRendering();
analyser.getByteFrequencyData(dataArray);
generateQuestion(dataArray);
};
}
< /code>
Редактировать: < /strong>
Вот обдуманное при анализе масштаба моего загруженного аудио < /p>
function analyzeScale(dataArray)
{
let oddHarmonics = 0, evenHarmonics = 0;
for (let i = 1; i < dataArray.length; i += 2) {
oddHarmonics += dataArray;
}
for (let i = 2; i < dataArray.length; i += 2) {
evenHarmonics += dataArray;
}
if (oddHarmonics > evenHarmonics) {
correctAnswer = "minor";
explanation = "This music contains relatively many odd harmonics, which suggests a minor scale with a darker sound.";
} else {
correctAnswer = "major";
explanation = "This music contains relatively many even harmonics, which is characteristic of a major scale with a brighter sound.";
}
document.getElementById("question").innerText = "Is this music in a major or minor key?";
}
< /code>
и проверка ответа < /p>
function checkAnswer()
{
const userAnswer = document.getElementById("answer").value.toLowerCase();
const feedback = document.getElementById("feedback");
if (userAnswer === correctAnswer) {
feedback.innerHTML = `Correct! ${explanation}`;
questionIndex++; // Move to the next question
setTimeout(askNextQuestion, 3000);
} else {
feedback.innerHTML = `Incorrect. ${explanation} Try again!`;
}
}
< /code>
После того, как я загружаю свой звук, на странице показан вопрос: эта музыка в основном или незначительном ключе? Я получу объяснение: эта музыка содержит относительно много даже даже гармоник, что характерно для крупного масштаба с более ярким звуком. Я как -то понял, что я ответил на неправильный, что я наверняка наверняка < /p>
Редактировать 2: < /strong>
Два звука, которые я протестировал, - это «J.S. Bach - Prelude in C Major» и «Für Elise» < /P>
Я получил правильный объяснение, когда я отвечал, когда я отвечал, когда я отвечал, что я получил правильный объяснение. Несмотря на то, что я уверен, что в Für Elise играют в несовершеннолетнем
Подробнее здесь: https://stackoverflow.com/questions/796 ... th-tone-js
Лучший анализ с tone.js ⇐ Html
Программисты Html
1749737563
Anonymous
Я использую Tone.js в своем проекте, чтобы проанализировать загруженный аудиофайл, где я играл в музыкальную пьесу. С этим анализом я хочу показать вопрос об аудио, который связан с теорией музыки. Когда пользователь отвечает на вопрос, это показывает, если вы ответили правильно или неправильно, и объяснение. Кто -нибудь может мне помочь?async function analyzeAudio()
{
const fileInput = document.getElementById("audioUpload").files[0];
if (!fileInput) {
alert(currentLanguage === "en" ? "Upload an audio file!" : "Upload een audio-bestand!");
return;
}
//Upload audio file from your files
const audioPlayer = document.getElementById("audioPlayer");
audioPlayer.src = URL.createObjectURL(fileInput);
audioPlayer.style.display = "block";
audioPlayer.load();
//Read and analyze the uploaded audio
const reader = new FileReader();
reader.readAsArrayBuffer(fileInput);
reader.onload = async () => {
const audioContext = new (window.AudioContext || window.webkitAudioContext)();
audioBuffer = await audioContext.decodeAudioData(reader.result);
const offlineContext = new OfflineAudioContext(1, audioBuffer.length, audioBuffer.sampleRate);
const source = offlineContext.createBufferSource();
source.buffer = audioBuffer;
const analyser = offlineContext.createAnalyser();
analyser.fftSize = 2048;
const dataArray = new Uint8Array(analyser.frequencyBinCount);
// console.log(dataArray)
source.connect(analyser);
analyser.connect(offlineContext.destination);
source.start();
await offlineContext.startRendering();
analyser.getByteFrequencyData(dataArray);
generateQuestion(dataArray);
};
}
< /code>
Редактировать: < /strong>
Вот обдуманное при анализе масштаба моего загруженного аудио < /p>
function analyzeScale(dataArray)
{
let oddHarmonics = 0, evenHarmonics = 0;
for (let i = 1; i < dataArray.length; i += 2) {
oddHarmonics += dataArray[i];
}
for (let i = 2; i < dataArray.length; i += 2) {
evenHarmonics += dataArray[i];
}
if (oddHarmonics > evenHarmonics) {
correctAnswer = "minor";
explanation = "This music contains relatively many odd harmonics, which suggests a minor scale with a darker sound.";
} else {
correctAnswer = "major";
explanation = "This music contains relatively many even harmonics, which is characteristic of a major scale with a brighter sound.";
}
document.getElementById("question").innerText = "Is this music in a major or minor key?";
}
< /code>
и проверка ответа < /p>
function checkAnswer()
{
const userAnswer = document.getElementById("answer").value.toLowerCase();
const feedback = document.getElementById("feedback");
if (userAnswer === correctAnswer) {
feedback.innerHTML = `Correct! ${explanation}`;
questionIndex++; // Move to the next question
setTimeout(askNextQuestion, 3000);
} else {
feedback.innerHTML = `Incorrect. ${explanation} Try again!`;
}
}
< /code>
После того, как я загружаю свой звук, на странице показан вопрос: эта музыка в основном или незначительном ключе? Я получу объяснение: эта музыка содержит относительно много даже даже гармоник, что характерно для крупного масштаба с более ярким звуком. Я как -то понял, что я ответил на неправильный, что я наверняка наверняка < /p>
Редактировать 2: < /strong>
Два звука, которые я протестировал, - это «J.S. Bach - Prelude in C Major» и «Für Elise» < /P>
Я получил правильный объяснение, когда я отвечал, когда я отвечал, когда я отвечал, что я получил правильный объяснение. Несмотря на то, что я уверен, что в Für Elise играют в несовершеннолетнем
Подробнее здесь: [url]https://stackoverflow.com/questions/79663077/better-analysis-with-tone-js[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия