From da02e74f2115cb76a6435fab5ab2667a8c622b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20G=C3=B6ttgens?= Date: Sun, 21 Apr 2024 11:13:43 +0200 Subject: [PATCH] feat(legacy): visual cue point editor (#2947) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A visual cue point editor in the track editor view. This view displays the track as a waveform and allows you to set where the in- and out-cue points are set. These cue points determine the start and end points of the track. --------- Co-authored-by: Thomas Göttgens Co-authored-by: Kyle Robbertze --- legacy/application/assets.json | 19 +- .../controllers/LibraryController.php | 6 + .../plugins/PageLayoutInitPlugin.php | 7 + legacy/application/forms/EditAudioMD.php | 14 +- .../views/scripts/library/edit-file-md.phtml | 215 +- legacy/public/css/images/slider.png | Bin 0 -> 121243 bytes legacy/public/css/playlist_builder.css | 2 +- legacy/public/css/styles.css | 92 + legacy/public/js/airtime/library/spl.js | 4 +- legacy/public/js/wavesurfer/cursor.js | 404 ++ legacy/public/js/wavesurfer/cursor.min.js | 7 + legacy/public/js/wavesurfer/libretime.js | 627 ++ legacy/public/js/wavesurfer/minimap.js | 424 ++ legacy/public/js/wavesurfer/minimap.min.js | 7 + legacy/public/js/wavesurfer/regions.js | 1200 ++++ legacy/public/js/wavesurfer/regions.min.js | 7 + legacy/public/js/wavesurfer/timeline.js | 640 ++ legacy/public/js/wavesurfer/timeline.min.js | 7 + legacy/public/js/wavesurfer/wavesurfer.js | 5774 +++++++++++++++++ legacy/public/js/wavesurfer/wavesurfer.min.js | 7 + 20 files changed, 9420 insertions(+), 43 deletions(-) create mode 100755 legacy/public/css/images/slider.png create mode 100644 legacy/public/js/wavesurfer/cursor.js create mode 100644 legacy/public/js/wavesurfer/cursor.min.js create mode 100644 legacy/public/js/wavesurfer/libretime.js create mode 100644 legacy/public/js/wavesurfer/minimap.js create mode 100644 legacy/public/js/wavesurfer/minimap.min.js create mode 100644 legacy/public/js/wavesurfer/regions.js create mode 100644 legacy/public/js/wavesurfer/regions.min.js create mode 100644 legacy/public/js/wavesurfer/timeline.js create mode 100644 legacy/public/js/wavesurfer/timeline.min.js create mode 100644 legacy/public/js/wavesurfer/wavesurfer.js create mode 100644 legacy/public/js/wavesurfer/wavesurfer.min.js diff --git a/legacy/application/assets.json b/legacy/application/assets.json index ad0eaa857..05739af05 100644 --- a/legacy/application/assets.json +++ b/legacy/application/assets.json @@ -26,7 +26,7 @@ "css/media_library.css": "e1982d1f673543f7730898fb49450f8b", "css/player-form.css": "e08a4545715fc56b75c845b44a5b2a1c", "css/player.css": "904bc7aede4d5f0372468528d88094f1", - "css/playlist_builder.css": "e92ef56ddffca440a7741934edbb7f7f", + "css/playlist_builder.css": "9e35f1b7a1e79a7a73e7e9666d5a711f", "css/playouthistory.css": "983cc1bac566b18b745b6e0da9ef3c0c", "css/plupload.queue.css": "0acfb6b54c18654452727d4abf297394", "css/pro_dropdown_3.css": "9848a27dad960c2218751c1656e9206a", @@ -43,7 +43,7 @@ "css/show_analytics.css": "4393c521308277447afabe8791779bf1", "css/showbuilder.css": "4421c01b5c2dfb03f8d06dd6023b4bd7", "css/station_podcast.css": "88e9b38ead71eddc69ef50bfc8cb2d0d", - "css/styles.css": "6890a553402f44cefc7c6915f38aa657", + "css/styles.css": "29ce2292b2c007e86d192d0deeaf88ad", "css/tipsy/jquery.tipsy.css": "b13517583583f83ed7d5fc067a0c9372", "css/tracktypes.css": "94c94817a8505ff4dfcd090987859a7e", "css/users.css": "94c94817a8505ff4dfcd090987859a7e", @@ -63,7 +63,7 @@ "js/airtime/library/plupload.js": "0f6be5b133650828b9ffc74e7852dc89", "js/airtime/library/podcast.js": "4dedd84cb571cdba2401bfb8ba621e69", "js/airtime/library/publish.js": "ab3a1452dd332cdb0773241a1c17b7e0", - "js/airtime/library/spl.js": "c4cbac0c237b548064685a2cb16d3fa2", + "js/airtime/library/spl.js": "5bddd886303ff15e8b78e79b30a9e56f", "js/airtime/listenerstat/listenerstat.js": "a3733dae8f9549668125ec9852d356ed", "js/airtime/listenerstat/showlistenerstat.js": "7cf0c375420f1c8471d304bc8758b2cd", "js/airtime/login/login.js": "7278cf49618791d75bacce38dd1b1d46", @@ -180,5 +180,16 @@ "js/waveformplaylist/playout.js": "7dfc5fe760f3c6739e38499df7b61e47", "js/waveformplaylist/time_scale.js": "74e0e17e1c8cd597449220c98de408ba", "js/waveformplaylist/track.js": "5456e6081ffedf55a9e38571bc178781", - "js/waveformplaylist/track_render.js": "e371b582b23e4b618e039f096d2f0570" + "js/waveformplaylist/track_render.js": "e371b582b23e4b618e039f096d2f0570", + "js/wavesurfer/cursor.js": "8ed17a7437f3ec84972d15d0073249b2", + "js/wavesurfer/cursor.min.js": "831165862b629e615cf59112fa00d963", + "js/wavesurfer/libretime.js": "17133cacf09fc204a572b56c99d44278", + "js/wavesurfer/minimap.js": "c17dd315386006bb3cffdabb5f715c7b", + "js/wavesurfer/minimap.min.js": "90b2f2d1d1b4eb189d1a9c3c27dcb4f7", + "js/wavesurfer/regions.js": "aafe4f696d3da50c976d11e472fd56d1", + "js/wavesurfer/regions.min.js": "2ed2f8b5880beee568942000a6139e85", + "js/wavesurfer/timeline.js": "0bd70779070513c2a4f34237a0f9f573", + "js/wavesurfer/timeline.min.js": "90ea16b23cacebfad10cad42f94403d0", + "js/wavesurfer/wavesurfer.js": "9e2ced8a136449f4fd78911b0f01f6ed", + "js/wavesurfer/wavesurfer.min.js": "42ebd7fdd574dfe8cae587145751a1f2" } diff --git a/legacy/application/controllers/LibraryController.php b/legacy/application/controllers/LibraryController.php index f2311f532..dfd50f570 100644 --- a/legacy/application/controllers/LibraryController.php +++ b/legacy/application/controllers/LibraryController.php @@ -400,6 +400,12 @@ class LibraryController extends Zend_Controller_Action $this->view->artist_name = $file->getPropelOrm()->getDbArtistName(); $this->view->filePath = $file->getPropelOrm()->getDbFilepath(); $this->view->artwork = $file->getPropelOrm()->getDbArtwork(); + $this->view->replay_gain = $file->getPropelOrm()->getDbReplayGain(); + $this->view->cuein = $file->getPropelOrm()->getDbCuein(); + $this->view->cueout = $file->getPropelOrm()->getDbCueout(); + $this->view->format = $file->getPropelOrm()->getDbFormat(); + $this->view->bit_rate = $file->getPropelOrm()->getDbBitRate(); + $this->view->sample_rate = $file->getPropelOrm()->getDbSampleRate(); $this->view->html = $this->view->render('library/edit-file-md.phtml'); } diff --git a/legacy/application/controllers/plugins/PageLayoutInitPlugin.php b/legacy/application/controllers/plugins/PageLayoutInitPlugin.php index 991493aa1..76dc771e2 100644 --- a/legacy/application/controllers/plugins/PageLayoutInitPlugin.php +++ b/legacy/application/controllers/plugins/PageLayoutInitPlugin.php @@ -217,6 +217,13 @@ class PageLayoutInitPlugin extends Zend_Controller_Plugin_Abstract ->appendFile(Assets::url('js/airtime/common/common.js'), 'text/javascript') ->appendFile(Assets::url('js/airtime/common/audioplaytest.js'), 'text/javascript'); + // include wavesurfer.js for waveform display + $view->headScript()->appendFile(Assets::url('js/wavesurfer/wavesurfer.min.js'), 'text/javascript') + ->appendFile(Assets::url('js/wavesurfer/timeline.min.js'), 'text/javascript') + ->appendFile(Assets::url('js/wavesurfer/regions.min.js'), 'text/javascript') + ->appendFile(Assets::url('js/wavesurfer/cursor.min.js'), 'text/javascript') + ->appendFile(Assets::url('js/wavesurfer/libretime.js'), 'text/javascript'); + $user = Application_Model_User::getCurrentUser(); if (!is_null($user)) { $userType = $user->getType(); diff --git a/legacy/application/forms/EditAudioMD.php b/legacy/application/forms/EditAudioMD.php index fc3539ae6..2247e2d21 100644 --- a/legacy/application/forms/EditAudioMD.php +++ b/legacy/application/forms/EditAudioMD.php @@ -8,9 +8,11 @@ class Application_Form_EditAudioMD extends Zend_Form { // Set the method for the display form to POST $this->setMethod('post'); + $this->setAttrib('id', 'track_edit_' . $p_id); $file_id = new Zend_Form_Element_Hidden('file_id'); $file_id->setValue($p_id); + $file_id->setDecorators(['ViewHelper']); $file_id->addDecorator('HtmlTag', ['tag' => 'div', 'style' => 'display:none']); $file_id->removeDecorator('Label'); $file_id->setAttrib('class', 'obj_id'); @@ -188,6 +190,14 @@ class Application_Form_EditAudioMD extends Zend_Form ]); $this->addElement($mood); + // Add replay gain field + $replay_gain = new Zend_Form_Element_Hidden('replay_gain'); + $replay_gain->class = 'input_text replay_gain_' . $p_id; + $replay_gain->setLabel(_('Replay Gain:')) + ->addDecorator('HtmlTag', ['tag' => 'div', 'style' => 'display:none']) + ->removeDecorator('Label'); + $this->addElement($replay_gain); + // Add bmp field $bpm = new Zend_Form_Element_Text('bpm'); $bpm->class = 'input_text'; @@ -242,7 +252,7 @@ class Application_Form_EditAudioMD extends Zend_Form $validCuePattern = '/^(?:[0-9]{1,2}:)?(?:[0-9]{1,2}:)?[0-9]{1,6}(\.\d{1,6})?$/'; $cueIn = new Zend_Form_Element_Text('cuein'); - $cueIn->class = 'input_text'; + $cueIn->class = 'input_text cuein_' . $p_id; $cueIn->setLabel('Cue In:'); $cueInValidator = Application_Form_Helper_ValidationTypes::overrideRegexValidator( $validCuePattern, @@ -252,7 +262,7 @@ class Application_Form_EditAudioMD extends Zend_Form $this->addElement($cueIn); $cueOut = new Zend_Form_Element_Text('cueout'); - $cueOut->class = 'input_text'; + $cueOut->class = 'input_text cueout_' . $p_id; $cueOut->setLabel('Cue Out:'); $cueOutValidator = Application_Form_Helper_ValidationTypes::overrideRegexValidator( $validCuePattern, diff --git a/legacy/application/views/scripts/library/edit-file-md.phtml b/legacy/application/views/scripts/library/edit-file-md.phtml index fa26736d6..06a7ebd9f 100644 --- a/legacy/application/views/scripts/library/edit-file-md.phtml +++ b/legacy/application/views/scripts/library/edit-file-md.phtml @@ -1,39 +1,186 @@ -artwork, 256); ?> +artwork, 256); + +$baseUrl = Config::getBasePath(); + +$get_replay_gain = Application_Model_Preference::getReplayGainModifier(); +if (!Application_Model_Preference::GetEnableReplayGain() ) { + $get_replay_gain = 0; +} +$analogMeter = true; +?>
-
- permissionDenied) { ?>

- permissionDenied) { - echo(_("Viewing ")); - } else { - echo(_("Editing ")); - } */ - ?> -
-
-
-

