iPhone Bluetooth Audio API - iphone

My car has bluetooth capabilities for connecting to my iphone for phone calls; however, it does NOT support bluetooth audio for music streaming. I know apps like viber or skype also use bluetooth for phone calls. My question is: is it possible to write an app that fakes phone calls to stream music to my car, as if someone is calling me (but is actually playing music)? Is there some other way to hack this to get bluetooth audio streaming?

No need to jailbreak your phone. Just buy the A2DPblocker app. Costs $2.99. Sound quality isn't perfect but better than the alternative. Worked for my 2010 Volkswagen so should work for any other car that supports bluetooth but not streaming music.

First poster -
There is already an app to do this - it's part of SBSettings called Bluetooth Mono that needs to be installed (so only MONO and only for JB'd phones).
Second poster -
I suspect you are correct about HSP - I've installed the app and the sound quality is terrible.
So, I've put all my music on a USB stick and leave it permanently plugged in. Far superior sound.
Mike

I don't think there's an easy way to do this. But the bigger issue is that it would sound terrible. The bluetooth connections for doing phone calls use headset profile (HSP) and are low bitrate, mono, and frequency limited to voice ranges.
Applications for streaming audio/music over bluetooth use A2DP profile, which is much higher bandwidth and stereo.
If you try to pipe music over a an HSP phone link it will sound horrible, just as it does if you are talking to someone on the phone and they have music playing in the background.

Related

In iPhone, to support bluetooth headphone, do I have to do something?

I'm developing music app.
I did nothing to support normal wired headphone or headset but I can hear music with my headphones.
Do I have to write some code to support bluetooth headphone or bluetooth headset?
Do I have to buy bluetooth headphone to check it works?
EDIT
Sorry, I did something to support wired headphone.
I wrote code to detect the event that headphone unpluged.
And when headphone unpluged, my music app paused.
Does this code work for bluetooth headphone, too?
I'm using the same code as this answer to detect unpluged-event
This should normally work, without writing.
Maybe you can ask on facebook for someone to test it.
But it should work

How to simulate a call so that the bluetooth audio get streamed into a vehicle?

The iphone connects to most vehicles via bluetooth. Phone calls as well as voice control and siri also get routed via the bluetooth audio and mic of the vehicle.
How can i stream audio in the same way?
I have sen answers about the vehicle capability to support streaming audio, but this is not what i am looking for. If siri and voice control can stream over the vehicle audio as it is treated as a voice call then i should be able to stream everything else.
Thank you
It sounds like you want to simulate a call originated from your iPhone, as opposed to some other device that pretends to be a phone and pairs with your car. You can’t, because Apple doesn’t provide APIs to do that.
I think that false.
Google did it.
They do it in Google Search. If you search using voice, it streams simulating a call.
Something similar happens with the voice notes application from Apple. You can stream music to the car as if it was a call.
Actually, my car doesn't support A2DP, only calls, and using voice notes I can play music (odd, but works).
But..., how can we implement it???

accessing itunes music data

If it helps, I am using Xcode 4.3.1 and objective-c to program simple apps on an iPhone 4s running iOS 5.1.
I would like to find the documentation for a class with methods to capture the digital music signal that iTunes sends to an output device (speaker, headphones). I assume it must be accessible since it exists in the phone prior to reaching the speakers. I am not attempting a pirating move, but rather would like to route this music signal to the phone's outgoing wireless signal so that it can be heard clearly by someone on the other end of a call (ex. a method to play a favorite song, with decent sound quality, for a friend out of town). Can anyone point me in a general direction (if that direction exists) so that I can begin learning more?
Thanks,
Seth
One, I'm pretty sure there's no way to get the raw audio samples from a song in the library. You can get a list of the tracks and tell the system to play one, but that all happens outside your app. Two, apps can't access the cell phone—there's no way to send audio from your app to a phone call. Three, even if the first two did work, calls are heavily compressed and tuned to voice data. Call a friend and have them play a song through the phone, see how it sounds. Not very good, I'll bet.

Simple embeddable MidiSynth for iOS?

I have a guitar diagram app for Android that I am porting to iOS. Android has a embedded midi synthesizer (sonivox), so I can generate midi files and let Android handle the playback.
Is there a way to do this on iOS? Or are there very lightweight embeddable synths for iOS?
Since iOS 5 there's now the AUSampler audio unit for which you can load a sound bank (apple preset and soundfonts) and then control the sampler/synth via MIDI messages.
Seee this example app:
https://developer.apple.com/library/ios/#samplecode/LoadPresetDemo/Listings/ReadMe_txt.html
It works great!
Update: My answer is out-of-dated. #lukebuehler's answer is much appropriate.
If you don't mind non-opensource solution, try FMOD. Being a commercial audio engine for games, fmod equips a simple MIDI synth. I've tried the free evaluation version. It plays GM MIDI files correctly on my iPhone 3G.
If what you want is not just a SMF file player, you want a full function GS/GM softsynth, which can response individual midi events in realtime. You can try the midisynth from CrimsonTech. Its license fee is fair. Crimsontech provides several demo apps in the appstore. Besides, it also provides an evaluation SDK for free. You don't need to pay a penny for the license until you're really going to publish your app.
I don't think MIDI support in iOS 4.2 allows playback of MIDI data from the phone itself. It is merely for sending and receiving MIDI commands to other MIDI devices.
From the recent iOS 4.2 docs, it seems that you can use the MIDI support to send MIDI commands to other devices for playback. You can also receive commands from other devices and make changes to these commands, or to save it in a file. However I can't find any support to actually play MIDI file from the phone directly. Someone please correct me if I'm wrong (I wish I'm wrong!!).
There is MIDI support in iOS 4.2. If it is the same as what OS X provides then trhere will also be a basic synth included. Check it out.

Sharing Audio over bluetooth

I want to write a function in my iPad App, which allows me to stream the music choosen on iPad to the connected Game-Interfaces (iPod, iPhone...) via bluetooth. Does anyone knows a simple solution or maybe wants to share some sample code?
Thanks for help!
I am doing something very similar. I have my iphone connecting to multiple devices to stream audio to them, but I want the device that is streaming the audio to also play audio as well.
You can look into the GKSession in the GameKit API and that should give you a good start.
Also maybe openAl, but I think that might be a little overboard. I heard Core Audio has a built in feature for bluetooth devices that are connected to play audio through them but I dont think this goes for iPhone, iPad, iTouch etc....
I have also created my own peer connection interface that allows me to see multiple bluetooth devices that are running my app. I then can click each one and each gets connected. I then I added a test to push a text message to all connected devices for testing. Next I need to find out how to stream audio to the connected apple devices.
If anyone has any info on this I am sure we would both appreciate it.