From 85de0d3bbfce3ba9f0a84f82f80d076cfa949680 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 5 Jan 2017 13:54:06 -0800 Subject: [PATCH 1/3] Added local only spatialized button click sounds to tablet --- .../resources/qml/hifi/tablet/Tablet.qml | 3 + .../qml/hifi/tablet/TabletButton.qml | 4 ++ .../resources/qml/hifi/tablet/TabletRoot.qml | 10 ++++ .../src/TabletScriptingInterface.cpp | 58 ++++++++++++++++++- .../src/TabletScriptingInterface.h | 44 +++++++++++++- scripts/system/libraries/WebTablet.js | 5 ++ scripts/system/tablet-ui/tabletUI.js | 11 ++-- 7 files changed, 129 insertions(+), 6 deletions(-) diff --git a/interface/resources/qml/hifi/tablet/Tablet.qml b/interface/resources/qml/hifi/tablet/Tablet.qml index d19fc4ffdd..fbce67a7be 100644 --- a/interface/resources/qml/hifi/tablet/Tablet.qml +++ b/interface/resources/qml/hifi/tablet/Tablet.qml @@ -40,6 +40,9 @@ Item { button[key] = properties[key]; }); + // pass a reference to the tabletRoot object to the button. + button.tabletRoot = parent.parent; + return button; } diff --git a/interface/resources/qml/hifi/tablet/TabletButton.qml b/interface/resources/qml/hifi/tablet/TabletButton.qml index 636b6dbebc..f9c668a81f 100644 --- a/interface/resources/qml/hifi/tablet/TabletButton.qml +++ b/interface/resources/qml/hifi/tablet/TabletButton.qml @@ -11,6 +11,7 @@ Item { property bool isActive: false property bool inDebugMode: false property bool isEntered: false + property var tabletRoot; width: 129 height: 129 @@ -118,6 +119,9 @@ Item { } } tabletButton.clicked(); + if (tabletRoot) { + tabletRoot.playButtonClickSound(); + } } onEntered: { console.log("Tablet Button Hovered!"); diff --git a/interface/resources/qml/hifi/tablet/TabletRoot.qml b/interface/resources/qml/hifi/tablet/TabletRoot.qml index f72bbd5c7d..e05f867919 100644 --- a/interface/resources/qml/hifi/tablet/TabletRoot.qml +++ b/interface/resources/qml/hifi/tablet/TabletRoot.qml @@ -1,4 +1,5 @@ import QtQuick 2.0 +import Hifi 1.0 Item { id: tabletRoot @@ -13,6 +14,15 @@ Item { loader.item.url = url; } + SoundEffect { + id: buttonClickSound + source: "../../../sounds/button-click.wav" + } + + function playButtonClickSound() { + buttonClickSound.play(); + } + Loader { id: loader objectName: "loader" diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index 458dc64983..3e0a25d1a2 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -10,8 +10,18 @@ #include +#include +#include #include "ScriptEngineLogging.h" +TabletScriptingInterface::TabletScriptingInterface() { + qmlRegisterType("Hifi", 1, 0, "SoundEffect"); +} + +TabletScriptingInterface::~TabletScriptingInterface() { + qDebug() << "Shutting down TabletScriptingInterface"; +} + QObject* TabletScriptingInterface::getTablet(const QString& tabletId) { std::lock_guard guard(_mutex); @@ -31,7 +41,7 @@ QObject* TabletScriptingInterface::getTablet(const QString& tabletId) { void TabletScriptingInterface::setQmlTabletRoot(QString tabletId, QQuickItem* qmlTabletRoot, QObject* qmlOffscreenSurface) { TabletProxy* tablet = qobject_cast(getTablet(tabletId)); - if (tablet && qmlOffscreenSurface) { + if (tablet) { tablet->setQmlTabletRoot(qmlTabletRoot, qmlOffscreenSurface); } else { qCWarning(scriptengine) << "TabletScriptingInterface::setupTablet() bad tablet object"; @@ -155,6 +165,10 @@ void TabletProxy::updateAudioBar(const double micLevel) { } } +void TabletProxy::updateTabletPosition(glm::vec3 tabletPosition) { + _position.store(tabletPosition); +} + void TabletProxy::emitScriptEvent(QVariant msg) { if (_qmlOffscreenSurface) { QMetaObject::invokeMethod(_qmlOffscreenSurface, "emitScriptEvent", Qt::AutoConnection, Q_ARG(QVariant, msg)); @@ -233,4 +247,46 @@ void TabletButtonProxy::editProperties(QVariantMap properties) { } } +// +// SoundEffect +// + +SoundEffect::~SoundEffect() { + if (_sound) { + _sound->deleteLater(); + } + if (_injector) { + _injector->deleteLater(); + } +} + +QUrl SoundEffect::getSource() const { + return _url; +} + +void SoundEffect::setSource(QUrl url) { + _url = url; + _sound = DependencyManager::get()->getSound(_url); +} + +void SoundEffect::play() { + auto tsi = DependencyManager::get(); + if (tsi) { + TabletProxy* tablet = qobject_cast(tsi->getTablet("com.highfidelity.interface.tablet.system")); + if (tablet) { + AudioInjectorOptions options; + options.position = tablet->getPosition(); + options.localOnly = true; + if (_injector) { + _injector->setOptions(options); + _injector->restart(); + } else { + QByteArray samples = _sound->getByteArray(); + _injector = AudioInjector::playSound(samples, options); + } + } + } +} + #include "TabletScriptingInterface.moc" + diff --git a/libraries/script-engine/src/TabletScriptingInterface.h b/libraries/script-engine/src/TabletScriptingInterface.h index 265ff48fd5..29bfe6a98a 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.h +++ b/libraries/script-engine/src/TabletScriptingInterface.h @@ -10,6 +10,7 @@ #define hifi_TabletScriptingInterface_h #include +#include #include #include @@ -17,11 +18,17 @@ #include #include +#include +#include +#include + #include +#include class TabletProxy; class TabletButtonProxy; +class AudioInjector; /**jsdoc * @namespace Tablet @@ -29,6 +36,9 @@ class TabletButtonProxy; class TabletScriptingInterface : public QObject, public Dependency { Q_OBJECT public: + TabletScriptingInterface(); + virtual ~TabletScriptingInterface(); + /**jsdoc * Creates or retruns a new TabletProxy and returns it. * @function Tablet.getTablet @@ -85,12 +95,23 @@ public: Q_INVOKABLE void removeButton(QObject* tabletButtonProxy); /**jsdoc - * @function TabletProxy#updateAudioBar * Updates the audio bar in tablet to reflect latest mic level + * @function TabletProxy#updateAudioBar * @param micLevel {double} mic level value between 0 and 1 */ Q_INVOKABLE void updateAudioBar(const double micLevel); + + /**jsdoc + * Updates the tablet's position in world space. This is necessary for the tablet + * to emit audio with the correct spatialization. + * @function TabletProxy#updateTabletPosition + * @param position {vec3} tablet position in world space. + */ + Q_INVOKABLE void updateTabletPosition(glm::vec3 tabletPosition); + + glm::vec3 getPosition() const { return _position; } + QString getName() const { return _name; } /**jsdoc @@ -120,6 +141,7 @@ protected: std::vector> _tabletButtonProxies; QQuickItem* _qmlTabletRoot { nullptr }; QObject* _qmlOffscreenSurface { nullptr }; + std::atomic _position; }; /**jsdoc @@ -168,4 +190,24 @@ protected: QVariantMap _properties; }; + +// Exposed to qml only, not java script +class SoundEffect : public QQuickItem { + Q_OBJECT + Q_PROPERTY(QUrl source READ getSource WRITE setSource) +public: + + virtual ~SoundEffect(); + + QUrl getSource() const; + void setSource(QUrl url); + + Q_INVOKABLE void play(); +protected: + QUrl _url; + SharedSoundPointer _sound; + AudioInjector* _injector { nullptr }; +}; + + #endif // hifi_TabletScriptingInterface_h diff --git a/scripts/system/libraries/WebTablet.js b/scripts/system/libraries/WebTablet.js index 42fbbe106a..d6a465c362 100644 --- a/scripts/system/libraries/WebTablet.js +++ b/scripts/system/libraries/WebTablet.js @@ -171,3 +171,8 @@ WebTablet.unpickle = function (string) { tablet.__proto__ = WebTablet.prototype; return tablet; }; + +WebTablet.prototype.getPosition = function () { + return Overlays.getProperty(this.webOverlayID, "position"); +} + diff --git a/scripts/system/tablet-ui/tabletUI.js b/scripts/system/tablet-ui/tabletUI.js index 4f2b5ed94a..d3561185f0 100644 --- a/scripts/system/tablet-ui/tabletUI.js +++ b/scripts/system/tablet-ui/tabletUI.js @@ -78,7 +78,7 @@ accumulatedLevel = AVERAGING_RATIO * accumulatedLevel + (1 - AVERAGING_RATIO) * (MyAvatar.audioLoudness); // Convert to log base 2 var logLevel = Math.log(accumulatedLevel + 1) / LOG2; - + if (logLevel <= LOUDNESS_FLOOR) { micLevel = logLevel / LOUDNESS_FLOOR * LOUDNESS_SCALE; } else { @@ -92,9 +92,12 @@ Script.setInterval(function() { if (tabletShown) { - var currentMicLevel = getMicLevel(); - var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); - tablet.updateAudioBar(currentMicLevel); + var currentMicLevel = getMicLevel(); + var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system"); + tablet.updateAudioBar(currentMicLevel); + if (UIWebTablet) { + tablet.updateTabletPosition(UIWebTablet.getPosition()); + } } }, MIC_LEVEL_UPDATE_INTERVAL_MS); From 7198cd13b5a76c6799bbf39ed9f5a6c006749d66 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 5 Jan 2017 13:56:04 -0800 Subject: [PATCH 2/3] added button click wav --- interface/resources/sounds/button-click.wav | Bin 0 -> 26684 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 interface/resources/sounds/button-click.wav diff --git a/interface/resources/sounds/button-click.wav b/interface/resources/sounds/button-click.wav new file mode 100644 index 0000000000000000000000000000000000000000..82de1bea286db6c5a270c9f118647996a0d7cdfe GIT binary patch literal 26684 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 E0ZyNBRsaA1 literal 0 HcmV?d00001 From 70078b0e78de6a067a11df4ab0802700534a8e83 Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Thu, 5 Jan 2017 15:04:16 -0800 Subject: [PATCH 3/3] Fix for linux build --- libraries/script-engine/src/TabletScriptingInterface.cpp | 2 +- libraries/script-engine/src/TabletScriptingInterface.h | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/script-engine/src/TabletScriptingInterface.cpp b/libraries/script-engine/src/TabletScriptingInterface.cpp index 3e0a25d1a2..0f2d382525 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.cpp +++ b/libraries/script-engine/src/TabletScriptingInterface.cpp @@ -166,7 +166,7 @@ void TabletProxy::updateAudioBar(const double micLevel) { } void TabletProxy::updateTabletPosition(glm::vec3 tabletPosition) { - _position.store(tabletPosition); + _position.set(tabletPosition); } void TabletProxy::emitScriptEvent(QVariant msg) { diff --git a/libraries/script-engine/src/TabletScriptingInterface.h b/libraries/script-engine/src/TabletScriptingInterface.h index 29bfe6a98a..61e3205dc3 100644 --- a/libraries/script-engine/src/TabletScriptingInterface.h +++ b/libraries/script-engine/src/TabletScriptingInterface.h @@ -24,7 +24,7 @@ #include #include - +#include class TabletProxy; class TabletButtonProxy; @@ -110,7 +110,7 @@ public: */ Q_INVOKABLE void updateTabletPosition(glm::vec3 tabletPosition); - glm::vec3 getPosition() const { return _position; } + glm::vec3 getPosition() const { return _position.get(); } QString getName() const { return _name; } @@ -141,7 +141,7 @@ protected: std::vector> _tabletButtonProxies; QQuickItem* _qmlTabletRoot { nullptr }; QObject* _qmlOffscreenSurface { nullptr }; - std::atomic _position; + ThreadSafeValueCache _position; }; /**jsdoc