NDSolve with forcing function via "digital waveguide"

  • Context: Mathematica 
  • Thread starter Thread starter Swamp Thing
  • Start date Start date
Click For Summary
SUMMARY

This discussion focuses on simulating a vibrating reed or membrane within a digital waveguide using NDSolve. The goal is to create pressure variations that resonate through a tube, stabilizing oscillations. The user seeks to extract the reed deflection value "x" at each step solved by NDSolve, along with timestamps, to compute pressure and integrate it into the digital waveguide model. The user also inquires about enforcing a fixed step size in NDSolve for consistent sampling.

PREREQUISITES
  • Understanding of digital waveguide theory and implementation
  • Familiarity with NDSolve in Mathematica
  • Knowledge of pressure dynamics in fluid systems
  • Basic skills in numerical interpolation techniques
NEXT STEPS
  • Research "NDSolve fixed step size" techniques in Mathematica
  • Explore digital waveguide modeling in audio signal processing
  • Learn about interpolation methods for non-uniformly sampled data
  • Investigate pressure variation calculations in fluid dynamics
USEFUL FOR

This discussion is beneficial for audio engineers, computational physicists, and anyone interested in simulating acoustic systems using digital waveguides and numerical solvers like NDSolve.

Swamp Thing
Insights Author
Messages
1,047
Reaction score
780
TL;DR
Mathematica's NDSolve with forcing function coming through "digital waveguide"
I want to simulate a vibrating reed or membrane that modulates the air flow in/out of the end of a tube. This is supposed to create pressure variations that travel to the other end and return to the reed, resulting in a resonance effect that stabilizes the oscillation. Example: www.youtube.com/watch?v=Jk7J4_bneZo

The tube would be modeled as a "digital waveguide", which is essentially a set of shift registers with inputs and outputs cross-coupled in a certain way...
https://www.dsprelated.com/freebooks/pasp/Digital_Waveguide_Models.html
https://www.ece.uvic.ca/~bctill/papers/numacoust/Smith_2006.pdf

So I need to obtain the finally determined value of the reed deflection "x", after each step that NDSolve solves, along with the time stamp. I can then compute the pressure and "push" it into the shift register. Meanwhile I can "pop" a delayed reflected value from an output port of the waveguide and apply it as if it is a simple time-dependent forcing function (as far as NDSolve knows or cares). Ideally, I would like to force NDSolve to use a specified fixed step size. If this is not possible, I will have to take the non-uniformly timed samples and interpolate to get a uniformly sampled signal for the waveguide.

Is there a way to do this? My experience with NDSolve (including its more conventional typical applications) is pretty limited.
 

Similar threads

  • · Replies 2 ·
Replies
2
Views
2K
Replies
17
Views
5K
Replies
7
Views
4K
  • · Replies 6 ·
Replies
6
Views
4K
  • · Replies 13 ·
Replies
13
Views
3K
  • · Replies 264 ·
9
Replies
264
Views
32K
Replies
3
Views
4K