Commit graph

862 commits

Author SHA1 Message Date
David Kleingeld
a5a49fb5a2
Merge pull request #627 from UnknownSuperficialNight/add-contributing-guidelines
Add CONTRIBUTING Guidelines
2024-10-07 14:44:11 +02:00
UnknownSuperficialNight
ab66761e91 Rename Testing to Unit Tests 2024-10-06 15:38:31 +13:00
David Kleingeld
aee7ffb014
Merge pull request #631 from ugochukwu-850/issue#628
Issue#628: Fix total_duration malfunction after speed mutation
2024-10-05 15:08:35 +02:00
ugochukwu-850
4f751ac809 Removed redundant comment 2024-10-05 10:53:44 +01:00
ugochukwu-850
e33bd63bed Fix for total duration for speed mutation issue
Previously the total_duration function calculated the total duration by multiplying instead of deviding by the factor
Causing the total duration to increase as speed factors increased instead of the other way round .
I have fixed this
2024-10-05 10:37:33 +01:00
UnknownSuperficialNight
0aa7f5e703 Merge: Integrate 'Integration Tests' from user dvdsk
- Incorporate Integration Tests contributed by dvdsk
- Add leading numbers to bullet points mistakenly commited without numbering
2024-10-05 15:24:58 +13:00
UnknownSuperficialNight
417d5a10b3 Merge branch 'add-contributing-guidelines' of https://github.com/UnknownSuperficialNight/rodio into add-contributing-guidelines 2024-10-05 15:09:10 +13:00
UnknownSuperficialNight
d57e410ca7 Add Contributing guide and Integration Test guidelines
- Link to CONTRIBUTING.md in project root
- New Integration Tests section:
  - Avoid sound output in tests
  - Tips for testing audio sources
  - Suggest examples for audible features
  - Note challenges in automated audio testing
2024-10-05 15:06:27 +13:00
github-actions[bot]
dd3e8de93a
Contributing.md adds section on integration tests, improve new source section
Specifically notes some example tests and how they test. Also mentions
sometimes you just have to listen, recommends adding example for that.

Author:    dvdsk <noreply@davidsk.dev>
Date:      Sat Oct 5 02:06:39 2024 +0200
2024-10-05 02:34:44 +02:00
UnknownSuperficialNight
b6a90594aa Remove 'Ensure code quality' 2024-10-05 02:34:56 +13:00
UnknownSuperficialNight
dc85fe8045 Update testing guidelines in CONTRIBUTING.md
- Encourage use of temporary unit tests during development
- Clarify that rough, non-comprehensive tests are acceptable
- Allow inclusion of temporary tests in pull requests
- Explain rationale for removing tests before final merge:
  - Easier refactoring
  - Reduced necessity due to Rust's type system
- Maintain instruction to run tests with 'cargo test'
2024-10-05 02:32:13 +13:00
UnknownSuperficialNight
41db8554fb Add guidelines for TDD, PR workflow, and optimization
- Start with tests for new features
- Open draft PR after initial functionality
- Refactor, benchmark, and optimize
- Offer support for test creation
2024-10-05 00:10:37 +13:00
UnknownSuperficialNight
c19faddd32 Add 'Useful External Resources' Section 2024-10-04 23:56:03 +13:00
UnknownSuperficialNight
400dfe5a6e Add Rust performance book mention 2024-10-04 23:52:22 +13:00
UnknownSuperficialNight
c0066f9445 Updates a few changes 2024-10-04 17:07:38 +13:00
UnknownSuperficialNight
8c9f2faa00 Init commit of CONTRIBUTING.md 2024-10-04 16:39:30 +13:00
github-actions[bot]
6f2518eb1f
adds draft for new release announcement 2024-10-04 02:19:44 +02:00
David Kleingeld
c29fa1b8b9
Merge pull request #621 from UnknownSuperficialNight/feature/automatic-gain-control
Add Automatic Gain Control
2024-10-03 13:38:04 +02:00
UnknownSuperficialNight
bdbc159eab Remove experimental bench comment 2024-10-03 01:19:46 +13:00
UnknownSuperficialNight
5ce1fff779 Added non-atomic is_enabled() 2024-10-03 01:13:20 +13:00
UnknownSuperficialNight
f8cf3c555c Added getters 2024-10-03 01:06:37 +13:00
David Kleingeld
4aa0fd4667
Merge pull request #625 from iluvcapra/patch-1
Update CHANGELOG.md
2024-10-02 02:26:11 +02:00
Jamie Hardt
b7e67c10d3
Update CHANGELOG.md
Forgot to change the name of the SignalGenerator struct here 😣
2024-10-01 09:40:30 -07:00
UnknownSuperficialNight
2610a27532 Add documentation to non experimental AutomaticGainControl 2024-10-02 04:59:57 +13:00
UnknownSuperficialNight
af210a67cc Fix agc_disable benchmark 2024-10-02 04:57:05 +13:00
UnknownSuperficialNight
ef602860ba Trigger CI checks 2024-10-02 04:49:44 +13:00
UnknownSuperficialNight
e2ee86e4b9 Fix unused arc import 2024-10-02 04:46:21 +13:00
UnknownSuperficialNight
fd94703dc7 Merge branch 'master' into feature/automatic-gain-control 2024-10-02 04:42:23 +13:00
UnknownSuperficialNight
3ce64ef53f Add experimental flag to enabled dynamic controls 2024-10-02 04:31:16 +13:00
UnknownSuperficialNight
db0bfb09d3 Add better documentation for AutomaticGainControl's Implementations 2024-10-02 00:53:22 +13:00
UnknownSuperficialNight
cb85bce7ae Enforce RMS_WINDOW_SIZE is a power of two at compile time 2024-10-01 22:35:23 +13:00
David Kleingeld
1d95a5ca45
Merge pull request #602 from iluvcapra/synth-waveforms
Synthesizer Waveforms
2024-10-01 10:37:10 +02:00
UnknownSuperficialNight
3e4bf8b12b Implement thread-safe parameter control for AGC using AtomicF32
- Replace static parameters with AtomicF32 for thread-safe access
- Add methods to get Arc<AtomicF32> for release_coeff, attack_coeff, absolute_max_gain, and target_level
- Enable real-time modification of AGC parameters during playback
- Use Ordering::Relaxed for optimal low-latency performance
- Remove set_* methods in favor of direct atomic access
- Update internal methods to use atomic loads consistently

