Back in December I released Elpis, an open source Pandora Radio client... and then Pandora promptly squashed the ability for third party clients like mine to connect to the service without some seriously complicated work-arounds. It still somewhat works, as long as you never skip a song or change the station :P But I've pretty much ended support of Elpis because it's just not worth playing an ever harder game of cat a mouse...
So... there are a TON of streaming music services out there and I'm trying to figure out if there is at least one that has a decently open API with which I would be able to retrofit Elpis to use that service instead. I'm guess, due to licensing, the answer is going to be a definite no... but I wanted to at least query the community before giving up?
An no, I'm not talking about something like Last.FM's api that just lets you get the song info but something that actually lets you play the music. I don't really care if there's already a C# API for it... as long as it's got a REST, RPC, etc. web API, I can make it work.
Any suggestions?
I ended up recording my speaker in c# using a wasapi loopback capture routine. It has a webbrowser control so it knows the title, artist and album. The browser streams the music to my audio output jack, and a separate thread reads the music from my sound card. The only way they could ever protect against that is to stop streaming in the first place.
Spotify has an API that allows you to stream music. I've never personally used it, but a colleague of mine was working on a personal project that allowed him to change what was playing on his machine via a web service; accessible from another machine over the network or internet.
Note: I believe you need to have a Pro account to develop with it, though.
Related
So, I have seen various posts regarding the use of an android phone as a keyboard and as a game pad. I'm actually working on a project that does just that. As you could imagine, I've hit a massive roadblock when it comes to sending the signal from the phone to the PC via USB.
I decided to use unity as the base of this project. I have a functioning GUI and I have some simple code to basically open the port, push through the Serial.write command, and close the port. I also understand that is code will not do me any good without the PC I'm connected to via USB recognizes the phone as a source of input.
That's where I'm stuck.
I've seen posts that involve explanations of how USB works, the different hex codes mapped to keys, ideas of modifying the kernel, third party programs, and third party devices, but nothing concrete on how to move forward in a video game on my PC by simply tapping the screen on my phone. It should be simple right?
So, I'm asking whether or not this project is worth pursuing for the few months I have left to do it or should I consider pivoting to a project that's a little closer to my pay grade(free)?
Although I am not sure if this post is a SO standard question, my train of thought would be to use bluetooth instead of using USB, client-server etc. as they are plagued by problems. While there maybe a certain lag in using bluetooth, programmatically this should be easily achievable. This maybe of interest to you: https://github.com/temach/HIDInterface
My understanding of how this stuff works is very limited, as I usually just make library calls which make the audio / video magically show up.
I want to be able to do MITM "attacks" to programs on my own computer. (I'd be the guy intercepting signals between the software and the hardware). This kind of thing could be useful in a number or scenarios.
For instance, for audio:
XP doesn't have a way to change the audio for specific programs while keeping the others unchange. It only has one audio
manager across all its programs. If I could intercept the signal (and
detect which program it was coming from) I could in theory make my own audio manager.
I could record conversations, possibly testing out any audio -> text software I may have/create.
many more.
For video:
(Primary goal here): record conversations. I have used a third party program, but I'm guessing what it is doing is taking snapshots because 1) the video is choppy and 2) when the mouse or other thing gets in the way of the video, it records that too. Wouldn't it be easier just to record the signal going to the video card from the specific program of my interest, then play it back when I want to see it again?
For network traffic:
For recording traffic to and from my computer, possibly discovering
programs that are communicating that shouldn't be.
For keyboard/mouse:
This could be useful for easily creating macros to fill out forms or
whatever, and I could custom encrypt the data to make sure it's
secure rather than relying on some third party software.
I'm sure there are many other applications for which this could be useful.
Thanks.
I'm trying to create a background application that allows me to easily change volumes of the rear channels
I've looked into the Core Audio API, and although I managed to change the balance/volume of the front speakers, the API seemingly had no access to the rear channels or any other surround channel. It only counted 2 channels for my audio device.
Is it in any way possible, using any API, to control the rear channel's volume?
Thanks in advance!
EDIT
Thanks, FMOD looks like what I need, although it's a bit overwhelming. :P What would I need to do, to change the volume of a specified channel. I believe I need this function:
FMOD.RESULT result = channel.setVolume(1.0f);
But then I need to find a way to specify the channel...
Also, to be clear: I need to change the volume of any running application, say Winamp.
Best chose for working with audio file is "Fmod.dll".this have a lot of Privilege to work with audio file.
This is an audio content creation tool for games, with a focus on a
‘Pro Audio’ approach. It has an entirely new interface that will be
more familiar to those using professional Digital Audio Workstations
than existing game audio tools and is loaded with new features.
I already use this,this is very powerful component and easy to use.
I'm going to be creating a small application as a pet project that records of list of songs that a Pandora station plays over time. The challenge is that Pandora uses flash, so I'm unsure of how to grab the song title from the page.
Typically for something like this I would create a WebRequest and read the response, but with Flash in the mix, I'm not sure if this is the right way to proceed.
My question:
Is a WebRequest the right approach? If not, what alternatives might be available for grabbing this information? A tool like Selenium comes to mind, but I'm not sure that would handle this situation very gracefully.
I'll be doing this from a PC, so either developing an app using C# or another tool completely would both be options.
I would like to know if it is possible to mute only a specific window. For example I have got Firefox open and two more windows. I want to mute everything related to Firefox but not the whole sound of my computer.
Is this possible? If so, how can it be done?
look, basically, there isn't any relation between the window handle and the sound which something in its code is playing.. the audio card can't tell who wants it to play.
theoretically, there is an option to do what you want on web browsers, but it's not easy, and not 100%. it goes like this:
most of the audio that is playing from browsers are from known objects like wmp/quick time/vlc/flash/etc..
when the user will choose to mute all audio from firefox, your application will search those known objects in the firefox tabs, and mute/unmute them using their api.
in order to do that, you will need to write an extension to firefox, so you could have an access to the tabs memory from your application.
btw, what os?
and check this out: http://www.indev.no/?p=projects#flashmute (flashmute) i believe it does what is said - only for flash.
On Vista/Windows 7:
I expect there to be some API which can change the volume on a per process basis which the audiomanager uses. Should be relatively straight forward to use.
On XP
I don't think there is any built in functionality for what you want to do. I recommend just not offering that feature on XP. But if you really want to, there are some hackish solutions:
Usermode API hooking. Intercept the calls to audioapis with your own functions. These change the volume or manipulate the audiosignal so you get what you want. You need to do this differently for any of the several available audio-apis. I guess DirectSound and DirectShow are particularly annoying. And this requires injection of a dll into any process you want to manipulate. And this dll better not require the .net runtime. Search for IAT(import address table) or EAT(export address table) hooking.
Kernel mode audio hooking. Write a driver which intercepts the audio in the kernel and changes it on a per process basis. No clue how to do that.
But as you can see both solutions aren't good.