{"id":13862339,"url":"https://github.com/endolith/scopeplot","last_synced_at":"2026-03-05T00:10:16.015Z","repository":{"id":66839567,"uuid":"50393525","full_name":"endolith/scopeplot","owner":"endolith","description":"Oscilloscope-like plotting of waveforms ","archived":false,"fork":false,"pushed_at":"2022-10-19T18:52:26.000Z","size":71,"stargazers_count":24,"open_issues_count":0,"forks_count":5,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-08-05T06:05:39.760Z","etag":null,"topics":["audio-visualizer","oscilloscope","plotting","waveform"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/endolith.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-01-26T01:20:52.000Z","updated_at":"2024-03-28T11:24:32.000Z","dependencies_parsed_at":"2023-02-22T03:45:21.186Z","dependency_job_id":null,"html_url":"https://github.com/endolith/scopeplot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endolith%2Fscopeplot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endolith%2Fscopeplot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endolith%2Fscopeplot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/endolith%2Fscopeplot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/endolith","download_url":"https://codeload.github.com/endolith/scopeplot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225974432,"owners_count":17553954,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio-visualizer","oscilloscope","plotting","waveform"],"created_at":"2024-08-05T06:01:42.293Z","updated_at":"2026-03-05T00:10:15.965Z","avatar_url":"https://github.com/endolith.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"Oscilloscope-like plotting of signals, showing density of waveforms instead \nof just the peak amplitude silhouettes.\n\nVertical cross section through this plot is a histogram of the waveform values \nfor that chunk as brightness.\n\nInput signal must have been sampled at twice the highest frequency present in\nthe signal, like audio.\n\nSignal is first FFT interpolated to get inter-sample information, then broken\nup into overlapping chunks, 1 for each pixel, then those are linear\ninterpolated, with each line segment contributing to 1 or 2 pixels, depending\non where it occurs in the chunk.\n\nTo do\n-----\n\n- Handle line segments that go outside the visible range\n- Handle circularity/end behavior as a parameter\n - Fix white dots at endpoints\n- Read files one chunk at a time, FFT resample each chunk to avoid memory errors\n- Show original samples as circular dots when zoomed in enough\n- Show RMS value (window parameter?)\n- Show (intersample) peak value\n- Color the waveform based on spectral centroid, spectral content, etc.\n- Use randomized resampling?  Completely different, though.\n\nRelated\n-------\n\n- https://github.com/endolith/freesound-thumbnailer  \n- http://dsp.stackexchange.com/q/184/29\n\nExamples\n--------\n\nGuitar pluck:\n\n[![plot of guitar](https://farm1.staticflickr.com/306/19701397555_58444c1ee0_z.jpg)](https://flic.kr/p/w1WP7c)\n\nViolins:\n\n[![plot of violins](https://c1.staticflickr.com/5/4741/39004191465_3a6908f435_z.jpg)](https://flic.kr/p/22qEFeK)\n\nSine wave:\n\n[![plot of sine](https://farm1.staticflickr.com/417/19201290270_a91a64774e_z.jpg)](https://flic.kr/p/vfKCCN)\n\nNoise:\n\n[![plot of noise](https://c1.staticflickr.com/1/395/19112954693_bc4a597098_z.jpg)](https://flic.kr/p/v7WTxB)\n\nTriangle wave chirp showing it can deal with low-frequency waves, too:\n\n[![plot of triangle chirp](https://live.staticflickr.com/427/19078876704_5380c50eda_z.jpg)](https://flic.kr/p/v4Wem5)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendolith%2Fscopeplot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fendolith%2Fscopeplot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fendolith%2Fscopeplot/lists"}