This change allows for dynamic adjustment of AGC parameters
without interrupting audio playback, improving real-time control
and responsiveness of the Automatic Gain Control system.
2024-10-01 20:29:22 +13:00
Jamie Hardt
135024650e rustfmt 2024-09-30 22:02:46 -07:00
Jamie Hardt
322bdd5f5f Rustfmt and a doc comment 2024-09-30 21:59:44 -07:00
Jamie Hardt
a1fa144f57 Adding renamed signal_generator.rs 2024-09-30 21:50:30 -07:00
Jamie Hardt
8899e6709f Renamed TestWaveform to SignalGenerator 2024-09-30 21:45:30 -07:00
UnknownSuperficialNight
86cb156e47 Refactor CircularBuffer to use heap allocation to avoid large stack usage
- Updated CircularBuffer implementation to allocate on the heap instead of the stack to prevent excessive stack usage (32KB) which can lead to stack overflow issues.
- Optimized index wrapping logic using bitwise operations, leveraging the fact that RMS_WINDOW_SIZE is a power of two for improved efficiency.
2024-10-01 13:56:28 +13:00
David Kleingeld
15cca73388
Add dependency notice (libalsa on linux) to readme 2024-10-01 02:35:16 +02:00
UnknownSuperficialNight
42fe8320aa Enhance automatic_gain_control documentation
- Add references to get_agc_control method in automatic_gain_control docs
- Include a quick start example demonstrating usage of get_agc_control
2024-10-01 02:28:13 +13:00
UnknownSuperficialNight
b59533e382 Add new benchmark for disabled_agc 2024-10-01 00:50:45 +13:00
UnknownSuperficialNight
2442aa09e8 Add real-time toggle for AGC processing
Implement get_agc_control() to allow dynamic enabling/disabling of AGC
during audio playback.
2024-10-01 00:45:48 +13:00
UnknownSuperficialNight
68e1bd21c0 Pass min_attack_coeff directly 2024-09-30 20:09:05 +13:00
UnknownSuperficialNight
a8a443ba51 Enhance AGC stability and flexibility
- Increase RMS_WINDOW_SIZE for more stable measurements of very low frequencies
- Replace MIN_ATTACK_COEFF with release_coeff for improved customizability

These changes provide better handling of low-frequency content and allow
developers more control over AGC behavior, particularly in attack/release
time adjustments.
2024-09-30 19:46:46 +13:00
Jamie Hardt
44cb217d48 Code review changes 2024-09-29 16:45:29 -07:00
UnknownSuperficialNight
9bf97acfa6 Update benchmark to new default values 2024-09-30 12:44:55 +13:00
Jamie Hardt
9d20ea21f1 One more tweak for rustfmt 2024-09-29 16:23:52 -07:00
Jamie Hardt
371bbda49e Some cosmetic changes for rustfmt 2024-09-29 16:18:42 -07:00
Jamie Hardt
5fa0188cc3 Added signal_generator.rs example 2024-09-29 16:15:41 -07:00
Jamie Hardt
b373f5253a Moved "noise" feature documentation
...into the previous "Optional Features" block
2024-09-29 16:02:07 -07:00