Arduino as audio processor

I know the protocol wants specifics, but I just need some capability concepts here ….
I see from the Internet that Arduino can d ADC conversions of certain types of pre-processed audio files ….. but is there a way to convert the OUTPUT of the ISD1820 to a PWM signal for synchronizing that to the Sound ?

Quite possibly, but we can't read your mind, so you need to actually write what you want to do. What does synchronizing to that sound actually mean?
Realize the audio output of the device is AC driving a very low impedance device meaning lots of current, but low voltage.

Yes-some challenges, certainly …
… and yes, a description IS in order:
I have built a little Robot that runs through a short routine (turn head, open eyes, blink, do a little happy dance, speak a greeting, turn head back, close eyes) - all functions operated from Arduino Uno by small DC motors and Gears/Cams. I built an LM386-based Audio Amp and use an ISD1820 for the Greeting.

The device IS Functioning, but synchronizing the Jaws to the Sound has been problematic (at best …. simply motor on/off enable with a spring return). The Code is shamefully crude and I was hoping to do better, but I don’t know how ……

Possible you don't know how is because you cannot define what you mean by synchronizing to the sound. You seem to have been quite successful with the other parts.

BTW I appreciate the response back …. and sorry, I tend to be a bit wordy - I’ll try to be more concise in future.

Posting your code would be a very concise description.
I wonder if you are trying to sync the jaw to the music or the other way round.
I also wonder what triggering event you are using to try to sync them.

Again, I’ll try to be more concise …. For the Greeting, the Robot has a Fixed Upper Jaw and a Motor-Driven Lower Jaw. In the Code, I drive the Motor/Jaw downward, and allow a Spring Assembly to return it.

Workable, but getting the timing just right is obviously difficult. I am NOT controlling Motor Speed, simply it’s Duration. Besides being a sloppy approach, I thought PWM Speed control might be a better way, but I’d like it to actually be driven by the audio.

From the Web, I’ve read this can be done with pre-processed audio files converted through the ADC function, but I want it to come from the actual spoken Greeting.

I’ll assume level-shifting the audio and mapping it to the PWM out can be done - I just haven’t seen a way to do so …..

Thanks for the reply - I am syncing the Jaw Movement to a spoken Greeting Phrase. It IS currently working …. but I’m embarrassed
by how crude it is - simply motor on/motor off in short bursts.

I’m new to this, so if you can show me how, I can post the code (or would you prefer it be in an email ?)

You could use a music event to trigger the interrupt pin in your Arduino

Thanks for taking the time on this - I do appreciate it.

The “event” is the enabling of an ISD1820 Sound Recorder. That may be able to go to an Interrupt Input, but how then do I synchronize Motor Operation to that Sound Output ?

Apparently, I've had "glitches" in communications, so I've switched from Phone to PC.
Hopefully, this is getting through now ....

You actually have to tell us what you mean by this. Just repeating the statement gives NO useful information. What part of sound output does what to the motor?

Sorry, bear with me, please.
Currently, the Sound Output doesn't do anything directly to the Motor, and that's the problem ....
I "manually" turn the Motor On for a short duration, and allow the Spring to return it, in a best-guess
of the required timing:

digitalWrite(ISD1820_PL, HIGH); // enable Sound
delay(xxx); // sync delay
digitalWrite(mtrpin, HIGH); // Motor ON
delay(xxx); // Delay Burst
digitalWrite(mtrpin, LOW); // Motor OFF

... repeatedly through the duration of the Greeting Message.

YEAH ..... it's obviously VERY time-consuming and embarrassingly crude :disappointed: but it got me up-and-running through a proof-of-concept phase, quickly.
Now, I'd like to try a better, cleaner, approach .... especially if I find a need to change that recorded Greeting

You mentioned Interrupts .... and it got me thinking : if the ISD1820 Output were able to be level-shifted
appropriately, then sampled for the high/low points of the voice inflections, could those possibly be used as
the start/stop triggers for the motor ?

That was my intention, now you've got it.
Give that a shot

Oh, good :relaxed: but I'll need a little help on that, if you don't mind working with me on it ....

I'm still making some assumptions here ..... the Output of the ISD1820 to the Amp is a sinusoidal
differential signal (cannot be single-ended or the amp goes berserk), but I THINK I could tap off
one side as a single-ended line to the Arduino. That would need to be "shifted" to be all positive
for the Arduino, right ? Can that somehow be done with Code ? (or will it require more electronics
(I'm getting pretty limited for space, now)

Then, I suspect that level will have to be brought in by something like analogRead (inputName);
converted to a 0-1024 value (?), and that value used as a Threshold in a Loop or IF statement
that does digitalWrite (mtrpin, HIGH); // ON if> xxx , then digitalWrite (mtrpin, LOW); //
OFF if<xxx. I'm not a wizard at this, but does that make sense ?

I’m afraid I haven’t “got it” ….. I’m stumbling on how to write code to do this, and I cannot post it because I don’t have any yet …

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.