Mr Bell
Mr Bell

Reputation: 9338

How to generate dynamic audio signal

I am looking to control some electronic servo's using the headphone port as a the control signal. I need to be able to generate a pulse width modulation signal and change the width of the pulse on the fly rapidly. I would prefer to do this in C# but can c++ is also an option. Any idea's how to go about doing this?

Upvotes: 3

Views: 2366

Answers (4)

Mr Bell
Mr Bell

Reputation: 9338

NAudio: http://naudio.codeplex.com/

Upvotes: 0

John R. Strohm
John R. Strohm

Reputation: 7667

Assuming you are talking about common model radio control servos, you are talking about a positive-going pulse 1-2 msec wide, with a pulse repetition frequency of 20-50 Hz. 1 msec is hard-over left, 2 msec is hard-over right, 1.5 msec is centered. ANY kind of jitter on the pulse train will cause instability in the servo.

That's likely going to be a VERY hard spec to meet on a card designed to emit sound.

You will have a much easier time using an outboard microcontroller to generate your PWM signal, and controlling it through a serial port. Assuming my goal was to get something working quickly, I'd probably use an Arduino board (Atmel ATMega328, on a board that makes hardware hacking very easy).

Upvotes: 1

MusiGenesis
MusiGenesis

Reputation: 75376

This looks like it might be what you need:

http://www.codeproject.com/KB/audio-video/CS_ToneGenerator.aspx

(third item from googling "c# dsp tone generator")

Edit: if you need to be able to rapidly change the tone parameters, then you're getting into the realm of software synthesis. There are a number of low-latency (essentially realtime) software synthesizers out there (Reaktor is one I can think of). All of them can manage simple tone generation like what you're after, and most of them can be driven by MIDI (which would make MIDI a viable choice, in contrast to what I just said in a comment to another answer here). MIDI is OK as long as you couple it to a specific tone generator/software synthesizer.

Upvotes: 0

James Black
James Black

Reputation: 41848

You can look for how to do a midi output.

I have only done this with C++, so with C# it was with interop, but here is a simple intro to it.

http://midiio.sapp.org/doc/windowsmidi/

Here are some nice answers to a similar question long before SO came onto the scene.

http://www.groupsrv.com/computers/about164021.html

Upvotes: 1

Related Questions