title); ?>

-

artist_name); ?>

-
-
-
-
-
-
- - -
-
-
-
-
-
-
- Remove +
+ permissionDenied) { ?>

+ permissionDenied) { + echo(_("Viewing ")); + } else { + echo(_("Editing ")); + } */ + ?> +
+
+
+

title); ?>

+

artist_name); ?>

-
- form; ?> +
+
+
+ + +
+
+
+
+
+
+
+ Remove +
+
+
+
+ form; ?> +
+
+
+
+
+
+
+ + +
+
+
+ +
+
+ +
+ + + +
+ +
+ + + +
+

+
+
+
+
+
+
+
+ +
+
+
+ diff --git a/legacy/public/css/images/slider.png b/legacy/public/css/images/slider.png new file mode 100755 index 0000000000000000000000000000000000000000..89bbe2556bfa226a11dc7217814aac5fd5cdfb56 GIT binary patch literal 121243 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 brbo;v=d8&hPTcM|iNG&)H61Kb)hh5mwn71J literal 0 HcmV?d00001 diff --git a/legacy/public/css/playlist_builder.css b/legacy/public/css/playlist_builder.css index e074436e3..0dc07ee2e 100644 --- a/legacy/public/css/playlist_builder.css +++ b/legacy/public/css/playlist_builder.css @@ -658,7 +658,7 @@ li.spl_empty { .collapsible-header.visible .arrow-icon { transform: rotate(90deg); } -.smart-block-advanced { +.smart-block-advanced, .visual-waveform-editor { display: none; } .smart-block-form .smart-block-advanced dt { diff --git a/legacy/public/css/styles.css b/legacy/public/css/styles.css index 9120cd33b..6e97b930d 100644 --- a/legacy/public/css/styles.css +++ b/legacy/public/css/styles.css @@ -4350,3 +4350,95 @@ body.droppable .artwork-upload .artwork-preview { border: 2px dashed lightblue; z-index: 9999; } + +/* Cue editor GUI starts here */ + +.track-file-details { + font-size: 14px; + line-height: 2; +} + +.track-window { + top: 285px; + width: 480px; +} + +/* -webkit-appearance: none; +-moz-appearance: none; +-ms-appearance: none; +appearance: none; */ +textarea, +input { + outline: none; +} + +input:focus, +select:focus, +textarea:focus, +button:focus { + outline: none; +} + +.navtt { + margin-bottom: 18px; + margin-left: 0; + list-style: none; +} + +.navtt > li > a { + display: block; +} + +li { + line-height: 18px; +} + +.navtt-content.active { + display: block; +} + +.navtt-content.hide { + display: none; +} + +.btn-control-player { + padding: 5px 7px 5px 10px; + font-size: 14px; + line-height: 18px; +} + +.zoom-container { + margin-top: 15px; +} + +.track-toolbar { + padding: 0 !important; +} + +.track-timer { + border-radius: 5px; + background-image: none; + -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); + -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); + box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.3), 0 1px 0 rgba(255, 255, 255, 0.2); + /*background-color: #727272;*/ + outline: 0; + border-top-color: #333333; + /*background: #246B86;*/ + + width: 65px; + /*padding: 5px 7px 5px 10px;*/ + font-size: 14px; + line-height: 18px; + background-color: #666666; +} + +.track-timer-input { + background-color: transparent; + border: none; + width: 75px; + font-size: 14px; + color: #ffffff; +} + +/* Track Edit - Cue and Gain editor GUI ends here */ diff --git a/legacy/public/js/airtime/library/spl.js b/legacy/public/js/airtime/library/spl.js index 2802b9480..2d4bda2b1 100644 --- a/legacy/public/js/airtime/library/spl.js +++ b/legacy/public/js/airtime/library/spl.js @@ -1160,8 +1160,8 @@ var AIRTIME = (function (AIRTIME) { }); newTab.wrapper.find(".edit-md-dialog").on("keyup", function (event) { - // Don't submit if the user hits enter in a textarea (description) - if ($(event.target).is("input") && event.keyCode === 13) { + // Don't submit if the user hits enter in a textarea (description) or in the waveform editor + if ($(event.target).is("form input") && event.keyCode === 13) { newTab.wrapper.find(".md-save").click(); } }); diff --git a/legacy/public/js/wavesurfer/cursor.js b/legacy/public/js/wavesurfer/cursor.js new file mode 100644 index 000000000..06e7edc85 --- /dev/null +++ b/legacy/public/js/wavesurfer/cursor.js @@ -0,0 +1,404 @@ +/*! + * wavesurfer.js cursor plugin 4.6.0 (2024-02-05) + * https://wavesurfer-js.org + * @license BSD-3-Clause + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define("WaveSurfer", [], factory); + else if(typeof exports === 'object') + exports["WaveSurfer"] = factory(); + else + root["WaveSurfer"] = root["WaveSurfer"] || {}, root["WaveSurfer"]["cursor"] = factory(); +})(this, () => { +return /******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./src/plugin/cursor/index.js": +/*!************************************!*\ + !*** ./src/plugin/cursor/index.js ***! + \************************************/ +/***/ ((module, exports) => { + + + +Object.defineProperty(exports, "__esModule", ({ + value: true +})); +exports["default"] = void 0; +function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); } +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } +function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } } +function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } +function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : String(i); } +function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); } +/** + * @typedef {Object} CursorPluginParams + * @property {?boolean} deferInit Set to true to stop auto init in `addPlugin()` + * @property {boolean} hideOnBlur=true Hide the cursor when the mouse leaves the + * waveform + * @property {string} width='1px' The width of the cursor + * @property {string} color='black' The color of the cursor + * @property {string} opacity='0.25' The opacity of the cursor + * @property {string} style='solid' The border style of the cursor + * @property {number} zIndex=3 The z-index of the cursor element + * @property {object} customStyle An object with custom styles which are applied + * to the cursor element + * @property {boolean} showTime=false Show the time on the cursor. + * @property {object} customShowTimeStyle An object with custom styles which are + * applied to the cursor time element. + * @property {string} followCursorY=false Use `true` to make the time on + * the cursor follow the x and the y-position of the mouse. Use `false` to make the + * it only follow the x-position of the mouse. + * @property {function} formatTimeCallback Formats the timestamp on the cursor. + */ +/** + * Displays a thin line at the position of the cursor on the waveform. + * + * @implements {PluginClass} + * @extends {Observer} + * @example + * // es6 + * import CursorPlugin from 'wavesurfer.cursor.js'; + * + * // commonjs + * var CursorPlugin = require('wavesurfer.cursor.js'); + * + * // if you are using