Python library for audio and music analysis
This report presents the forensic synthetic code analysis of librosa/librosa, a Python project with 8,580 GitHub stars. SynthScan v2.0 examined 59,130 lines of code across 129 source files, recording 760 pattern matches distributed across 15 syntactic categories. The overall adjusted score of 16.3 places this repository in the Moderate AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 760 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | librosa/effects.py | 618 | def _signal_to_frame_nonsilent( | CODE |
| LOW | librosa/core/convert.py | 1551 | def fourier_tempo_frequencies( | CODE |
| LOW | librosa/core/convert.py | 2021 | 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 | 353 | def test_spectral_flatness_synthetic(S, flatness_ref): | CODE |
| LOW⚡ | tests/test_features.py | 361 | def test_spectral_flatness_errors(S, amin): | CODE |
| LOW⚡ | tests/test_features.py | 367 | def test_spectral_flatness_badtype(S): | CODE |
| LOW⚡ | tests/test_features.py | 737 | def test_fourier_tempogram_fail_badwin(y, sr, win_length, window): | CODE |
| LOW⚡ | tests/test_features.py | 742 | def test_fourier_tempogram_fail_noinput(): | CODE |
| LOW⚡ | tests/test_features.py | 750 | def test_fourier_tempogram_audio(y_chirp, hop_length): | CODE |
| LOW⚡ | tests/test_features.py | 1104 | def test_tempogram_ratio_aggregate(y_clicks, tg_ex): | CODE |
| LOW⚡ | tests/test_features.py | 1112 | def test_tempogram_ratio_with_tg(y_clicks, tg_ex): | CODE |
| LOW⚡ | tests/test_features.py | 1122 | 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_bandwidth_synthetic(S_ideal, freq, norm, p): | CODE |
| LOW | tests/test_features.py | 201 | def test_spectral_bandwidth_onecol(S_ideal, freq): | CODE |
| LOW | tests/test_features.py | 209 | def test_spectral_bandwidth_flat(): | CODE |
| LOW | tests/test_features.py | 229 | def test_spectral_bandwidth_errors(S): | CODE |
| LOW | tests/test_features.py | 243 | def test_spectral_rolloff_synthetic(S, freq, pct): | CODE |
| LOW | tests/test_features.py | 266 | def test_spectral_rolloff_errors(S, pct): | CODE |
| LOW | tests/test_features.py | 284 | def test_spectral_contrast_log(y_chirp): | CODE |
| LOW | tests/test_features.py | 296 | def test_spectral_contrast_flat(linear): | CODE |
| LOW | tests/test_features.py | 307 | def test_spectral_contrast_maximum(linear): | CODE |
| LOW | tests/test_features.py | 338 | def test_spectral_contrast_errors(S, freq, fmin, n_bands, quantile): | CODE |
| LOW | tests/test_features.py | 502 | def test_poly_features_synthetic(poly_S, poly_coeffs, poly_freq): | CODE |
| LOW | tests/test_features.py | 583 | def test_tempogram_fail_noinput(): | CODE |
| LOW | tests/test_features.py | 593 | def test_tempogram_fail_badwin(y, sr, win_length, window): | CODE |
| LOW | tests/test_features.py | 784 | def test_fourier_tempogram_invert(sr, hop_length, win_length, center, window): | CODE |
| LOW | tests/test_features.py | 831 | def test_cens_nosmooth_nonorm(cens_cqt): | CODE |
| LOW | tests/test_features.py | 1052 | def test_chroma_vqt_threshold(y_chirp): | CODE |
| 258 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 | 561 | # 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 | COMMENT | |
| LOW | docs/conf.py | 401 | latex_engine = "xelatex" | 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 |
|---|---|---|---|---|
| LOW | librosa/effects.py | 47 | CODE | |
| LOW | librosa/effects.py | 175 | CODE | |
| LOW | librosa/effects.py | 289 | 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 | 1331 | CODE | |
| LOW | librosa/display.py | 1956 | CODE | |
| LOW | librosa/display.py | 2564 | CODE | |
| LOW | librosa/display.py | 2883 | CODE | |
| LOW | librosa/display.py | 3067 | CODE | |
| LOW | librosa/display.py | 3833 | 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 | 691 | CODE | |
| LOW | librosa/feature/spectral.py | 926 | CODE | |
| LOW | librosa/feature/spectral.py | 1145 | CODE | |
| LOW | librosa/feature/spectral.py | 1305 | CODE | |
| LOW | librosa/feature/spectral.py | 1435 | CODE | |
| LOW | librosa/feature/spectral.py | 1585 | CODE | |
| LOW | librosa/feature/spectral.py | 1852 | CODE | |
| 6 more matches not shown… | ||||
| 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 |
|---|---|---|---|---|
| MEDIUM | librosa/_cache.py | 36 | # Initialize the memory object | COMMENT |
| MEDIUM | librosa/display.py | 2300 | # The following code centers the FFT bins at their frequencies | COMMENT |
| MEDIUM | librosa/display.py | 2407 | # The following code centers the FFT bins at their frequencies | COMMENT |
| MEDIUM | librosa/display.py | 2794 | # Create the adaptive drawing object | COMMENT |
| MEDIUM | librosa/display.py | 3035 | # Create a proxy artist if we have a label to set | COMMENT |
| MEDIUM | librosa/display.py | 3242 | # 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/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 | 1331 | CODE | |
| LOW | librosa/display.py | 1906 | CODE | |
| LOW | librosa/display.py | 1956 | CODE | |
| LOW | librosa/display.py | 2435 | CODE | |
| LOW | librosa/display.py | 3613 | 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 | 2211 | CODE | |
| LOW | librosa/core/convert.py | 2515 | 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 | 961 | 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 |