Warning, /multimedia/kid3/src/qml/script/ReplayGain2SoundCheck.qml is written in an unsupported language. File is not indexed.
0001 /**
0002 * \file ReplayGain2SoundCheck.qml
0003 * Create iTunNORM SoundCheck information from replay gain frames.
0004 * Replay gain tags can be generated e.g. using "mp3gain -s i".
0005 *
0006 * \b Project: Kid3
0007 * \author Urs Fleisch
0008 * \date 28 Feb 2015
0009 *
0010 * Copyright (C) 2015-2017 Urs Fleisch
0011 *
0012 * This program is free software; you can redistribute it and/or modify
0013 * it under the terms of the GNU Lesser General Public License as published by
0014 * the Free Software Foundation; version 3.
0015 *
0016 * This program is distributed in the hope that it will be useful,
0017 * but WITHOUT ANY WARRANTY; without even the implied warranty of
0018 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0019 * GNU Lesser General Public License for more details.
0020 *
0021 * You should have received a copy of the GNU Lesser General Public License
0022 * along with this program. If not, see <http://www.gnu.org/licenses/>.
0023 */
0024
0025 import Kid3 1.1
0026
0027 Kid3Script {
0028 onRun: {
0029 function doWork() {
0030 if (app.selectionInfo.tag(Frame.Tag_2).tagFormat) {
0031 var rgStr = app.getFrame(tagv2, "replaygain_track_gain")
0032 if (rgStr) {
0033 var rg = parseFloat(rgStr)
0034 if (!isNaN(rg)) {
0035 // Calculate SoundCheck value and insert a sequence of 10
0036 // hex zero-padded to 8 digits values into the iTunNORM frame.
0037 var scVal = parseInt(Math.pow(10, -rg / 10) * 1000).toString(16)
0038 var pad = "00000000"
0039 scVal = " " + (pad + scVal).slice(-pad.length)
0040 var sc = new Array(11).join(scVal)
0041 console.log("Set iTunNORM to %1 in %2".
0042 arg(sc).arg(app.selectionInfo.fileName))
0043 app.setFrame(tagv2, "iTunNORM", sc)
0044 } else {
0045 console.log("Value %1 is not a float in %2".
0046 arg(rgStr).arg(app.selectionInfo.fileName))
0047 }
0048 }
0049 }
0050 if (!nextFile()) {
0051 if (isStandalone()) {
0052 // Save the changes if the script is started stand-alone, not from Kid3.
0053 app.saveDirectory()
0054 }
0055 Qt.quit()
0056 } else {
0057 setTimeout(doWork, 1)
0058 }
0059 }
0060
0061 firstFile()
0062 doWork()
0063 }
0064 }