{"id":17893334,"url":"https://github.com/techno-coder/signal_processing","last_synced_at":"2025-10-17T03:51:08.744Z","repository":{"id":118644837,"uuid":"149081178","full_name":"Techno-coder/signal_processing","owner":"Techno-coder","description":"Rust library for various signal processing algorithms and structures","archived":false,"fork":false,"pushed_at":"2018-09-24T10:51:42.000Z","size":84,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-10-28T16:56:04.413Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","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/Techno-coder.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":"2018-09-17T06:49:09.000Z","updated_at":"2024-02-09T15:11:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"28c63fc5-4af9-45b8-ab5d-d9fd2c40cc7f","html_url":"https://github.com/Techno-coder/signal_processing","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/Techno-coder%2Fsignal_processing","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techno-coder%2Fsignal_processing/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techno-coder%2Fsignal_processing/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Techno-coder%2Fsignal_processing/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Techno-coder","download_url":"https://codeload.github.com/Techno-coder/signal_processing/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229890114,"owners_count":18140043,"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":[],"created_at":"2024-10-28T14:49:34.297Z","updated_at":"2025-10-17T03:51:03.686Z","avatar_url":"https://github.com/Techno-coder.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# signal_processing\nRust library for various signal processing algorithms and structures\n\nThis is a work in progress library that adapts many algorithms from \"The Scientist and Engineer's Guide to\nDigital Signal Processing\" book. I created this library with the ultimate goal of making a pitch shifter and\nto document my learning in digital signal processing along the way.\n\n## Algorithms and Data Structures\n- Phase Vocoder\n  - Pitch shifter\n- Convolution\n- Correlation\n- Fourier transform\n\n## Why 64 bit floats?\nI've tested my library with both 32 bit floats and 64 bit floats and I've found that 32 bit floats have a\nsignificant amount of rounding errors to the point that audio processed with 32 bit floats have a very noticeable\ndrop in quality. I'm sure that many of the rounding errors can be fixed by changing some floats to be 64 bit but\nI believe that this is not worth the effort. Processors can do floating point arithmetic for both 32 bit and 64 bit\nfloats in around one clock cycle now so the only performance benefit gained would be through cache and memory usage.\n\n## Usages of `unsafe`\nThere are several segments of `unsafe` code. Most notably is in the Phase Vocoder and Short Time Fourier Transform files.\nThis unsafe code mutates array elements that cannot be done normally as it is in a parallelised section. Without the\nparallelisation the code runs 6 - 10 times slower so I believe this is definitely worth the \"unsafeness\" (`cargo bench`). \nTheoretically this should not cause any panics or have any race conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechno-coder%2Fsignal_processing","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechno-coder%2Fsignal_processing","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechno-coder%2Fsignal_processing/lists"}