Pandora Compiling Seq24 (Midi Sequencer) On The Pandora


^ All part of the learning process. :D

New and interesting challenges today. First thing I should mention is that since reflashing & installing Hotfix4 Beta4 (aka the final Hotfix 4), opkg update is behaving strangely. Last night it took hours (literally, hours) to complete, then threw out some strange errors. NAND usage only increased by about 100k during this time, so I'm thinking the wifi was having a bad hair day. Previously I was running HF4 Beta1. I'll run opkg update again tonight and capture the output.

With that in mind it's probably not worth mentioning my latest make hurdle, because I know something ain't quite right to start with. But here's the output anyway.

Code:
/usr/lib/gcc/arm-angstrom-linux-gnueabi/4.3.3/../../../../arm-angstrom-linux-gnueabi/bin/ld: cannot find -lgio-2.0
collect2: ld returned 1 exit status
make[2]: *** [seq24] Error 1
make[2]: Leaving directory `/media/PAND4GB1/seq24-0/seq24-0.8.7/src'
make[1]: *** [all] Error 2
make[1]: Leaving directory `/media/PAND4GB1/seq24-0/seq24-0.8.7/src'
make: *** [all-recursive] Error 1
gruseaux-openpandora:/media/PAND4GB1/seq24-0/seq24-0.8.7$

Something else just occurred to me. As soon as I reflashed I removed midori, claws mail, abiword and gnumeric (using --force-depends). Maybe I've introduced new problems by doing that?
 
Another easy one, it's a missing library ;)
It's "libgio-2.0-0" in the Angstrom Repository - http://www.angstrom-distribution.org/repo/?pkgname=libgio-2.0-0
Beware the dependencies!

I didn't realise how many libraries seq24 actually depends on.. I use a 4GB overlay for my dev work, so I've masses of space to install libraries and dev stuff.. as the bits of NAND that are left after the OS install may be enough for the default toolchain, but all these extra libs for big applications certainly can't be healthy :\

At any rate, I did notice something odd when I reflashed mine at the weekend, direct to an image with Hotfix 4 Beta 3.. it hadn't installed bits and pieces properly ( mostly the kernel, ) but I fixed this by reinstalling the Hotfix on top of it. I got fun errors like none of the PowerVR demos working, and dmesg printing screeds of warnings about library mismatches, and, like you're having, my WiFi acting funny. If it's the same kind of thing, you could try that?

I'm running Hotfix 4 Final without any issues, just now :)
 
I reinstalled hotfix 4, and things are behaving. :) opkg update went swimmingly, libgio installed. Now I'm wading through each dependency as it pops up. Better grab a beer.
 
This is great, you're making a lot of progress Gruso .. I regret that I didn't get this done myself, but watching you is just as fun!

EDIT: (It was a lot easier to build seq24 on Touchbook AI OS, though..)
 
Progress indeed :)

dyOyhs.jpg

This was the last round of dependencies I had to install:

Code:
libgio-2.0-0
libfreetype6
libgobject-2.0-0
libgmodule-2.0-0
libgthread-2.0-0
libglib-2.0-0

Seeing make install complete without errors was a pleasant shock. There was one more hurdle in store though, when launching Seq24:

Code:
ALSA lib seq_hw.c:457:(snd_seq_hw_open) open /dev/snd/seq failed: No such file or directory
snd_seq_open() error

A bit of googling led me here, which led me to trying:

Code:
sudo modprobe snd-seq

..before launching. That did the trick. It has to be done again after a reboot of course, so I might just make a little launch script.

Internet high five Stuckie, really appreciate all your help! :)

The to-do list from here:

- Actually do some stuff with Seq24. (Or will I?) It's a bit tricky to use without a mouse, but that's ok. Next step is to get it talking to some other toys.
- See if I can learn how to PND it
- Set up my OS on an SD card so I can go nuts in future
- Dino B)
 
Nice one :)

I'm pretty sure at least a couple of those libraries must be installed by default so you may be able to prune the list before packaging. What you need can be included in the PND easily enough - just point to them with LD_LIBRARY_PATH in your launcher script.

Not sure what's best to do about that "missing" module. Maybe have your script request it be added to whatever file it is in /etc that says which modules get loaded at boot time, otherwise you're gonna get asked for the sudo password every time... Or maybe there's some other config option which will allow you to do away with the module entirely.
 
For now I've just dropped the modprobe command into a launcher icon. A bit clunky and it prompts me for password, but it's very late in the evening here and I feel it will do for now.

I also totally ignored my sensible to-do list and grabbed the Dino source. It's asking for libxml++-2.6-2, which is in the repo but opkg tells me it can't install it. Ah, that would be bedtime then.
 
Gruso said:
For now I've just dropped the modprobe command into a launcher icon. A bit clunky and it prompts me for password, but it's very late in the evening here and I feel it will do for now.

sudo "echo snd-seq>>/etc/modules"

and be done with this :)

Your startup script could look like this (warning, I haven't my pandora and no unix server available now so I cannot test) :
Code:
if ! lsmod|grep -q snd-seq;then
  # the module isn't loaded
  if ! grep -q snd-seq /etc/modules;then
    # not loaded automagically
    gksudo -D "load MIDI module on startup ?" "echo snd-seq>>/etc/modules"
  fi
  gksudo -D "load MIDI module" "modprobe -k snd-seq"
fi
 
Last edited by a moderator:
sebt3 said:
sudo "echo snd-seq>>/etc/modules"

and be done with this :)
This was giving me a permission denied error, just needed some root action:

Code:
sudo su
echo snd-seq >> /etc/modules

Sorted! :) No need for a script, launches straight from my wee icon now.

mmmmm...

F4TCL.jpg
 
Last edited by a moderator:
Hopefully PNDing it wont be too bad ( you did make a note of all those libraries you had to install, right? ;) cause those are the ones you're going to have to include in your PND! )

If you need help, just post :)

Also, how is seq24? I didn't have a chance to mess about with it, before. I've a rather ancient Yamaha Portasound 680, which isn't all that bad really, and since I got it for £50 a number of years ago now, I can't complain!
 
I was keeping a list, which got kind of disorganised once I reflashed and it started asking for different things. I think they're all listed in this thread though. Worst case, I presume there is a way to query a running app for this info? (Google could help me there, but no time for sidetracks right now).

As for using Seq24, it's very intuitive and fun. For those who aren't familiar with it, refer to the photo above and you'll see three black sections with a white section to their left. Each of these grid positions is a loop, which by default is one bar. You open up each one and edit it on a piano roll. During playback, you just highlight which of the grid sections you want to hear (black = on, white = off) and switch between them on the fly. Like I said, fun!
 
Gruso said:
Worst case, I presume there is a way to query a running app for this info? (Google could help me there, but no time for sidetracks right now).
Doing "ldd executable" should give you a nice list (not sure if it's installed on the Pandora by default though - something tells me it's not). You only need to include what's not already in /usr/lib or /lib in your PND, of course.
 
Last edited by a moderator:
seq24 is bloody nice to use on the Touchbook, but I'm afraid its going to be a bit too fiddly on the Pandora .. looking forward to finding out, though! C'mon Gruso, don't be a 'torpor': pack it in a PND man! :)
 
ok ok!

ldd installed (for interested observers, it had to be run from the same location as the seq24 binary in /usr/local/bin), here's the list:

Code:
	libgtkmm-2.4.so.1 => /usr/lib/libgtkmm-2.4.so.1 (0x40026000)
	libatkmm-1.6.so.1 => /usr/lib/libatkmm-1.6.so.1 (0x402ee000)
	libgdkmm-2.4.so.1 => /usr/lib/libgdkmm-2.4.so.1 (0x4032d000)
	libgiomm-2.4.so.1 => /usr/lib/libgiomm-2.4.so.1 (0x4036d000)
	libpangomm-1.4.so.1 => /usr/lib/libpangomm-1.4.so.1 (0x403f9000)
	libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x40422000)
	libglibmm-2.4.so.1 => /usr/lib/libglibmm-2.4.so.1 (0x407b1000)
	libcairomm-1.0.so.1 => /usr/lib/libcairomm-1.0.so.1 (0x407fd000)
	libsigc-2.0.so.0 => /usr/lib/libsigc-2.0.so.0 (0x4081e000)
	libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x4082a000)
	libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x408be000)
	libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x408e0000)
	libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x4095a000)
	libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x40985000)
	libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x409a4000)
	libcairo.so.2 => /usr/lib/libcairo.so.2 (0x409b4000)
	libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x40a1b000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40a5a000)
	libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x40acf000)
	libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x40b03000)
	libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x40b36000)
	libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x40b40000)
	librt.so.1 => /lib/librt.so.1 (0x40b4c000)
	libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x40b5b000)
	libasound.so.2 => /usr/lib/libasound.so.2 (0x40c26000)
	libdl.so.2 => /lib/libdl.so.2 (0x40ce5000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x40cf0000)
	libjack.so.0 => /usr/lib/libjack.so.0 (0x40d0f000)
	libm.so.6 => /lib/libm.so.6 (0x40d31000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40da4000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x40e55000)
	libc.so.6 => /lib/libc.so.6 (0x40e67000)
	libresolv.so.2 => /lib/libresolv.so.2 (0x40f8e000)
	libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x40fa9000)
	libpng12.so.0 => /usr/lib/libpng12.so.0 (0x4100f000)
	libXrender.so.1 => /usr/lib/libXrender.so.1 (0x41036000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x41046000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x41161000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x4116c000)
	libz.so.1 => /usr/lib/libz.so.1 (0x41178000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x41191000)
	libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x411bb000)
	libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x411c6000)
	libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x411d5000)
	libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x411e5000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x411ef000)
	libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x41205000)
	libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x4120f000)
	libxcb.so.1 => /usr/lib/libxcb.so.1 (0x4121c000)
	libpthread-stubs.so.0 => /usr/lib/libpthread-stubs.so.0 (0x41239000)
	/lib/ld-linux.so.3 (0x40000000)

I guess all I have to do now is compare this to /usr/lib in a stock firmware image and see what's new. Next time I'll keep a more thorough list as I go...
 
I think I've isolated all the libraries I need to include. Now I need to grab these from their respective folders, but I'm not permitted to do that. I'm thinking I need to set up a firmware image on SD so I can boot from that, before copying files from the NAND. I had to do this anyway so maybe now is the best time.

I've just been reading up on libpnd and the pnd cookbook... aarrghhh this is one big mountain I have to climb. :) Feeling a little overwhelmed.

[edit] Ok, just had a near disaster attempting to boot from SD. Lucky I bailed out of the firmware flash in time, lol. I'm not doing anything more until I have a full backup of my NAND.

[edit] Thanks to this page, I'm now running my OS from SD and have a full NAND backup. Onward!
 
Gruso said:
I think I've isolated all the libraries I need to include. Now I need to grab these from their respective folders, but I'm not permitted to do that. I'm thinking I need to set up a firmware image on SD so I can boot from that, before copying files from the NAND. I had to do this anyway so maybe now is the best time.
Not sure what's preventing you from copying the libraries - they're just files like any other. Still a good idea to set up an SD card though, that way you have the original firmware image to test on and it's easy to see which libraries are missing (the program will complain quite specifically if it can't find what it needs).

I've just been reading up on libpnd and the pnd cookbook... aarrghhh this is one big mountain I have to climb. :) Feeling a little overwhelmed.
Somewhere on there is a few lines on how to create the actual PND. Basically, make a directory, put your stuff in it, make an ISO/SquashFS from your directory and cat the PXML and icon to it. The PXML I'd just borrow from an existing packages. You shouldn't need too much from the cookbook either, just the LD_LIBRARY_PATH part. Stick at it, you're almost there ;-)
 
Last edited by a moderator:
Back
Top