summaryrefslogtreecommitdiffstats
path: root/examples/qt3d/audio-visualizer-qml
diff options
context:
space:
mode:
authorTomi Korpipaa <tomi.korpipaa@qt.io>2022-10-19 13:10:27 +0300
committerTomi Korpipaa <tomi.korpipaa@qt.io>2022-10-20 08:05:17 +0300
commitbe9ccff07db89d2b6470b5654b0244ee8699c150 (patch)
tree60252cb645c9857ea7ce20400f961f4f024c8479 /examples/qt3d/audio-visualizer-qml
parente06bccdc935ddd04259fe81cbc17f471837ae4e2 (diff)
Fix audio-visualizer example
Pick-to: 6.2 6.4 Fixes: QTCREATORBUG-27852 Change-Id: Icc10aa51f54a7ff19dcff2349048b436f273d6bf Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io> Reviewed-by: Antti Määttä <antti.maatta@qt.io>
Diffstat (limited to 'examples/qt3d/audio-visualizer-qml')
-rw-r--r--examples/qt3d/audio-visualizer-qml/Visualizer.qml4
-rw-r--r--examples/qt3d/audio-visualizer-qml/main.cpp1
-rw-r--r--examples/qt3d/audio-visualizer-qml/main.qml40
3 files changed, 23 insertions, 22 deletions
diff --git a/examples/qt3d/audio-visualizer-qml/Visualizer.qml b/examples/qt3d/audio-visualizer-qml/Visualizer.qml
index 554e8025d..1b4ccec0e 100644
--- a/examples/qt3d/audio-visualizer-qml/Visualizer.qml
+++ b/examples/qt3d/audio-visualizer-qml/Visualizer.qml
@@ -10,9 +10,10 @@ Entity {
id: sceneRoot
property int barRotationTimeMs: 1
property int numberOfBars: 1
- property string animationState: "stopped"
+ property string animationState
property real titleStartAngle: 95
property real titleStopAngle: 5
+ property bool started: false
onAnimationStateChanged: {
if (animationState == "playing") {
@@ -73,6 +74,7 @@ Entity {
progressTransformAnimation.duration = mediaPlayer.duration
mainview.state = "playing"
progressTransformAnimation.start()
+ started = true
}
//![0]
diff --git a/examples/qt3d/audio-visualizer-qml/main.cpp b/examples/qt3d/audio-visualizer-qml/main.cpp
index f55cb5ee8..6b3237fdd 100644
--- a/examples/qt3d/audio-visualizer-qml/main.cpp
+++ b/examples/qt3d/audio-visualizer-qml/main.cpp
@@ -10,6 +10,7 @@
int main(int argc, char* argv[])
{
+ qputenv("QML_XHR_ALLOW_FILE_READ", "1");
#ifdef Q_OS_ANDROID
QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
#endif
diff --git a/examples/qt3d/audio-visualizer-qml/main.qml b/examples/qt3d/audio-visualizer-qml/main.qml
index 4f4977f55..49c26106b 100644
--- a/examples/qt3d/audio-visualizer-qml/main.qml
+++ b/examples/qt3d/audio-visualizer-qml/main.qml
@@ -1,10 +1,10 @@
// Copyright (C) 2017 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
-import QtQuick 2.0
-import QtQuick.Scene3D 2.0
-import QtQuick.Layouts 1.2
-import QtMultimedia 5.0
+import QtQuick
+import QtQuick.Scene3D
+import QtQuick.Layouts
+import QtMultimedia
Item {
id: mainview
@@ -70,30 +70,25 @@ Item {
//![0]
MediaPlayer {
id: mediaPlayer
- autoPlay: true
- volume: 0.5
source: "qrc:/music/tiltshifted_lost_neon_sun.mp3"
+ audioOutput: AudioOutput {}
//![0]
- onStatusChanged: {
- if (status == MediaPlayer.EndOfMedia) //{
- state = "stopped"
- }
-
- onError: console.error("error with audio " + mediaPlayer.error)
-
- onDurationChanged: {
- // Load the pre-calculated magnitude data for the visualizer
- var request = new XMLHttpRequest()
- request.responseType = 'arraybuffer'
- request.onreadystatechange = function() {
+ onMediaStatusChanged: {
+ if (mediaStatus == MediaPlayer.EndOfMedia) {
+ mainview.state = "stopped"
+ } else if (mediaStatus == MediaPlayer.LoadedMedia && !visualizer.started) {
+ // Load the pre-calculated magnitude data for the visualizer
+ var request = new XMLHttpRequest()
+ request.responseType = 'arraybuffer'
+ request.onreadystatechange = function() {
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status == 200 || request.status == 0) {
var arrayBuffer = request.response
if (arrayBuffer) {
magnitudeArray = new Uint16Array(arrayBuffer)
visualizer.startVisualization()
- }
+ }
} else {
console.warn("Couldn't load magnitude data for bars.")
}
@@ -101,10 +96,13 @@ Item {
}
};
- request.open('GET', magnitudeDataSourceFile, true)
- request.send(null)
+ request.open('GET', magnitudeDataSourceFile, true)
+ request.send(null)
+ }
}
+ onErrorStringChanged: console.error("error with audio " + errorString)
+
function getNextAudioLevel(offsetMs) {
if (magnitudeArray === null)
return 0.0;