FingerPlay MIDI


FingerPlay MIDI is a MIDI controller for Android. Any changes made to the controllers on your phone are transmitted over the WIFI network to a receiving computer using either OSC messages or its own FingerPlay format. The MIDI messages can then be sent to any music software capable of receiving MIDI input.
Download FingerPlay MIDI from the Android Market
Download FingerPlayMIDI-0.9.0.apk if your phone can’t access the market.
Get the source code from Google Code.
A FingerPlay MIDI patch for Pure Data by Bérenger Recoules
FingerPlay MIDI Layout Generator by Bruno Molteni
FingerPlay in Windows with LoopBe1
Download and install Java and remember to set the path to Java.
Download and install a virtual MIDI driver like LoopBe1.
Download the FingerPlayServer zip-file and unpack it somewhere on your hard drive. Start it from the command line with:
java -jar FingerPlayServer.jar
The server will display the IP address and port number you need to connect to it from your phone.
Once you’ve connected, select LoopBe1 from the list of available MIDI output devices.
Start Ableton and make sure LoopBe1 is enabled for input in the MIDI settings.
Any changes made to the controllers in FingerPlay will be sent over the network to Ableton as a MIDI Message.
OSCulator
Click the top right button in FingerPlay to go to the settings screen, choose “OSC Server” as the “Server Type” and in “Server Address” enter your computer’s IP address followed by “:8000″ (which is the default port for OSCulator).
So if your IP address is 192.168.0.4, enter “192.168.0.4:8000″.
If the phone manages to connect you can back out of the settings screen and play around with the MIDI controllers in FingerPlay which will send messages to OSCulator.
If you see the messages coming through to OSCulator, you can click one of them and set its event type to “MIDI CC” and give it a control change value in the “Value” column. This should be enough to send it to Ableton as long as you’ve enabled OSCulator in Ableton Live’s preferences (enable “track” and “remote” for OSCulator under the “MIDI Sync” tab).
Custom layouts
If you create a folder on your sdcard called FingerPlayMIDI and put a file in it called layout.xml, FingerPlay will use that file instead of its own default layout.
Here’s the default layout file:
http://fingerplaymidi.googlecode.com/svn/trunk/client/res/raw/layout_default.xml
Remember to turn off USB storage before starting FingerPlay MIDI or it won’t be able to access the file on the card.
Hello. Will this be developed to work with a Mac? I have an Android phone, but use a Macbook Pro as my DAW.
I downloaded the app on my Asus Transformer and after a while the app always force closes. Also I can’t reach the settings button to set up the server.
@Henri Oh, that’s annoying. But I can either email you the GUI code or if you have a user on assembla.com I can give you access to the source code for it.
The only reason it’s not in the SVN is because I wasn’t very happy with the code
Hello flat20,
I would like to make fingerplaymidi suitable for my old android 1.5 library. With the current source GUI.jar checks whether the SDK is 4 or higher because of multitouch. Is the source fo GUI.jar avaible so I can create a android 1.5 version of fingerplay?
The source code is available from: http://code.google.com/p/fingerplaymidi/
The most recent code, albeit a bit buggy, is in the dev branch.
Hi,
would be nice to use this app, but i dont understand how to connect to ableton..i dont even know if there is a connection to my Computer
[...] [...]
I’ve been playing with FingerPlay for a while now, and I’ve made a few custom screens, but I’m wondering how I might be able to change the background image in an effort to help me organize some groups of buttons. All the links I’ve seen to the source code are broken, and I’ve tried looking through the folders on Android with Root Explorer but can’t seem to find the original image anywhere. Where might this be?
Thanks
I got finger play working, but I have a little problem. I want to get ride of the “press” function on the slider and xy. It seems to send a signal when I start using the slider and I don’t want that.
Thanks!
Isaac
the first time that i installed fingerplay everything went right. now i can only get on/off messages does anyone helps me?
Hi,
Is it possible to have a implementation of a switch between UDP and TCP in the OSC server type?
In some situations the UDP Packets disappear and that should not happen in my setup.
Thanks for any response. Keep up the great work
@Jarrad They’re 0.0f – 1.0f. Good luck! I wish I could spend more time on FP and fix all these outstanding issues and bugs but it’s not likely to happen
@flat20: -.- lol. should have looked around before blindly copy and pasting google’s svn commands. currently merging, some of your changes are along the lines of what I did independently which is kind of nice.
may take a week or two, this is my current “procrastinate exam study” project.
just quickly, in what range is the float pressure passed to gui elements? does it come from your GUI.jar library?
@Jarrad yeah feel free to add or change anything you like. I’d recommend you to work on the “dev” branch if you can though, because it’s a bit more up to date.
Sorry for the lack of updates on FP in general. At least the code is out there for everyone to see and hopefully fix like Jarrad does
.
@flat20:
Been hacking away at the source for the past couple of days and have implemented sequencing for triggers, as well as changing the widgets so that touch and release can be separate events if desired. Haven’t played too much with it on the user side yet so it’s probably buggy, but if you’re interested I’ll cook up a patch set after some more thorough testing.
I’m an SVN noob, sorry
-Jarrad
Is there any way that I can assign pitch bent on XY pad or slider? I have YAMAHA P-70 digital which doesn’t have pitch bend and modulation wheel. It would be wonderful if I can use smartphone as a pitch bend controller.
Wonderful!!
Though your practice of indexing the y axis with 0 at the bottom had me scratching my head for a while :p
[...] Werner Schweer added OSC support in MuseScore. Nicolas Froment created a demonstrator by hacking thesundancekid.net/blog/fingerplay-midi/ [...]
Re: Default CC values, I just read some of the earlier posts. Sorry!
Hey,
Sorry if this has already been asked by I’ve been playing with a custom layouts for DJing and I’ve been unable to create a horizontal slider. Is this possible at the moment?
Also is it possible to default CC values to something other than 0 when the app starts up? (e.g. 64 for mid point)
Thank you for all the work you’ve put in to this though! Really looking forward to seeing how I can integrate it in to my set up!
Ah, just fixed it! For anyone having the same problem. You need switch remote ON, on the midi port configuration, mine was off, now everything works perfect! Great application! congratulations!
Hi guys! I got fingerplay working here with Ableton Live but I have some problems!
The pads are working, like piano roll notes, so I can play chords. But the sliders and x/y arent working. I clicked in the midi mapping in ableton but it doesnt map the sliders…
How can I fix it, please?
Is there a way to disable the press function for sliders and the XY pads?
A few wishlist items…
1. Buttons with a toggle function… basically pads with multiple states.
2. Startup/Min/Max CC values for all controls in XML file
3. Keep the app live when focus changes to another app or the return arrow is hit by accident (happens way to often!!!).
4. On/Off switch (this goes along with the previous request) to actively close the application properly & ask the user if they do want to quit.
5. The ability to load/change different interface XML’s while connected and running.
For everyone who couldn’t get the controllers to register full midi values (just on/off signals)- when you auto assign a controler (this is for the slideable ones), just add +1 to the midi channel. You can see on the server program what midi channel are you using and that the program (FL studio in my case) registers the press signal instead of the midi value first. For X-Y and the pads just check the server program, it shows pressed values. I might have mixed some terms up.
This is wicked, I thought I was going to have to do this all myself, you’ve saved me a tonne of faffing about. I’ve just hooked it up with the Kinect + Wiimote and can control up to 16 midi control channels at once with it:
http://sites.google.com/site/newwaveinstrumentfabric/videos/telekinetic-conductor
Mind you, finding an instrument that sounds good with all of this mangling is the next step.
Cheers Fella!!!
to ubjects I tremors human liquids and tramadol others double patients, viagra and cialis, bhmzle,
Nice tool. Want to use it for some experiments with OSC.
Until now only got the connection to the FP-Server running.
It would be good, if the Server application lists *all* avaliable IP-ports. For me the first is the virtual network card to a virtual machine, but not the real ethernet. So I got no route to the IP-adress from my mobile phone…
Hi flat20,
Great tool!
If at all, the features that would make it even more great would be:
- a horizontal slider (I’ve tried to code a class called Sliderh.java, but I have no idea how to test/incorporate it – I’ve sent it to you via email)…
- either, a “label” class, so that you can actually label your sliders, or
- a possibility to simply import different background images for each individual screen to do the same trick (so far I’ve done it meself with a re-compile ;P.. but it is the same background for all three screens)
Anyway,
as I said before – GREAT TOOL
!
Thanks for that!
Freddy
@booggy
If your IP address is 192.168.0.3 then you need to enter:
192.168.0.3:4444
@everyone
Sorry for the lack of updates. I’m working on other things at the moment and unfortunately FingerPlay suffers because of it.
Have a problem with FingerPlayServer:
Listening on [IP-Address]:4444
Waiting for connection from phone..
when trying to connect with :4444:8000
getting message
UnknownHostExeption
please! tell me what i have to type in to get access
[...] FingerPlay MIDI is a simple but effective controller that sends MIDI over WiFi, and is a good choice right now. [...]
Hi, this is an interesting app and I just tried it out. I wanted to report a problem and ask for help to see if I can get it working.
I followed your instructions using the free version of LoopBe1 (and I am wondering if I was supposed to use the non-free version in order to get this to perform well). The connection from the phone to the FingerPlay server connects, I can see data passing from the phone in the terminal window, there is activity, and this activity is being sent to Reason/Record. Record is set to accept midi from the phone and treat it as a generic midi keyboard, and later a generic midi control surface as I tried changing the profile of the device to see if it being treated as a keyboard might have been causing problems. It didn’t seem to help. One of the weird things I noticed while trying to setup a automation binding was that if I told it to learn the binding based on what surface/key I was touching and it would seem as if it would detect different keys simultaneously even though I was just pressing one (and they would be numbered one apart from each other; it might hold CC16 while I’ve got my finger down, but then change to CC17 when I release).
Also, I have a feature request that may or may not have been made before but would it be possible to add the ability of using the phones accelerometer as a control source? My dream come true would be for me to be able to use my phone to emulate the effects that can be done with a nice piece of hardware out right now: http://www.sourceaudio.net/videos/post/dj-encanti-demos-the-midi-hot-hand-controller/
Otherwise this looks like the a very cool app for the Android. Thanks!
This works well for me on FL Studio, good fun with this app.
Maybe you could have an area on your site with more xml layouts, maybe user submitted ones?
I would like more layouts but Im not comfortable with xml..
Oh… should say I’m on Windows 7, 64-bit.
Yet another error report…
When I try to connect to the server on my phone, I get this error message:
java.net.ConnectException: java.net.sockettimeoutexception: Transport endpoint is not connected
Any and all help much appreciated!
Have a problem with FingerPlayServer
when running run.bat, it says:
Listening on [IP-Address]:4444
Waiting for connection from phone..
java.net.SocketException: IP_ADD_MEMBERSHIP failed (out of hardware filters?)
MulticastServerThread exit.
OS is Windows 7 x64
Is there a solution for this?
thx
Hi all,
We have developed one application in Android for the Archos 7 home tablet. With the Archos 7, there is an sdcard folder available. In code I can get the sdcard location using:
Environment.getExternalStorageDirectory()
But with the Archos 10i internet tablet, there is no sdcard folder available. Is there any related folder for sdcard is available in the Archos 10i internet tablet?
Can anybody help? Thanks in advance.
@Tre Tuna
in this week i’ll add XY’s , to get sliders (faders) you need to click the tool icon on the right, change type in the green menu, and click button unfortunatelly hidden under the tool icon.
I will fix this soon too (in fact i was hoping that i’ll fin someone who will help me style this)
Hey Wodor,
I like your little program for making a layout, but all I see are pads on it. Can we get some faders and XY areas?
Found my answer in the reading, just took me a bit! Love this program! Now to set it up the rest of the way… Wireless DJing! Haha
So I just downloaded FingerPlay yesterday and am got it setup today with OSCulator to use in Traktor for DJing… My problem is that the XY pads and the Faders are only sending on/off messages and not values in between 0 and 127. This basically renders the faders and XY pads useless to me which sucks cause the xy pads are one of the main things I want to use! Please help!
ok it is connected but it still only assigns each pad as the same thing in serato, when i map a function to fingerplay pad section it maps it as channel 1 note 15, and when i try to map a differnt function to a differnt button, it changes every pad to the last thing I syncd how do i assign a new function to each pad?
@wodor That looks really good! Thanks for taking the time to write an editor. Feel free to use any assets you want from the FP app
@Sinuous That probably means that some other application is already using the port 4444. If you start the jar like this:
java -jar FingerPlayServer.jar 32123
It will use port 32123 instead of 4444. Hopefully that port is available, if not just try some other ones
Ok i got it to work but when i try to map the up down left right library functions to the pad part it only midis the last one thing i press so all buttons would only be right or up or whatever. how do I map each button to have a midi function.
Hi cant wait to use the app with serato. I got it to connect but when i run the jar fingerserver.jar
I get this
fingerplayer v8.0
listening on 192.168.0.110:4444
java.net.BindException: Address already in use: JVM_Bind
thanks
http://www.fileden.com/files/2008/7/24/2018033/Capturafingerplay1
link to the generator
http://wodor.net/fingerPlayLayoutsBeta/
i’ve created a tool. I’ts in alpha state but it generates valid xml (for me).
It allows drag & drop ,resizing and removing devices. Under the tool icon you can generate a screen from templates (more templates are about to come), it’s the only way to add devices right now.
And it’s ugly like hell (i can make repo public for contibutors if anyone would like to help make it look more friendly)
Resizing is oriented to NE (upper right) because FPMidi displays things that way.
I know I still have many things todo:
- fix controller numbers – add param to generator
- generators should always consider screen size
- generators should use ajax, not form submission
- disallow moving to another screen (at least fix the freezing in the other screen (z-index), and emphasize which device belongs to which screen)
- fix sliders screen
- add xy device
- write xy’s screen
- write transport bar screen
- fix alignment in screenConf div
- fix the general settings
- set up colors
- adding devices
- easier CC edit
- uploading XML to the form
- saving configs
- sharing configs
@flat20:
I hope i haven’t abused anything by creating this tool, also I’d like to use graphics from FPMidi repo
http://fingerplaymidi.googlecode.com/svn/trunk/client/res/drawable/
may I ?
it’s simple
you just need to edit GET parameters like in example above
here you expand cell width to 150px and horizontal space between them to 5 px
http://wodor.net/prace/gen.php?cellw=150&marginw=5
first parameter must be preceeded by “?” and every next by “&”
availble params are
&cellw=120; // Button width
&cellh=65; // button height
&marginw=1; // margin between cells
&marginh=1; // margin between cells
&screenw=804; // width of the screen
&screenh=478;// height of the screen
&ctrlNum=35;// number of first controller
then you just paste it to “screen” tag in this http://wodor.net/prace/layout_w.xml or
http://fingerplaymidi.googlecode.com/svn/trunk/client/res/raw/layout_default.xml
if more people will want this i’ll try to create an online generator for the whole layout file
pls reply to wodor@wodor.net cause I may forgot to visit this site