Translate

Saturday 22 June 2013

Streaming mp4 videos from an Android device to gmediarender on a UPNP-enabled remote device

gmediarender is a resource efficient UPNP-compatible media renderer suitable for lower specification devices such as the Raspberry pi.

Skifta can be used as both media server and control point (i.e. the remote) but in my experience mp4 files can't be streamed from the Skifta server on the phone (HTC One V in this case) to gmediarender. This results is an error "media unable to perform play".

One solution is to use BubbleUPnP as the control point with the setting Mime-type check unchecked (this setting can be found under "UPNP tweaks"). Within BubbleUPnP on the Android device either Skifta or BubbleUPnP  can be used as the media server.  

Another app which works well with gmediarender is MediaHouse which plays back mp4s without any need to configure the app.   

The UPnP Play app seems to have the same issue with mp4's being streamed to gmediarender, it returns "unsupported format video/mp4"

Sunday 16 June 2013

How to create create karaoke videos in Linux from midi files created in the nted score editor

The pykaraoke utility can be used to generate karaoke videos in Linux from original midi files created using the nted score editor. Other score editors in Linux that I have tested do not appear to work (Denemo, Musescore, Rosegarden) as they don't produce a midi file with lyrics in a form which can be  processed by pykaraoke. Another solution is to use Noteworthy composer under wine. Noteworthy is an excellent score editor with a very user-friendly interface although not open source. Noteworthy produces tidier output because hyphens used to separate syllables in the lyrics do not show in the final video. In Noteworthy, midi files must be created a type 0 (there is a pick list in the midi export dialog). nted is a good solution for Linux. It has more advanced functionality in some areas than Noteworthy.


First create a midi file with lyrics using nted as explained in the documentation. Make sure the midi score  doesn't start with rests as this causes music/video synchronisation issues. Export the nted score you have created in midi format.

Download and unpack this script into your folder which contains the pykaraoke scripts and make the script executable. Run the script with the first argument as the midi file and the second argument as the soundfont e.g.:

karaoke /midi_files/my_midi_file.mid /my_soundfonts/soundfont.SF2

The script produces a standard video in mp4 format. You can also run the nted midi file directly using a progam such as kmid but the music won't be synchronised accurately with the lyrics in my experience and the output is not so easily shared as an mp4 video.  

The script assumes:

  • python 2, mjpegtools, mplayer, ffmpeg and fluidsynth are installed
  • you are running the script from the same folder into which you have downloaded the pykaraoke scripts (pykaraoke also has its own dependencies)
  • a soundfont is available on your system (such as FluidR3_GM.sf2)  

Any further information needed, please leave a comment.
Alert icon

Wednesday 13 February 2013

Using MMA to generate musical accompaniments under Linux

Musical Midi Accompaniment (MMA) provides an open source alternative to the proprietary Windows/Mac Band in a Box. It is a command line utility with an extensive reference manual.

There is also a GUI available called linuxband which is simple to use and provides some access to the functionality of MMA. Linuxband enables you to quickly create chord sequences for midi output and choose a "Groove" which is a musical style for the chords. Linux band requires the jack soundserver which is typically started up and configured using qjackctl. You may find, like me, that linuxband appears as an output port in qjackctl with nothing  to connect it to, like so...


...because your input ports are all under the ALSA tab...



If this is the case, you can use a2jmidid  to surface the ALSA input ports under the midi tab (for Gentoo and OpenSUSE users there are packages available). Once a2jmidid is running, the relevant connections can be made. Use the -e switch to make hardware ports available such as the emu10k1 ports (shown below):


a2jmidid will also make software synths such as fluidsynth and its GUI frontend qsynth available as a writable client for linuxband.  

There are a huge number of Band in a Box files available on the Internet so it's useful to have a utility that converts these files to MMA format. Alain Brenzikofer's Perl script no longer works with recent versions of Perl 5 (because of a deprecated function. I tried it on v5.16.1). Here is an amended version which will work. The download includes a gentoo ebuild which will pull in this version from my Web site. According to the documentation, the script can't convert all BIAB files but so far it has worked fine with everything I have tried.       

If you are learning to improvise, it's useful to have a backing track in all 12 keys. This script (usage: transpose [file].mma)  transposes an mma file into all the other keys of  he chromatic scale. It assumes the mma file contains a Groove command. 

The -T switch used with the mma command is very handy if you need to reduce the number of instruments in a backing track. I use this to create backing tracks containing only bass and drums. The -c switch displays which tracks are available in any given mma file.  

Here are some midi files with bass and drums generated from mma which I use for jazz practice: