Find Jobs
Hire Freelancers

Audio Processing Shared Library on Linux(repost)

$100-500 USD

In Progress
Posted about 14 years ago

$100-500 USD

Paid on delivery
We are looking for an audio processing shared library (.so) that can be called from a program written in C# for Mono in Linux. The .so will work mainly with memory resident byte arrays but will also need to create a file from memory resident data in GSM 6.10 format. We are looking for the following functionality: 1. Convert a byte array from PCM audio to GSM and GSM to PCM 2. Capture microphone input in either PCM or GSM into byte array 3. Play audio on speakers from byte array input 4. Write GSM 6.10 file from byte array data 5. Documentation on library and installation of necessary components The .so will be written in c such that it can be called from a C# program written with MonoDevelop on Linux (more information below). openSUSE is our development environment but the .so will also need to run on Debian and RHEL5. We anticipate the use of the GStreamer library in the .so. Other approaches that achieve the same results are highly encouraged. Mono knowledge is highly valued. ## Deliverables Planned Use The software will be used in a distance learning environment over the Internet. It is an enhancement to an existing application currently running on Windows. The student's PC will capture audio from either the PC's microphone or a USB (ttyUSB0) device in 8 bit, 8000mhz, PCM format. The audio from either source is converted to GSM 6.10 (also 8 bit, 8000mhz mono) and sent via .Net sockets to an audio server for processing. The student's PC will also receive GSM audio from the instructor via sockets and will be played on the student's PC speakers. Students are also able to record audio and create a file locally that will be sent via FTP to a storage location for later processing. The recorded audio file will be converted into .flv format on the server using ffmpeg, but the library needs to create the audio file in a format that ffmpeg can use to create the .flv. Development and Execution Environments The student application is currently written in C# using MonoDevelop 2.2.2 running Mono 2.6.3 on openSUSE. The .so needs to be able to be called from C#. Please reference [login to view URL] for further information on interacting with unmanaged code in Mono. Other execution environments will include Debian and RHEL5. We anticipate the use of the GStreamer library to do the actual audio functions like Banshee did (see example in libBanshee sources). Deliverables We anticipate the use of a Linux .so, written in c, that can be called from C# using Mono. This program will primarily deal with PCM and GSM 6.10 audio in byte arrays rather than files, although one function will be to create a file in GSM 6.10 format. Our development environment is openSUSE but this will have to run on Debian and RHEL5. The program will support the following four functions. Included with each function is pseudo-code that illustrates how the C# program might call that function. 1. Conversion of byte array audio // byte arrays will be received from a USB RF receiver in PCM format // They will be converted to GSM and sent via IP to a remote location for playback // type = type of conversion // 1 = PCM to GSM 6.10 // 2 = GSM 6.10 to PCM byte[] outBuff = CADEconvert(byte[] inBuff,int type); 2. Play audio on default PC speakers // The byte arrays will be received from a remote IP connection // inBuff is byte array of PCM or GSM audio // function will return an error code if audio can't be played bool canPlay = CADEPlay(byte[] inBuff); 3. Get microphone output into byte array // Microphone input is captured, converted to GSM if necessary, and sent via IP // function will return an error code if the operation cannot be completed // outBuff is a byte array of PCM or GSM audio int err = [login to view URL](); // Opens the microphone and starts recording [login to view URL](); // Closes the microphone and stops recording CADEMicHandler(byte[] outBuff); // Event fires when outBuffer has audio data 4. Write byte array to create a GSM 6.10 formatted file // Audio is received via the microphone or USB RF receiver // Audio converted into GSM format if necessary and written to a file // function will return an error code if the operation cannot be completed // inBuff is byte array of GSM audio int err = [login to view URL](string fileName); // Opens the specified file and formats for output int err = [login to view URL](byte[] inBuff); // Writes audio data to the file int err = [login to view URL](); // Closes the file Bidders should describe their approach, what 3rd party libraries (if any) are required, installation requirements, and sample calling functions. We also encourage creativity and if you have a better approach than calling unmanaged code from C#, we would welcome your ideas. We're not necessarily happy about that, but haven't been able to find a better solution. Our objective is to make the audio processing as efficient and as high quality as possible.
Project ID: 3379775

About the project

Remote project
Active 14 yrs ago

Looking to make some money?

Benefits of bidding on Freelancer

Set your budget and timeframe
Get paid for your work
Outline your proposal
It's free to sign up and bid on jobs

About the client

Flag of UNITED STATES
Ann Arbor, United States
4.9
5
Member since Nov 27, 2007

Client Verification

Thanks! We’ve emailed you a link to claim your free credit.
Something went wrong while sending your email. Please try again.
Registered Users Total Jobs Posted
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
Loading preview
Permission granted for Geolocation.
Your login session has expired and you have been logged out. Please log in again.