Python library for audio and music analysis
This report summarizes scanner evidence for librosa/librosa, a Python project with 8,665 GitHub stars. SynthScan examined 59,368 lines of code across 129 source files, recording 783 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 17.7 (Elevated pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 610 finding(s).
Are imports declared and package/API names verified? 52 finding(s).
Are wrappers, guards, and repeated structures necessary? 511 finding(s).
Which changes need focused human review? 783 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 783 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/effects.py | 704 | def _signal_to_frame_nonsilent( | CODE |
| LOW | librosa/core/convert.py | 1585 | def fourier_tempo_frequencies( | CODE |
| LOW | librosa/core/convert.py | 2064 | def multi_frequency_weighting( | CODE |
| LOW | librosa/core/pitch.py | 369 | def _cumulative_mean_normalized_difference( | CODE |
| LOW | librosa/util/matching.py | 53 | def __match_interval_overlaps(query, intervals_to, candidates): # pragma: no cover | CODE |
| LOW⚡ | tests/test_sequence.py | 677 | def test_trans_local_nstates_fail(n): | CODE |
| LOW⚡ | tests/test_sequence.py | 683 | def test_trans_local_width_fail(width): | CODE |
| LOW⚡ | tests/test_sequence.py | 687 | def test_trans_local_wrap_const(): | CODE |
| LOW | tests/test_sequence.py | 45 | def test_viterbi_multichannel(): | CODE |
| LOW | tests/test_sequence.py | 121 | def test_viterbi_negative_minprob(): | CODE |
| LOW | tests/test_sequence.py | 137 | def test_viterbi_discriminative_negative_minprob(): | CODE |
| LOW | tests/test_sequence.py | 210 | def test_viterbi_bad_transition(trans, rng): | CODE |
| LOW | tests/test_sequence.py | 245 | def test_viterbi_discriminative_example(transition_min_prob): | CODE |
| LOW | tests/test_sequence.py | 282 | def test_viterbi_discriminative_multi(): | CODE |
| LOW | tests/test_sequence.py | 348 | def test_viterbi_discriminative_example_init(): | CODE |
| LOW | tests/test_sequence.py | 399 | def test_viterbi_discriminative_bad_transition(x_disc, trans): | CODE |
| LOW | tests/test_sequence.py | 414 | def test_viterbi_discriminative_bad_init(p_init, trans, x_disc): | CODE |
| LOW | tests/test_sequence.py | 429 | def test_viterbi_discriminative_bad_marginal(x_disc, trans, p_state): | CODE |
| LOW | tests/test_sequence.py | 444 | def test_viterbi_discriminative_bad_obs(x, trans): | CODE |
| LOW | tests/test_sequence.py | 449 | def test_viterbi_binary_example(): | CODE |
| LOW | tests/test_sequence.py | 488 | def test_viterbi_binary_multi(): | CODE |
| LOW | tests/test_sequence.py | 525 | def test_viterbi_binary_example_init(): | CODE |
| LOW | tests/test_sequence.py | 567 | def test_viterbi_binary_bad_transition(x_data, trans): | CODE |
| LOW | tests/test_sequence.py | 578 | def test_viterbi_binary_bad_init(x_data, trans, p_init): | CODE |
| LOW | tests/test_sequence.py | 589 | def test_viterbi_binary_bad_marginal(p_state, trans, x_data): | CODE |
| LOW | tests/test_sequence.py | 600 | def test_viterbi_binary_bad_obs(x, trans): | CODE |
| LOW | tests/test_sequence.py | 614 | def test_trans_uniform_badshape(n): | CODE |
| LOW | tests/test_sequence.py | 704 | def test_trans_local_nowrap_const(): | CODE |
| LOW | tests/test_sequence.py | 721 | def test_trans_local_wrap_var(): | CODE |
| LOW | tests/test_sequence.py | 738 | def test_trans_local_nowrap_var(): | CODE |
| LOW | tests/conftest.py | 41 | def pytest_collection_modifyitems(config, items): | CODE |
| LOW⚡ | tests/test_features.py | 373 | def test_spectral_flatness_synthetic(S, flatness_ref): | CODE |
| LOW⚡ | tests/test_features.py | 381 | def test_spectral_flatness_errors(S, amin): | CODE |
| LOW⚡ | tests/test_features.py | 387 | def test_spectral_flatness_badtype(S): | CODE |
| LOW⚡ | tests/test_features.py | 757 | def test_fourier_tempogram_fail_badwin(y, sr, win_length, window): | CODE |
| LOW⚡ | tests/test_features.py | 762 | def test_fourier_tempogram_fail_noinput(): | CODE |
| LOW⚡ | tests/test_features.py | 770 | def test_fourier_tempogram_audio(y_chirp, hop_length): | CODE |
| LOW⚡ | tests/test_features.py | 1124 | def test_tempogram_ratio_aggregate(y_clicks, tg_ex): | CODE |
| LOW⚡ | tests/test_features.py | 1132 | def test_tempogram_ratio_with_tg(y_clicks, tg_ex): | CODE |
| LOW⚡ | tests/test_features.py | 1142 | def test_tempogram_ratio_with_bpm(y_clicks, tg_ex): | CODE |
| LOW | tests/test_features.py | 125 | def test_stack_memory_ndim_badshape(data, delay, n_steps): | CODE |
| LOW | tests/test_features.py | 147 | def test_spectral_centroid_synthetic(S_ideal, freq): | CODE |
| LOW | tests/test_features.py | 159 | def test_spectral_centroid_errors(S): | CODE |
| LOW | tests/test_features.py | 167 | def test_spectral_centroid_empty(y, sr, S): | CODE |
| LOW | tests/test_features.py | 183 | def test_spectral_feature_dtype(feature, dtype, rng): | CODE |
| LOW | tests/test_features.py | 203 | def test_spectral_bandwidth_synthetic(S_ideal, freq, norm, p): | CODE |
| LOW | tests/test_features.py | 221 | def test_spectral_bandwidth_onecol(S_ideal, freq): | CODE |
| LOW | tests/test_features.py | 229 | def test_spectral_bandwidth_flat(): | CODE |
| LOW | tests/test_features.py | 249 | def test_spectral_bandwidth_errors(S): | CODE |
| LOW | tests/test_features.py | 263 | def test_spectral_rolloff_synthetic(S, freq, pct): | CODE |
| LOW | tests/test_features.py | 286 | def test_spectral_rolloff_errors(S, pct): | CODE |
| LOW | tests/test_features.py | 304 | def test_spectral_contrast_log(y_chirp): | CODE |
| LOW | tests/test_features.py | 316 | def test_spectral_contrast_flat(linear): | CODE |
| LOW | tests/test_features.py | 327 | def test_spectral_contrast_maximum(linear): | CODE |
| LOW | tests/test_features.py | 358 | def test_spectral_contrast_errors(S, freq, fmin, n_bands, quantile): | CODE |
| LOW | tests/test_features.py | 522 | def test_poly_features_synthetic(poly_S, poly_coeffs, poly_freq): | CODE |
| LOW | tests/test_features.py | 603 | def test_tempogram_fail_noinput(): | CODE |
| LOW | tests/test_features.py | 613 | def test_tempogram_fail_badwin(y, sr, win_length, window): | CODE |
| LOW | tests/test_features.py | 804 | def test_fourier_tempogram_invert(sr, hop_length, win_length, center, window): | CODE |
| LOW | tests/test_features.py | 851 | def test_cens_nosmooth_nonorm(cens_cqt): | CODE |
| 263 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | docs/conf.py | 103 | # ---------------------------------- | STRING |
| MEDIUM⚡ | docs/conf.py | 105 | # ---------------------------------- | STRING |
| MEDIUM⚡ | docs/conf.py | 108 | # ------------------------------------------------------------------------------ | STRING |
| MEDIUM⚡ | docs/conf.py | 110 | # ------------------------------------------------------------------------------ | STRING |
| MEDIUM | docs/tutorials/01-intro/05-onsets.py | 163 | # --------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/05-onsets.py | 227 | # ------------ | COMMENT |
| MEDIUM | docs/tutorials/01-intro/04-harmony.py | 14 | # ------------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/04-harmony.py | 54 | # ------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/04-harmony.py | 149 | # ---------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/03-f0.py | 14 | # --------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/03-f0.py | 41 | # ---------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/03-f0.py | 117 | # ----------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 15 | # --------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 131 | # ---------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 286 | # ----------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 338 | # ------------------------------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 401 | # ----------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/06-rhythm.py | 65 | # -------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/06-rhythm.py | 135 | # ------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/01-load.py | 15 | # --------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/01-load.py | 60 | # ---------------------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/01-load.py | 107 | # ------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/01-load.py | 139 | # ---------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/08-notation.py | 14 | # ------------------------------------ | COMMENT |
| MEDIUM | docs/tutorials/01-intro/08-notation.py | 103 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/08-notation.py | 159 | # -------------------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/08-notation.py | 238 | # --------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/02-frequency.py | 15 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/02-frequency.py | 129 | # --------------------- | COMMENT |
| MEDIUM | docs/tutorials/01-intro/02-frequency.py | 200 | # ------------ | COMMENT |
| MEDIUM | docs/tutorials/02-display/01-wave.py | 14 | # ------------------------ | COMMENT |
| MEDIUM | docs/tutorials/02-display/01-wave.py | 163 | # ----------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/01-wave.py | 186 | # ----------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/04-colors.py | 17 | # ----------------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/04-colors.py | 28 | # --------------------------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/04-colors.py | 106 | # ------------------------------ | COMMENT |
| MEDIUM | docs/tutorials/02-display/04-colors.py | 136 | # ----------------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/04-colors.py | 194 | # ------------ | COMMENT |
| MEDIUM | docs/tutorials/02-display/02-spectrogram.py | 15 | # ------------ | COMMENT |
| MEDIUM | docs/tutorials/02-display/02-spectrogram.py | 63 | # --------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/02-spectrogram.py | 151 | # ---------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/02-spectrogram.py | 182 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/08-mireval.py | 23 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/08-mireval.py | 31 | # -------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/08-mireval.py | 91 | # ------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/08-mireval.py | 141 | # ----------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/07-multichannel.py | 20 | # ------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/07-multichannel.py | 95 | # -------------------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/07-multichannel.py | 126 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/07-multichannel.py | 151 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/03-axes.py | 15 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/03-axes.py | 97 | # --------------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/05-nonspectral.py | 63 | # ---------- | COMMENT |
| MEDIUM | docs/tutorials/02-display/05-nonspectral.py | 99 | # ---------------- | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 29 | # ------------------------- | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 47 | # -------------------- | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 68 | # ------------------------- | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 103 | # ------------------ | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_dynamic_beat.py | 35 | # ------------------------------ | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_dynamic_beat.py | 37 | # ------------------------------ | COMMENT |
| 18 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/core/audio.py | 1501 | epsilon: float, | COMMENT |
| LOW | librosa/core/audio.py | 1521 | # DEN_{M} from eqn 16 of Marple. | COMMENT |
| LOW | librosa/core/audio.py | 1561 | # SNIP - we are now done with order M and advance. M-1 <- M | COMMENT |
| LOW | tests/test_features.py | 581 | # F#:dim is [0, 6, 9] | COMMENT |
| LOW | tests/test_core.py | 3001 | # array([[0, 1, 2], | COMMENT |
| LOW | tests/test_filters.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | docs/conf.py | 1 | # -*- coding: utf-8 -*- | COMMENT |
| LOW | docs/conf.py | 281 | html_use_modindex = True | COMMENT |
| LOW | docs/conf.py | 401 | # The name of an image file (relative to this directory) to place at the top of | COMMENT |
| LOW | docs/tutorials/01-intro/05-onsets.py | 61 | # sustained F note beginning at around 2.5 seconds, there are no abrupt | COMMENT |
| LOW | docs/tutorials/01-intro/05-onsets.py | 81 | # We can put these ideas together as follows. | COMMENT |
| LOW | docs/tutorials/01-intro/05-onsets.py | 141 | ax[1].legend() | COMMENT |
| LOW | docs/tutorials/01-intro/05-onsets.py | 161 | # %% | COMMENT |
| LOW | docs/tutorials/01-intro/05-onsets.py | 221 | COMMENT | |
| LOW | docs/tutorials/01-intro/05-onsets.py | 241 | COMMENT | |
| LOW | docs/tutorials/01-intro/05-onsets.py | 261 | # floating point numbers, and may be subject to rounding errors. | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 1 | # coding: utf-8 | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 41 | librosa.display.colorbar_db(img, label="dBFS") | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 61 | # notions of harmonics, which are spaced **geometrically**. | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 81 | C = librosa.cqt(y=y, sr=sr) | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 101 | # 1025. | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 141 | print(f"CQT shape={C.shape}") | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 181 | COMMENT | |
| LOW | docs/tutorials/01-intro/04-harmony.py | 221 | fig.colorbar(imgchroma, ax=ax[1], aspect=20/3) # aspect compensates for the 3:1 height ratio of these plots | COMMENT |
| LOW | docs/tutorials/01-intro/04-harmony.py | 241 | # representing harmonic content in musical signals. | COMMENT |
| LOW | docs/tutorials/01-intro/03-f0.py | 1 | # coding: utf-8 | COMMENT |
| LOW | docs/tutorials/01-intro/03-f0.py | 21 | # The discrete Fourier transform implicitly assumes that all signals repeat | COMMENT |
| LOW | docs/tutorials/01-intro/03-f0.py | 61 | # The method that we'll use first is known as `yin`. | COMMENT |
| LOW | docs/tutorials/01-intro/03-f0.py | 101 | COMMENT | |
| LOW | docs/tutorials/01-intro/03-f0.py | 121 | # 1. `pyin` models continuity in time by using a Markov chain. | COMMENT |
| LOW | docs/tutorials/01-intro/03-f0.py | 141 | COMMENT | |
| LOW | docs/tutorials/01-intro/07-timbre.py | 1 | # coding: utf-8 | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 21 | # As a result, the analysis in this section will be a bit more exploratory and data-driven than | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 121 | COMMENT | |
| LOW | docs/tutorials/01-intro/07-timbre.py | 141 | # directly on the intuition behind our example above. | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 161 | # %% | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 241 | # do not contribute visual clutter, and otherwise color-code each frame by its instrument: | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 281 | # clusters are mostly homogeneous in pitch. This tells us that the STFT similarity is indeed more | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 321 | COMMENT | |
| LOW | docs/tutorials/01-intro/07-timbre.py | 361 | ax[i, 0].set(ylabel=inst) | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 441 | # %% | COMMENT |
| LOW | docs/tutorials/01-intro/07-timbre.py | 461 | knn_eval(mfcc_fit, mfcc_test) | COMMENT |
| LOW | docs/tutorials/01-intro/06-rhythm.py | 101 | # %% | COMMENT |
| LOW | docs/tutorials/01-intro/06-rhythm.py | 121 | # If we collect these autocorrelation results together, we can visualize | COMMENT |
| LOW | docs/tutorials/01-intro/06-rhythm.py | 141 | # | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 1 | # coding: utf-8 | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 41 | # :class: sidebar | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 61 | # By default, `librosa.load` will standardize the signal to a sampling rate of | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 81 | # The sampling rate `sr` tells us how many samples we have every second, | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 101 | # sample index, we can use the `librosa.samples_to_time` function: | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 121 | # and `librosa.display` to draw the waveform on it. | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 141 | # To do this, we'll use the `IPython.display.Audio` class. | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 161 | # `IPython.display`, like shown below. | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 1 | # coding: utf-8 | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 21 | # second, abbreviated Hz). This is something that we can observe directly in a | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 41 | # :math:`f = 440 · 2^{(n-69)/12}`. Librosa also supports fractional MIDI note | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 61 | # | 62 | D4 | 293.665 | | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 101 | # %% | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 121 | # to pitch class 0 (*C*), the second to pitch class 1 (*C♯* or *D♭*), and so on, regardless of the key. | COMMENT |
| LOW | docs/tutorials/01-intro/08-notation.py | 141 | # ------- | COMMENT |
| 83 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_features.py | 15 | except KeyError: | CODE |
| HIGH | tests/test_effects.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_notation.py | 10 | except KeyError: | CODE |
| HIGH | tests/test_constantq.py | 15 | except KeyError: | CODE |
| HIGH | tests/test_core.py | 13 | except KeyError: | CODE |
| HIGH | tests/test_display.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_convert.py | 10 | except KeyError: | CODE |
| HIGH | tests/test_util.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_multichannel.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_decompose.py | 10 | except KeyError: | CODE |
| HIGH | tests/test_onset.py | 13 | except KeyError: | CODE |
| HIGH | tests/test_filters.py | 19 | except KeyError: | CODE |
| HIGH | tests/test_beat.py | 10 | except KeyError: | CODE |
| HIGH | tests/test_failures.py | 10 | except KeyError: | CODE |
| HIGH | tests/test_intervals.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_segment.py | 11 | except KeyError: | CODE |
| HIGH | tests/test_cache.py | 21 | except KeyError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/effects.py | 47 | CODE | |
| LOW | librosa/effects.py | 178 | CODE | |
| LOW | librosa/effects.py | 294 | CODE | |
| LOW | librosa/effects.py | 515 | CODE | |
| LOW | librosa/onset.py | 24 | CODE | |
| LOW | librosa/onset.py | 210 | CODE | |
| LOW | librosa/onset.py | 438 | CODE | |
| LOW | librosa/sequence.py | 46 | CODE | |
| LOW | librosa/sequence.py | 61 | CODE | |
| LOW | librosa/sequence.py | 104 | CODE | |
| LOW | librosa/sequence.py | 119 | CODE | |
| LOW | librosa/sequence.py | 133 | CODE | |
| LOW | librosa/sequence.py | 148 | CODE | |
| LOW | librosa/sequence.py | 161 | CODE | |
| LOW | librosa/display.py | 1340 | CODE | |
| LOW | librosa/display.py | 1965 | CODE | |
| LOW | librosa/display.py | 2572 | CODE | |
| LOW | librosa/display.py | 2891 | CODE | |
| LOW | librosa/display.py | 3075 | CODE | |
| LOW | librosa/display.py | 3842 | CODE | |
| LOW | librosa/segment.py | 345 | CODE | |
| LOW | librosa/segment.py | 360 | CODE | |
| LOW | librosa/segment.py | 375 | CODE | |
| LOW | librosa/beat.py | 37 | CODE | |
| LOW | librosa/beat.py | 52 | CODE | |
| LOW | librosa/beat.py | 67 | CODE | |
| LOW | librosa/beat.py | 81 | CODE | |
| LOW | librosa/beat.py | 312 | CODE | |
| LOW | librosa/filters.py | 560 | CODE | |
| LOW | librosa/core/constantq.py | 42 | CODE | |
| LOW | librosa/core/constantq.py | 209 | CODE | |
| LOW | librosa/core/constantq.py | 415 | CODE | |
| LOW | librosa/core/constantq.py | 594 | CODE | |
| LOW | librosa/core/constantq.py | 820 | CODE | |
| LOW | librosa/core/constantq.py | 1285 | CODE | |
| LOW | librosa/core/spectrum.py | 58 | CODE | |
| LOW | librosa/core/spectrum.py | 395 | CODE | |
| LOW | librosa/core/spectrum.py | 646 | CODE | |
| LOW | librosa/core/spectrum.py | 809 | CODE | |
| LOW | librosa/core/spectrum.py | 990 | CODE | |
| LOW | librosa/core/spectrum.py | 1522 | CODE | |
| LOW | librosa/core/spectrum.py | 2360 | CODE | |
| LOW | librosa/core/spectrum.py | 2379 | CODE | |
| LOW | librosa/core/spectrum.py | 2398 | CODE | |
| LOW | librosa/core/spectrum.py | 2671 | CODE | |
| LOW | librosa/core/spectrum.py | 2922 | CODE | |
| LOW | librosa/core/audio.py | 1731 | CODE | |
| LOW | librosa/core/pitch.py | 182 | CODE | |
| LOW | librosa/core/pitch.py | 631 | CODE | |
| LOW | librosa/core/harmonic.py | 465 | CODE | |
| LOW | librosa/feature/spectral.py | 46 | CODE | |
| LOW | librosa/feature/spectral.py | 195 | CODE | |
| LOW | librosa/feature/spectral.py | 357 | CODE | |
| LOW | librosa/feature/spectral.py | 538 | CODE | |
| LOW | librosa/feature/spectral.py | 695 | CODE | |
| LOW | librosa/feature/spectral.py | 930 | CODE | |
| LOW | librosa/feature/spectral.py | 1152 | CODE | |
| LOW | librosa/feature/spectral.py | 1312 | CODE | |
| LOW | librosa/feature/spectral.py | 1442 | CODE | |
| LOW | librosa/feature/spectral.py | 1592 | CODE | |
| 7 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | librosa/_cache.py | 36 | # Initialize the memory object | COMMENT |
| MEDIUM | librosa/display.py | 2309 | # The following code centers the FFT bins at their frequencies | COMMENT |
| MEDIUM | librosa/display.py | 2415 | # The following code centers the FFT bins at their frequencies | COMMENT |
| MEDIUM | librosa/display.py | 2802 | # Create the adaptive drawing object | COMMENT |
| MEDIUM | librosa/display.py | 3043 | # Create a proxy artist if we have a label to set | COMMENT |
| MEDIUM | librosa/display.py | 3250 | # Create the adaptive drawing object | COMMENT |
| MEDIUM | librosa/core/audio.py | 854 | # Create an empty stereo output buffer | COMMENT |
| MEDIUM | tests/test_display.py | 1367 | # Create a chirp | COMMENT |
| MEDIUM | docs/conf.py | 6 | # This file is execfile()d with the current directory set to its containing dir. | COMMENT |
| MEDIUM | docs/tutorials/01-intro/03-f0.py | 57 | # Create a display object for listening | COMMENT |
| MEDIUM | docs/tutorials/02-display/01-wave.py | 39 | # Create a figure | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_pcen_stream.py | 66 | # Create a handle for storing the block STFT outputs | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_music_sync.py | 159 | # Create a connection patch between the aligned time points | COMMENT |
| MEDIUM | scripts/audit_docstring_examples.py | 121 | # Create a visitor instance and visit the nodes | COMMENT |
| MEDIUM | scripts/create_author_list.py | 67 | # Create a Request object and add a User-Agent header (GitHub requires it). | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/effects.py | 10 | CODE | |
| LOW | librosa/onset.py | 7 | CODE | |
| LOW | librosa/decompose.py | 10 | CODE | |
| LOW | librosa/sequence.py | 11 | CODE | |
| LOW | librosa/__init__.py | 14 | CODE | |
| LOW | librosa/display.py | 11 | CODE | |
| LOW | librosa/segment.py | 11 | CODE | |
| LOW | librosa/beat.py | 4 | CODE | |
| LOW | librosa/filters.py | 7 | CODE | |
| LOW | librosa/core/convert.py | 4 | CODE | |
| LOW | librosa/core/notation.py | 4 | CODE | |
| LOW | librosa/core/intervals.py | 4 | CODE | |
| LOW | librosa/core/constantq.py | 4 | CODE | |
| LOW | librosa/core/spectrum.py | 4 | CODE | |
| LOW | librosa/core/audio.py | 4 | CODE | |
| LOW | librosa/core/pitch.py | 4 | CODE | |
| LOW | librosa/core/harmonic.py | 5 | CODE | |
| LOW | librosa/util/files.py | 4 | CODE | |
| LOW | librosa/util/matching.py | 4 | CODE | |
| LOW | librosa/util/_nnls.py | 11 | CODE | |
| LOW | librosa/util/utils.py | 5 | CODE | |
| LOW | librosa/util/decorators.py | 5 | CODE | |
| LOW | librosa/feature/utils.py | 4 | CODE | |
| LOW | librosa/feature/spectral.py | 4 | CODE | |
| LOW | librosa/feature/inverse.py | 4 | CODE | |
| LOW | librosa/feature/rhythm.py | 4 | CODE | |
| LOW | tests/test_effects.py | 4 | CODE | |
| LOW | tests/test_notation.py | 6 | CODE | |
| LOW | tests/test_notation.py | 13 | CODE | |
| LOW | tests/test_constantq.py | 6 | CODE | |
| LOW | tests/test_constantq.py | 8 | CODE | |
| LOW | tests/test_constantq.py | 21 | CODE | |
| LOW | tests/test_core.py | 6 | CODE | |
| LOW | tests/test_core.py | 21 | CODE | |
| LOW | tests/test_core.py | 28 | CODE | |
| LOW | tests/test_core.py | 28 | CODE | |
| LOW | tests/test_core.py | 28 | CODE | |
| LOW | tests/test_display.py | 25 | CODE | |
| LOW | tests/test_convert.py | 6 | CODE | |
| LOW | tests/test_util.py | 4 | CODE | |
| LOW | tests/test_multichannel.py | 15 | CODE | |
| LOW | tests/test_multichannel.py | 19 | CODE | |
| LOW | tests/test_multichannel.py | 20 | CODE | |
| LOW | tests/test_multichannel.py | 23 | CODE | |
| LOW | tests/test_onset.py | 17 | CODE | |
| LOW | tests/test_filters.py | 23 | CODE | |
| LOW | tests/test_filters.py | 24 | CODE | |
| LOW | tests/test_intervals.py | 7 | CODE | |
| LOW | tests/test_intervals.py | 14 | CODE | |
| LOW | tests/test_segment.py | 4 | CODE | |
| LOW | tests/test_cache.py | 8 | CODE | |
| LOW | scripts/audit_docstring_examples.py | 12 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/onset.py | 24 | CODE | |
| LOW | librosa/sequence.py | 478 | CODE | |
| LOW | librosa/sequence.py | 846 | CODE | |
| LOW | librosa/sequence.py | 1151 | CODE | |
| LOW | librosa/display.py | 1340 | CODE | |
| LOW | librosa/display.py | 1915 | CODE | |
| LOW | librosa/display.py | 1965 | CODE | |
| LOW | librosa/display.py | 2443 | CODE | |
| LOW | librosa/display.py | 3622 | CODE | |
| LOW | librosa/display.py | 216 | CODE | |
| LOW | librosa/segment.py | 1316 | CODE | |
| LOW | librosa/beat.py | 81 | CODE | |
| LOW | librosa/beat.py | 568 | CODE | |
| LOW | librosa/filters.py | 886 | CODE | |
| LOW | librosa/core/convert.py | 2254 | CODE | |
| LOW | librosa/core/convert.py | 2558 | CODE | |
| LOW | librosa/core/notation.py | 200 | CODE | |
| LOW | librosa/core/notation.py | 626 | CODE | |
| LOW | librosa/core/intervals.py | 28 | CODE | |
| LOW | librosa/core/intervals.py | 302 | CODE | |
| LOW | librosa/core/spectrum.py | 58 | CODE | |
| LOW | librosa/core/spectrum.py | 2398 | CODE | |
| LOW | librosa/core/audio.py | 223 | CODE | |
| LOW | librosa/core/audio.py | 1002 | CODE | |
| LOW | librosa/util/matching.py | 66 | CODE | |
| LOW | librosa/util/utils.py | 797 | CODE | |
| LOW | tests/test_features.py | 981 | CODE | |
| LOW | tests/test_core.py | 2736 | CODE | |
| LOW | tests/test_onset.py | 302 | CODE | |
| LOW | tests/test_filters.py | 169 | CODE | |
| LOW | tests/test_beat.py | 186 | CODE | |
| LOW | scripts/audit_docstring_examples.py | 116 | CODE | |
| LOW | scripts/create_author_list.py | 58 | CODE | |
| LOW | scripts/create_zenodo_json.py | 75 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/effects.py | 33 | __all__ = [ | CODE |
| LOW | librosa/onset.py | 21 | __all__ = ["onset_detect", "onset_strength", "onset_strength_multi", "onset_backtrack"] | CODE |
| LOW | librosa/decompose.py | 26 | __all__ = ["decompose", "hpss", "nn_filter"] | CODE |
| LOW | librosa/sequence.py | 30 | __all__ = [ | CODE |
| LOW | librosa/display.py | 61 | __all__ = [ | CODE |
| LOW | librosa/segment.py | 38 | __all__ = [ | CODE |
| LOW | librosa/beat.py | 33 | __all__ = ["beat_track", "plp"] | CODE |
| LOW | librosa/filters.py | 28 | __all__ = [ | CODE |
| LOW | librosa/core/convert.py | 31 | __all__ = [ | CODE |
| LOW | librosa/core/notation.py | 31 | __all__ = [ | CODE |
| LOW | librosa/core/constantq.py | 36 | __all__ = ["cqt", "hybrid_cqt", "pseudo_cqt", "icqt", "griffinlim_cqt", "vqt"] | CODE |
| LOW | librosa/core/spectrum.py | 39 | __all__ = [ | CODE |
| LOW | librosa/core/audio.py | 35 | __all__ = [ | CODE |
| LOW | librosa/core/pitch.py | 25 | __all__ = ["estimate_tuning", "pitch_tuning", "piptrack", "yin", "pyin"] | CODE |
| LOW | librosa/core/harmonic.py | 22 | __all__ = ["salience", "interp_harmonics", "f0_harmonics"] | CODE |
| LOW | librosa/util/files.py | 21 | __all__ = [ | CODE |
| LOW | librosa/util/matching.py | 17 | __all__ = ["match_intervals", "match_events"] | CODE |
| LOW | librosa/util/_nnls.py | 22 | __all__ = ["nnls"] | CODE |
| LOW | librosa/util/utils.py | 43 | __all__ = [ | CODE |
| LOW | librosa/util/decorators.py | 25 | __all__ = ["moved", "deprecated", "vectorize"] | CODE |
| LOW | librosa/feature/utils.py | 17 | __all__ = ["delta", "stack_memory"] | CODE |
| LOW | librosa/feature/spectral.py | 26 | __all__ = [ | CODE |
| LOW | librosa/feature/inverse.py | 25 | __all__ = ["mel_to_stft", "mel_to_audio", "mfcc_to_mel", "mfcc_to_audio"] | CODE |
| LOW | librosa/feature/rhythm.py | 27 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/tutorials/01-intro/06-rhythm.py | 57 | # musical onsets. In this example, the peaks are also regularly spaced in time. | COMMENT |
| HIGH | docs/tutorials/01-intro/06-rhythm.py | 104 | # In this example, the first peak occurs at around 0.4 seconds. | COMMENT |
| HIGH | docs/tutorials/03-advanced/plot_dynamic_beat.py | 108 | # In this example, the result is not perfect: `tempo_dynamic` contains jagged and | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | librosa/core/audio.py | 542 | .. note:: This function is primarily useful for demonstration purposes, | STRING |
| MEDIUM | docs/tutorials/01-intro/01-load.py | 160 | # To force the player to display, you can use the `display` function from | COMMENT |
| MEDIUM | docs/tutorials/02-display/08-mireval.py | 127 | # hack suffices for demonstration purposes. | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 60 | # If you're playing back packaged examples, you can also use the `url` argument to construct | COMMENT |
| MEDIUM | docs/tutorials/03-advanced/plot_audio_playback.py | 151 | # in the same cell, you can use | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/beat.py | 577 | # NOTE: when we can bump the minimum numba to 0.58, we can eliminate this branch and just use | COMMENT |
| LOW | librosa/beat.py | 644 | # No back-link found, so just use the current score | COMMENT |
| LOW | librosa/core/intervals.py | 484 | # Otherwise, just return intervals as floats | COMMENT |
| LOW | librosa/core/audio.py | 1862 | # Normally, just add a click here | COMMENT |
| MEDIUM | docs/tutorials/01-intro/07-timbre.py | 341 | # Essentially, these work by projecting each dB-scaled mel spectrum (frame) onto a set of basis | COMMENT |
| LOW | docs/tutorials/01-intro/01-load.py | 65 | # To use the audio file's native sampling rate, simply set `sr=None`. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | librosa/beat.py | 458 | # Step 2: get the fourier tempogram | STRING |
| LOW⚡ | librosa/beat.py | 466 | # Step 3: pin to the feasible tempo range | STRING |
| LOW⚡ | librosa/beat.py | 490 | # Step 5: invert the Fourier tempogram to get the pulse | STRING |
| LOW⚡ | librosa/beat.py | 495 | # Step 6: retain only the positive part of the pulse cycle | STRING |
| LOW | librosa/beat.py | 447 | # Step 1: get the onset envelope | STRING |
| LOW | librosa/beat.py | 479 | # Step 3: Discard everything below the peak | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | librosa/beat.py | 458 | # Step 2: get the fourier tempogram | STRING |
| LOW⚡ | librosa/beat.py | 466 | # Step 3: pin to the feasible tempo range | STRING |
| LOW⚡ | librosa/beat.py | 490 | # Step 5: invert the Fourier tempogram to get the pulse | STRING |
| LOW⚡ | librosa/beat.py | 495 | # Step 6: retain only the positive part of the pulse cycle | STRING |
| LOW | librosa/beat.py | 447 | # Step 1: get the onset envelope | STRING |
| LOW | librosa/beat.py | 479 | # Step 3: Discard everything below the peak | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/util/matching.py | 375 | # Check if right should be chosen | COMMENT |
| LOW | librosa/util/utils.py | 1249 | # Check if we're a local peak | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_util.py | 1275 | def test_shear_sparse_1d_raises(): | CODE |
| LOW | tests/test_util.py | 1278 | except Exception: | CODE |