Need some advice from the Pros

Hi,

I need some advice developing a DSP app on PocketPC (specifically iPaq 2215 , which is PPC2003 I think). I have been developing Windows apps for a long time using VS with C++ as well as C#. So I am quite familiar with Win32 and the .Net framework on Windows but when it comes to developing for the PPC I am a complete newbie.


I have the following requirements for my PPC app:


1) Must be able to record and play back audio at the same time (full duplex). A typical example might be a spectrum analyzer that also needs to send out a test tone at the same time.


2) Need as small as possible latency from recording a buffer of audio until I can display some statistics about the audio on the screen (as real-time as possible).

So here are my main questions at this point:

1) Is full duplex audio even possible with typical PocketPCs (like iPaq 2215)?


2) For DSP, what language would be better? C# or C++? I'm hoping I can use C# because I just find it much nicer to program in. But I am aware that performance may be an issue. Maybe C# with managed C++ would be a good compromise?


3) Given the above, what audio API would be best? I'm thinking DirectSound, but for some reason I could not figure out how to use DirectSound in my C# test app. Do I need to install a specific SDK for this? I thought I needed to use Microsoft.DirectX.DirectSound but it was not found. Where do I get it?


4) I already have FFT DSP algorithms I wrote previously in C++ for Win32, and I would probably convert them for the PPC. But are there any good DSP libraries for PPC out there?


5) What is the best IDE to use at this point? VS .Net 2003, or VS 2005 .Net Beta 2?


I know it's a lot of questions, but I'm hoping someone can give me some good advice on most of my questions.

Thanks in advance!
BitFlipper

[2549 byte] By [BitFlipper] at [2008-3-3]
# 1
I can recommend for #5 to go for VS 2005 Beta 2. We support both CF 1.0 and 2.0 from VS 2005 that includes support for Pocket PC 2003 out of the box.
AmitChopra at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices General...
# 2
Thanks for the help. So I just install the PocketPC 2003 SDK in addition to VS 2005 Beta 2 and I'm good to go?

BTW, will this support both C++ and C# for PPC Version 4.20 (iPaq 2215)?

Thanks again in advance for any help.

BitFlipper

BitFlipper at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices General...
# 3
VS 2005 Beta 2 ships with support for PocketPC 2003 and Smartphone 2003. So you don't need to install anything extra.

Thanks,
Sriram Krishnan
PM, VSD

SriramKrishnanMSFT at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices General...
# 4
1) Full duplex audio is possible on the Pocket PC but is mainly up to the hardware. I personally don't know if the ipag 2215 supports this, but I will see if i can track down an answer on that.

2) C# or C++ is up to you. C# will have a bit more of a hit on startup but once the application starts up it should be fine. Managed C++ is not supported on the device at this time.

3) The managed (C#) version of DirectSound is not supported on the device at this time.

4) Not that I know of, but I'll ask around and if i hear of any i'll reply back
-- Brian

BrianCross at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices General...
# 5
Thanks for the response!

I have since discovered that the PPC is full duplex (at least the iPaq 2215 I have). I know this because I downloaded an app that plays back and records at the same time. It is a Real Time Analyzer that calculates the response of speakers, room, etc. So it sends out a test tone and analyzes at the same time.

I have the recording part working at this point using C#. I have not tried the playback yet but I believe I should not have a problem with that, as it is very similar to the recording (same API family).

From my experiments the PPC is pretty fast. I used floating point math initially, and while it was workable, I found that integer math was about 5 times faster, so I switched to that. I like to have some CPU overhead as I want the scrolling graph to be as smooth as possible.

One weird thing though: For some reason there is no difference in performance between the Debug and Release build. I would have thought that the Release build would be substantially faster, given that I do a lot of math. Any idea why it seems to be similar? The one and only "Optimize Code" option is enabled in the Release version.

BitFlipper

BitFlipper at 2007-9-9 > top of Msdn Tech,Smart Device Development,Smart Devices General...