Chowning's initial research was in the 60's and his major AES paper was '73. Smith didnt actually get his degree until '75, the same year as Yamaha licensed Chowning's research.Zyxoas wrote:I might be wrong about JOS, but he's also from Stanford (CCRMA) so it's not entirely impossible that he was involved with FM.
Physical Modelling from a circuit schematic
- Beware the Quoth
- 35491 posts since 4 Sep, 2001 from R'lyeh Oceanic Amusement Park and Funfair
An idiot on Set Theory:
"In some cases there is an object called red that contains everything that is red. In much the same way a pot is a plate."
"In some cases there is an object called red that contains everything that is red. In much the same way a pot is a plate."
-
- KVRist
- 180 posts since 19 Apr, 2004 from Espoo, Finland
This has been done. Granted, it took hours to calculate a 10 second impulse response, but it did work. This was two years ago, so I expect the state of the art has somewhat improved since.AdmiralQuality wrote:So say you were doing a 3D room reverb. Maybe you'd divide the room up into thousands of little cubes, and yes, they'd have pressure, and that pressure would propagate according to the pressure of the neighbouring cube/molecules. And... it would all work out... maybe?
-
- KVRian
- 500 posts since 13 Oct, 2004 from Durham, NC USA
A convolution is a simulation in the same sense that PV = nRT is a physical model of gas pressure, volume, and temperature. It's a mathematical model that recreates the results of a physical process, without imitating the physical process. But that's not to say that a pressure-based model wouldn't be of some interest. For example, with convolutions, you can only model a specific physical setup -- one you've recorded. However, with a pressure-based room reverb model, you could GENERATE the impulse files to be used in a convolution. So, even if it's not practical to run in real-time, it could generate results that could be used in real time (and model things that would be impractical to record impulse files for -- they're not going to let me fire a starter pistol in St. Peter's, for example!)
Let's coin a term: "physical process modeling", for what AQ is talking about.
Let's coin a term: "physical process modeling", for what AQ is talking about.
-
- KVRist
- 277 posts since 6 Mar, 2003
Wow, how did you manage to do that? What books did you use to learn C++ and DSP programming? I also want to get paid for writing software (for the moment i work as as PeopleSoft/Oracle dba...)Karbon L. Forms wrote:Yup. First thing I did when I dropped out during final year was go learn C++. 1 year later I'm getting paid to write music software.AdmiralQuality wrote:I was gonna ask if you were going to Waterloo.
You know what? I went to FILM SCHOOL. I'm self taught. So I can't really advise you on the proper academic course to take. But yes, learn C++ (DON'T waste TOO MUCH time with Java or... god forbid... C#.. even though that's great stuff for getting a job... it probably won't be a job programming music software) and learn as much DSP as you have access to.
Aside from that, you're in the right place already. The information you'll get on this board is probably WAY better than you'll get from most classes. Get a C++ compiler, download the VST SDK, and make a simple delay or ring modulator... that'll get you started. Then start asking specific questions on this board and watch the fur fly as all us "experts" compete to prove who's the smartest.It's like Tom Sawyer white washing the fence... you really can get others to do it for you.
-
AdmiralQuality AdmiralQuality https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=83902
- Banned
- 6657 posts since 10 Oct, 2005 from Toronto, Canada
I'm some kind of special case or something, apparently.ludwig wrote: Wow, how did you manage to do that? What books did you use to learn C++ and DSP programming? I also want to get paid for writing software (for the moment i work as as PeopleSoft/Oracle dba...)
C I learned literally overnight (forget which book, though still nothing wrong with K&R!). I had used BASIC, Fortran and Pascal before (and pretty much learned them overnight too). Sure, there were some subtleties of C that took a few months of full time work to really sink in, but 90% I learned on the first night. Stuff that's usually confusing to newbs, like pointers... i was just like WHERE HAVE YOU BEEN ALL MY LIFE????
C++ I never really learned. I still learn something new about it almost every day. Never slowed me down much though, context sensitive manual is just an F1 away.
DSP I'm profoundly unqualified for. But one day late last October, just to see if I could, I independently designed what I later confirmed was essentially Moog's ladder filter, and it sounded GREAT. So I figured, hell, I'm 90% of the way to having a synthesizer! (And 10 months later... the last 10% is ALMOST done.
Now, I might not be formally trained in DSP, but I've been in love with synthesizers since about 1983, have absorbed everything I come in contact with about any kind of audio technology, and have been thinking constantly about designing one in the back of my mind the whole time.
So, I'm obviously some kind of idiot savant. Programming for 26 years (15 professionally) has probably helped a bit too. But I never wrote any audio code until last October.
And while there's lots of DSP stuff I don't know, and am probably too math-challenged to ever really understand, even the guys who aren't just steal well known algo's 90% of the time anyway. I'm certainly a good enough programmer to do THAT, if I ever find something I'm not up to (which I haven't yet, but could see it happening someday.)
Oh and by the way, I don't get paid for writing software. Not lately anyway. (SCAMP sales have pretty much covered the web bandwidth and filled the fridge once or twice.) I've spent the last year going broke. I'm hoping that will change in the coming weeks though when Poly is released, or I'm really in deep shit and will probably give up and never write another line of code again.
So, this is a big experiment... wish me luck. I need it!
- KVRian
- Topic Starter
- 759 posts since 10 Aug, 2004 from Fredericton NB
Well, good luck with your sales! 
-
- KVRAF
- 4222 posts since 23 Feb, 2004 from Tucson Arizona USA
Really? How independently? I'd be truly interested in understanding the process someone would go through to come up with something like this. What did you have to work with, in terms of software tools, and in terms of understanding the circuit you were trying to model, and in terms of your experience writing this kind of software?AdmiralQuality wrote:I independently designed what I later confirmed was essentially Moog's ladder filter
I'm really curious, since I have doubts that I will ever come up with *anything* truly independently.
-
AdmiralQuality AdmiralQuality https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=83902
- Banned
- 6657 posts since 10 Oct, 2005 from Toronto, Canada
Well... (and sorry to hijack this thread with all the self-horn tooting)...james0tucson wrote:Really? How independently? I'd be truly interested in understanding the process someone would go through to come up with something like this. What did you have to work with, in terms of software tools, and in terms of understanding the circuit you were trying to model, and in terms of your experience writing this kind of software?AdmiralQuality wrote:I independently designed what I later confirmed was essentially Moog's ladder filter
I'm really curious, since I have doubts that I will ever come up with *anything* truly independently.
As I said, I never wrote any audio code before -- well, at least not sample based, used to program lots of "organs" (played on the QWERTY keyboard) with the internal sound generating hardware on my TI-994A and on Atari 400/800/600 XL in the early/mid 80's. But these computers didn't have anywhere near the power to process AUDIO streams... they just had dedicated sound interrupts in them that would let you specify a frequency, and maybe a few variations on a pulse wave shape, and sometimes some volume envelope stuff, for... I think on the TI-994A it was 4 voices. (All this stuff meant for making your bleepy video game sounds.) Actual audio sampling (a word we spoke with much reverence!) meant HUGE bandwidth, and was something only the as yet unavailable "compact disc players" could do. As well as $30,000 Fairlight CMIs, E-MU Emulators, Synclaviers and other expensive dedicated hardware stuff. In 1983 a digital computer/keyboard called the DX7 blew us all away that a COMPUTER could be fast enough to SYNTHESIZE sound in REAL TIME!
So anyway, fast forward to 2006. (I didn't write a LINE of audio code in the interim. But tons of graphics code which is generally even harder.) So I just approached it knowing what I know. I didn't know much about the design to start with, so I wasn't setting out to emulate the circuit, just to come up with ANY algorithm of my own that would hopefully behave in a similar way. So I knew in advance that a lowpass filter rejects high frequencies... so another way of thinking of that is it doesn't like to move too quickly... almost like drag in a physics simulation (which I've been coding since I was 14. The "bouncing ball" has always been my equivalent of "hello world".)
BTW, development environment was MS C++, which I already had from many previous programming jobs. C++ is my preferred language, though I've been forced to use lots of others in various jobs over the years (and I always feel like I've had my nuts cut off!) But C++ is still what most software on your machine is coded in, produces natively executable machine code, is a very low level of abstraction above what's actually going on in the machine, and is therefore SEXY (and that's why they use it to make audio software! Graphics and games too! Anything where speed matters.) And again, been coding C since I taught it to myself in 1988. And back then, speed REALLY mattered.
So, without totally giving away my algo, I thought... well, if I mix what the signal IS NOW with what it JUST WAS an instant ago, then that will reduce the amount of change in a continuously variable way. If I mix it so it's 100% what it just was, then it won't change at all so will be cutoff at 0 Hz. If I mix it 100% new then there'd be no attenuation of any frequencies, so cutoff at Nyquist! So I did this, and lo and behold, I had a -6 dB/Oct LPF (measured it running on white noise with an FFT, and it looked like -6 dB/Oct)
At that point, I DID already happen to know that, coincedentally, filter poles (or stages) were ALSO -6 dB/Oct and that part of the reason Moog's filter was called a ladder was because it stacked stages to get steeper cutoff slopes. So I just put 4 of them in a row, and bingo... -24 dB/Oct filter! Nice and warm sounding.
Next was resonance. At first I treated it like a spring... I wanted to give it a tendency to want to keep going. So I basically added some momentum. This actually worked, but was kind of clunky and didn't sound quite right. Then I slapped myself in the head because, I knew "resonance" was also called "Q", which is what engineers call feedback in electronic circuits... so I tried just feeding the output back to the input. Oddly, it didn't work... then I remembered that it's NEGATIVE feedback that makes resonance. (I used to know some of the general stuff, mostly from reading every issue of Keyboard magazine throughout the 80's.
So that worked. I started jumping around shouting "Holy grail! Holy Grail!" and sent emails to all my friends saying I had invented the low pass filter.
Next day, I started googling and looking up actual circuit schematics of Moog's design, and was semi-stunned that they looked JUST like a flow chart of my code.
Now, this technique is actually well known (it's just an IIR... but I didn't even know that term yet) but there's still lots of room for improvement, particularly in how the resonance behaves (there's a delay in the digital version's feedback loop that isn't there in reality... causes some problems.)
So then I did something clever about that. (My computer graphics experience was some help here.) And poof, I had my first "product"... Naive LPF, within... I forget... something like 2 or 3 days to the first version that was 24 pole, resonant, with envelope follower (no GUI yet, but as a graphics guy I just fell into that stuff effortlessly.)
Again, I could have just looked up some stuff on digital filters and gotten to the same place (though not much quicker, research takes more time than thinking, sometimes!) But that wouldn't have been so fun -- and I was only originally trying to have fun. It was only after hearing my filter I started thinking... shit, why do so many of the OTHER digital filters out there sound so BAD? Is this a PRODUCT? So I released it as the free Naive LPF, and generally people LOVED it. I got emails from people all over the world thanking me and praising it's sound. So I had always considered the various soft-synths out there to be super-impressive and probably beyond my abilities. But on hearing my filter I thought, Hey... maybe I am smart enough to write a software synthesizer after all (cuz -- or so I thought anyway -- oscillators have to be easier than the filter! The filter's the only hard part!
Anyway, none of it has been that hard. (But its a big long slog, as all worthwhile software development always is!) But again, I'm the only person I know who tells stories like this. Everyone else I know who's smart and programs software studied like crazy to do it (and so did I, I just wasn't formally spoon-fed.) And also keep in mind that this story spans 25 years. Frankly, I have no idea HOW the kids today can learn this stuff... there's just too much all at once. For coders of my generation, we were chomping at the bit for every new little capability a computer could do... ready for it in advance.
Enough about me. Let's now return this thread to the topic of Physical Modelling.
-
- KVRAF
- 8389 posts since 11 Apr, 2003 from back on the hillside again - but now with a garden!


