SYMBOL INDEX (272 symbols across 33 files) FILE: app.js function App (line 3) | function App() { class LayeredCanvas (line 615) | class LayeredCanvas extends HTMLCanvasElement { method new2d (line 616) | static new2d(canvas, alpha = true, desynchronized = true) { method new (line 620) | static new(canvas, contextType = '2d', contextAttributes) { method init (line 625) | init(contextType, contextAttributes) { method resetHandlers (line 630) | resetHandlers(handlers) { method register (line 640) | register(handler, priority = null) { method unregister (line 649) | unregister(handler) { method render (line 652) | render() { FILE: core/app_analyser.js function _Analyser (line 14) | function _Analyser(parent) { FILE: core/app_audioplayer.js function _AudioPlayer (line 7) | function _AudioPlayer(parent) { FILE: core/app_beatbar.js function _BeatBar (line 8) | function _BeatBar(parent) { FILE: core/app_hscrollbar.js function _HscrollBar (line 5) | function _HscrollBar(parent) { FILE: core/app_io.js function _IO (line 8) | function _IO(parent) { FILE: core/app_keyboard.js function _Keyboard (line 8) | function _Keyboard(parent) { FILE: core/app_midiaction.js function _MidiAction (line 7) | function _MidiAction(parent) { FILE: core/app_midiplayer.js function _MidiPlayer (line 5) | function _MidiPlayer(parent) { FILE: core/app_spectrogram.js function _Spectrogram (line 6) | function _Spectrogram(parent) { FILE: core/app_timebar.js function _TimeBar (line 7) | function _TimeBar(parent) { FILE: dataProcess/AI/SpectralClustering.js function SpectralClustering (line 6) | function SpectralClustering(feats, numClusters, affinityFunc) { function transposeAndNormalize (line 29) | function transposeAndNormalize(eigenVectors, BLOCK_SIZE = 1024) { function clusterQR (line 85) | function clusterQR(flatMatrix, n, k) { class TriangleMatrix (line 201) | class TriangleMatrix { method constructor (line 202) | constructor(size) { method cosineAffinityExp (line 208) | static cosineAffinityExp(featureA, featureB) { method Lsym (line 224) | static Lsym(features, func = TriangleMatrix.cosineAffinityExp) { method _index (line 253) | _index(i, j) { method mult_mat_optimized (line 264) | mult_mat_optimized(Q_in, Z_out) { method orthogonalIteration (line 292) | static orthogonalIteration(A, numVectors, numIterations = 30) { function SchmidtInPlace (line 323) | function SchmidtInPlace(V) { FILE: dataProcess/AI/postprocess.js function createNotes (line 1) | function createNotes( function get_infered_onsets (line 138) | function get_infered_onsets(onsets, frames, n_diff = 2) { function findPeak (line 167) | function findPeak(x2d, threshold = 0) { FILE: dataProcess/AI/septimbre_worker.js function clusterNotes (line 44) | function clusterNotes(note_events, embTensor, frameTensor, k=2) { FILE: dataProcess/ANA.js function autoNoteAlign (line 33) | function autoNoteAlign(noteSeq, spectrum, minLen = 2) { FILE: dataProcess/CQT/cqt.js function cqt (line 2) | function cqt(channels, tNum, fmin, useGPU = false) { FILE: dataProcess/CQT/cqt_worker.js class CQT (line 4) | class CQT { method blackmanHarris (line 10) | static blackmanHarris(N) { method constructor (line 34) | constructor(fs, fmin = 32.70319566257483, octaves = 7, bins_per_octave... method iniKernel (line 52) | static iniKernel(Q, fs, fmin, bins_per_octave = 12, binNum = 84) { method cqt (line 79) | cqt(x, hop, raw = null) { method norm (line 104) | static norm(s) { method initWebGPU (line 130) | async initWebGPU(workgroupsize = 256) { method cqt_GPU (line 266) | cqt_GPU(audioData, hop) { method norm_CPU (line 317) | async norm_CPU(buffer, numFrames) { method freeGPU (line 339) | freeGPU() { FILE: dataProcess/NNLS.js class NNLSSolver (line 4) | class NNLSSolver { method constructor (line 11) | constructor(K, M, lambda = 1e-4, buffer_r = null) { method solve (line 34) | solve(A, b) { method _solveSubProblem (line 99) | _solveSubProblem(A, b, n, pIdx, s) { method _updateResidual (line 146) | _updateResidual(A, oldC, newS, n, pIdx) { method _fullResidualUpdate (line 156) | _fullResidualUpdate(A, b, c, n, pIdx) { method calcError (line 167) | calcError() { FILE: dataProcess/analyser.js class FreqTable (line 1) | class FreqTable extends Float32Array { method constructor (line 2) | constructor(A4 = 440) { method A4 (line 6) | set A4(A4) { // 负数强制更新 method A4 (line 26) | get A4() { return this[45]; } class NoteAnalyser (line 29) | class NoteAnalyser { // 负责解析频谱数据 method constructor (line 34) | constructor(df, freq) { method A4 (line 42) | set A4(freq) { method A4 (line 46) | get A4() { method updateRange (line 55) | updateRange(semiR = 0.667, leakR = 1, oversample = 32) { method mel (line 103) | mel(real, imag, buffer = null) { method mel2 (line 115) | mel2(eng, buffer = null) { method normalize (line 129) | static normalize(engSpectrum) { method Tonality (line 152) | static Tonality(noteTable) { method autoFill (line 204) | static autoFill(noteTable, threshold, from = 0, to = 0) { FILE: dataProcess/bpmEst.js class SIGNAL (line 8) | class SIGNAL { method findPeaks (line 15) | static findPeaks(arr, prominence = 0) { method parabolicInterpolation (line 42) | static parabolicInterpolation(y1, y2, y3) { method filter (line 66) | static filter(arr, b, a, inplace = false, reverse = false) { method autoCorr (line 101) | static autoCorr(arr, points, result = undefined) { method autoCorrSeg (line 126) | static autoCorrSeg(arr, points, hopInWin, hop = 1) { method createSynthesisWindow (line 187) | static createSynthesisWindow(analysisWindow, hop) { class Beat (line 212) | class Beat { method fs2FFTN (line 219) | static fs2FFTN(fs, sec = 50) { method compressOutliers (line 231) | static compressOutliers(onsetEnv, percent = 0.99, margin_ratio = 1.3) { method detrend (line 254) | static detrend(onsetEnv) { method onsetNorm (line 269) | static onsetNorm(onsetEnv) { method extractOnset (line 292) | static extractOnset(spectrogram, a = 0.8) { method floatGCD (line 322) | static floatGCD(idx, N) { method corrBPM (line 355) | static corrBPM(corr, sr, BPMstd = 1, BPMu = 110) { method tempo (line 401) | static tempo(onsetEnv, onset_sr, minBPM, winSec, hopSec = 1, centerBPM... method EllisBeatTrack (line 457) | static EllisBeatTrack(onsetEnv, onset_sr, tightness = 100, bpm = -110,... method beatLocalScore (line 496) | static beatLocalScore(onsetEnvelope, framesPerBeat) { method beatTrackDp (line 559) | static beatTrackDp(localscore, framesPerBeat, frameRange = [1, Infinit... method getLastBeat (line 631) | static getLastBeat(cumscore) { method PLP (line 722) | static PLP(onsetEnv, onset_sr, rangeBPM = [40, 200], winLen, hopLen, p... method PLPprior (line 792) | static PLPprior(BPMt = [], std = 0.2) { method beatStrength (line 810) | static beatStrength(onsetEnv, beatIndices, winLen = 5) { method rhythmicPattern (line 829) | static rhythmicPattern(beatStrength, patterns = [2, 3, 4]) { method detectDownbeats (line 871) | static detectDownbeats(beatStrength, meters = [2, 3, 4]) { FILE: dataProcess/fft_real.js class realFFT (line 4) | class realFFT { method reverseBits (line 10) | static reverseBits(N) { method ComplexMul (line 34) | static ComplexMul(a = 0, b = 0, c = 0, d = 0) { method ComplexAbs (line 43) | static ComplexAbs(r, i, l) { method constructor (line 56) | constructor(N, window = 'hanning') { method initWindow (line 74) | initWindow() { method ini (line 97) | ini(N) { method _fftOther (line 113) | _fftOther() { method fft (line 144) | fft(input, offset = 0) { method ifft (line 178) | ifft(real, imag) { FILE: dataProcess/stftGPU.js class STFTGPU (line 4) | class STFTGPU { method reverseBits (line 5) | static reverseBits(N) { method constructor (line 16) | constructor(fftN = 8192, hopSize) { method initWebGPU (line 21) | async initWebGPU(workgroup_size_pow = 8) { // 最大为8 method stft (line 196) | stft(audioBuffer) { method readGPU (line 267) | readGPU(buffer = this.outputBuffer) { method free (line 285) | free() { FILE: lib/beatBar.js class aMeasure (line 2) | class aMeasure { method constructor (line 9) | constructor(beatNum = 4, beatUnit = 4, interval = 2000) { method fromBpm (line 20) | static fromBpm(beatNum, beatUnit, bpm) { method copy (line 24) | copy(obj) { method bpm (line 31) | get bpm() { method bpm (line 34) | set bpm(value) { method isEqual (line 37) | isEqual(other) { class eMeasure (line 43) | class eMeasure extends aMeasure { method constructor (line 52) | constructor(id = 0, start = 0, beatNum, beatUnit, interval) { method baseOn (line 70) | static baseOn(base, id, measure = undefined) { class Beats (line 75) | class Beats extends Array { method constructor (line 80) | constructor(maxTime = 60000) { method getBaseIndex (line 91) | getBaseIndex(at, timeMode = false) { method iterator (line 128) | iterator(at, timeMode = false) { // 由于在绘制更新中使用,故没有复用getBaseIndex以加速运行 method getMeasure (line 145) | getMeasure(at, timeMode = false) { method setMeasure (line 161) | setMeasure(at, measure = undefined, timeMode = false, returnIdx = fals... method check (line 188) | check(merge = true) { method delete (line 206) | delete(at, timeMode = false) { method add (line 222) | add(at, timeMode = false) { method copy (line 234) | copy(beatArray) { method [Symbol.iterator] (line 104) | [Symbol.iterator](index = 0, baseAt = 0) { FILE: lib/fakeAudio.js function FakeAudio (line 10) | function FakeAudio(duration = Infinity) { FILE: lib/midi.js class midiEvent (line 7) | class midiEvent { method #constructor_args (line 18) | #constructor_args(ticks, code, value) { method #constructor_obj (line 30) | #constructor_obj(eventObj, reference = true) { method constructor (line 47) | constructor() { method type (line 58) | get type() { method export (line 69) | export(current_tick = 0, channel = 0) { method note (line 79) | static note(at, duration, note, intensity) { method instrument (line 98) | static instrument(at, instrument) { method control (line 109) | static control(at, id, Value) { method tempo (line 116) | static tempo(at, bpm) { method time_signature (line 124) | static time_signature(at, numerator, denominator) { method port (line 137) | static port(port = 0) { class mtrk (line 146) | class mtrk { method constrain (line 148) | static constrain(value, min = 0, max = 127) { return Math.min(max, Mat... method tick_hex (line 155) | static tick_hex(ticknum) { method string_hex (line 172) | static string_hex(str, maxBytes = -1) { method hex_string (line 187) | static hex_string(bytes) { method number_hex (line 198) | static number_hex(num, x = -1) { method constructor (line 220) | constructor(name = "", event_list = Array()) { method addEvent (line 231) | addEvent(event) { method align (line 258) | align(tick, accuracy = 4) { method sort (line 268) | sort() { method export (line 281) | export(track_id) { method JSON (line 314) | JSON(track_id) { method toJSON (line 385) | toJSON(track_id) { class midi (line 390) | class midi { method constructor (line 400) | constructor(bpm = 120, time_signature = [4, 4], tick = 480, Mtrk = [],... method addTrack (line 414) | addTrack(newtrack = null, channel_id = -1) { method tracks (line 423) | get tracks() { // 起个别名 method align (line 430) | align(accuracy = 4) { method import (line 441) | static import(midi_file, which_main = 0) { method export (line 608) | export(type = 1) { method JSON (line 684) | JSON() { method toJSON (line 715) | toJSON() { FILE: lib/saver.js method Float32Mat2Buffer (line 33) | Float32Mat2Buffer(Float32Mat) { method Buffer2Float32Mat (line 53) | Buffer2Float32Mat(arrayBuffer, offset = 0) { method String2Buffer (line 70) | String2Buffer(str) { method Buffer2String (line 85) | Buffer2String(arrayBuffer, offset = 0) { method Object2Buffer (line 98) | Object2Buffer(obj) { method Buffer2Object (line 107) | Buffer2Object(arrayBuffer, offset = 0) { method combineArrayBuffers (line 117) | combineArrayBuffers(arrayBuffers) { method saveArrayBuffer (line 136) | saveArrayBuffer(arrayBuffer, filename) { method readBinary (line 150) | readBinary(file, callback) { FILE: lib/snapshot.js class Snapshot (line 3) | class Snapshot extends Array { method constructor (line 9) | constructor(maxLen, iniState = '') { method add (line 22) | add(snapshot) { method undo (line 31) | undo() { method redo (line 41) | redo() { method lastState (line 51) | lastState() { method nextState (line 59) | nextState() { method nowState (line 63) | nowState() { FILE: lib/tinySynth.js class TinySynth (line 2) | class TinySynth { method initSoundFont (line 186) | static initSoundFont({ g, w, t, f, v, a, h, d, s, r, p, q, k } = TinyS... method initOneSoundFont (line 194) | static initOneSoundFont(id, { g, w, t, f, v, a, h, d, s, r, p, q, k } ... method midi_instrument (line 198) | static midi_instrument(id) { method constructor (line 201) | constructor(actx = new AudioContext(), loadAll = false) { method audioContext (line 228) | get audioContext() { method audioContext (line 231) | set audioContext(actx) { method volume (line 267) | get volume() { method volume (line 274) | set volume(v) { method addChannel (line 282) | addChannel(at = this.channel.length, instrument = 0, gain = 1) { method play (line 303) | play({ id, f = 440, v = 127, t = 0, last = 9999 } = {}) { method stop (line 375) | stop(nt, t = 0) { method checkStop (line 398) | checkStop() { // 自动回收 一直开启 method stopAll (line 408) | stopAll() { FILE: plugins/chordEst.js class ChordEst (line 110) | class ChordEst { method constructor (line 125) | constructor(harmonicDecay = 0.3, P_N = 0.1, P_keep = 0.98) { method step (line 302) | step(obs) { method decode (line 352) | decode() { method initOctaveW (line 375) | static initOctaveW() { method chroma (line 398) | chroma(spect84, buffer = null) { FILE: ui/channelDiv.js function dragList (line 6) | function dragList(takeplace = true) { class ChannelItem (line 78) | class ChannelItem extends HTMLDivElement { method constructor (line 82) | constructor() { method new (line 98) | static new(name = "channel", color = "red", instrument = "Piano", visi... method name (line 141) | get name() { method name (line 144) | set name(channelName) { method instrument (line 147) | get instrument() { method instrument (line 150) | set instrument(instrument) { method color (line 153) | get color() { method color (line 156) | set color(color) { method lock (line 159) | get lock() { method lock (line 162) | set lock(lock) { method visible (line 175) | get visible() { // true为可见 method visible (line 178) | set visible(visible) { method mute (line 191) | get mute() { // true为静音 method mute (line 194) | set mute(mute) { method index (line 210) | get index() { method index (line 213) | set index(index) { method toJSON (line 216) | toJSON() { // 用于序列化,以实现撤销 class ChannelList (line 236) | class ChannelList extends EventTarget { method whichItem (line 254) | static whichItem(target) { method judgeClick (line 260) | static judgeClick(e) { return ChannelList.whichItem(e.target); } method constructor (line 266) | constructor(div, synthesizer) { method updateRange (line 341) | updateRange() { method borrowColor (line 362) | borrowColor() { method borrowTheColor (line 370) | borrowTheColor(color) { method returnColor (line 380) | returnColor(color) { method addChannel (line 396) | addChannel(at = this.channel.length) { // 用于一个个添加 method removeChannel (line 421) | removeChannel(node) { method selectChannel (line 441) | selectChannel(node) { method settingPannel (line 454) | settingPannel(chid) { method _toJSON (line 503) | _toJSON() { method fromArray (line 519) | fromArray(array) { FILE: ui/contextMenu.js class ContextMenu (line 1) | class ContextMenu { method constructor (line 17) | constructor(items = [], mustShow = false) { method addItem (line 22) | addItem(name, callback, onshow = null, event = "click") { method removeItem (line 27) | removeItem(name) { method show (line 36) | show(e) { FILE: ui/myRange.js class myRange (line 1) | class myRange extends HTMLInputElement { method new (line 7) | static new(ele) { method init (line 16) | init() { method value (line 25) | set value(v) { method value (line 29) | get value() { method reset (line 32) | reset() { class LableRange (line 38) | class LableRange extends myRange { method new (line 39) | static new(ele) { method init (line 47) | init() { method updateLabel (line 66) | updateLabel() { class hideLableRange (line 71) | class hideLableRange extends myRange { method new (line 73) | static new(ele) { method init (line 81) | init() { method updateLabel (line 104) | updateLabel() { method labelPosition (line 107) | labelPosition() { FILE: ui/siderMenu.js class SiderContent (line 1) | class SiderContent extends HTMLDivElement { method new (line 2) | static new(ele, minWidth) { method init (line 7) | init(minWidth) { method _mousedown (line 23) | _mousedown(e) { method _resize (line 28) | _resize(e) { method _mouseup (line 39) | _mouseup() { method display (line 45) | get display() { method display (line 49) | set display(state) { method width (line 55) | get width() { method width (line 58) | set width(w) { class SiderMenu (line 66) | class SiderMenu extends HTMLDivElement { method new (line 74) | static new(menu, container, minWidth) { method init (line 79) | init(box, minWidth) { method add (line 94) | add(name, tabClass, dom, selected = false) { method select (line 118) | select(tab) { method show (line 133) | show(ifshow = true) { method _tabClick (line 137) | _tabClick(e) {