3 3
Allfifthstuning

Orange Pi PC (plus) + Armbian + Guitarix= Guitar effectprocessor?

Recommended Posts

Let me start to express my gratitude for the wealth of information and software which is available here.

 

I'm a longtime user of a usb 2.0 soundcard along with a laptop with  KXStudio and Guitarix.

I've used this setup many times for gigging and home recording and it proved to be stable.

One of the downsides is the "voluminous" laptop.

I've my soundcard mounted in a small 19" flightcase with one rack still open.

For some years I've been thinking of making rack mountable effectprocessor from a board to substitute the laptop.

 

So, to start this journey I've ordered a OPi PC (along with a good quality micro SD card!), of course not a heavyweight board, but my first goal is to see it working (I've had old laptops with similar specs which did the job).

 

The route I want to go is to install Ambrian along with the KXStudio repo's (which contains the latest version of Guitarix).

Step 2 will be to connect and install a small TFT touchscreen.

 

Is this a good route to take?

Any tips?

 

I'll will post my results here (also the failures).

Let's see what comes of it!

 

Hans 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Cool. I've posted the question also on the Guitarix forum and the developer says that the full-duplex should work.

He is also one of the developers of the Mod and this runs on a Allwinner Arm core without a problem.

 

You have an older version of Guitarix. You could try to add the kxstudio repo's, which contains a newer version of Guitarix.

I'll ask around on the Linux Musicians Forum if the repo's will work along with Armbian.

 

Hans

Share this post


Link to post
Share on other sites

Hello Hans,

 

Full-duplex should work. You already mentioned the MOD Duo which runs Jack full-duplex on a board with an A20 SoC. It also works on the RPi and I've used Jack in full-duplex on a Cubieboard (A20 SoC) successfully. In order to make this work I can recommend doing the following:

  • Don't use a graphical environment, try to get acquainted with working on the command line.
  • You will probably need at least a preemptive kernel or even a real-time kernel to make full-duplex work.

Also the 1818VSL used to have issues with Linux unrelated to armhf, not sure what the status is now but make sure you use a recent kernel. And bear in mind that KXStudio has no armhf packages.

 

Jeremy

Share this post


Link to post
Share on other sites

Thanks Autostatic for joining!

 

Alright I will go for a commandline setup, will Armbian server do or do you recommend another distro?

 

The soundcard had some issues with pc's with usb 2.0 and usb 3.0 ports. The newer kernels have some kind of bug which makes for tons of xruns. On a fully usb 2.0 laptop the problem doesn't arise. I've fired up an old laptop recently and it works flawlessly.

 

Hans

Share this post


Link to post
Share on other sites

Guess Armbian is just fine, never used it though. I'd use plain Debian myself but I guess it won't differ that much. The Orange Pi probably has USB2 ports so hopefully the 1818VSL can cope with those.

Share this post


Link to post
Share on other sites

Is the SP1 LCD interface supported within Armbian?

And the XPT2046 touch screen controller?

 

These questions may be well documented on the FB-group but I don't have an account (and rather keep it that way), but more so FB is shut off when using internet on school I teach (where I finally want do something with the Armbian equipped Pi boards).

 

Hans

Share this post


Link to post
Share on other sites

Hello Hans,

 

My repo only works with Raspbian Wheezy armhf (the ARMv6 VP2 variant). I guess that's a no :(
I'd also like to propose to move the discussion to the Guitarix forum. I've only registered a week ago and I'm already getting spam PM's so I'd like to block this account.

 

Jeremy

Share this post


Link to post
Share on other sites

THe OPiPC+ arrived and I'm trying to set it up. I can only use av output since I don't have HDMI.

With the standard Android OS the OPi outputs video through av. With Armbian I can't get any output yet. I tried to modify the script.bin file as is written on the Orangepi site but with no luck.

I'm using the latest Armbian version on a 16GB class 10 Samsung EVO.

 

What can I do to check if the OPI boots at all?

How can I make the OPi output video on the AV channel?

Do I have to make a custom kernel?

 

Hans

Share this post


Link to post
Share on other sites

Alright got the OPi up and running with an HDMI to DVI adaptor.

 

Steps I took:

1. Flashing the newest Armbian version to a SD card

2. editing the script.bin file (converting it first with bin2fex to script.fex ), by adding two lines at the end of [hdmi_para]:

hdcp_enable = 0
hdmi_cts_compatibility = 1

(and convert it back using fex2bin) to make the HDMI to DVI adaptor work.

3. boot the SD card and follow the instructions

4. Installing jack2 and qjackctl and guitarix (first the standard version later building it from source)

5. Adding myself to the audio group

usermod -G audio your-user-name

6. Tweaking limits.conf in/etc/security/limits.conf by adding:

@realtime - rtprio 90
@realtime - memlock unlimited

7. Reboot

 

8. Turning wifi of in a terminal:

nmcli r wifi off

Then I attached my usb soundcard and configured jack using qjackctl (48.000 / 3 periods / 256) and then fired up Guitarix: Working!

 

A good start so far!

Edited by Allfifthstuning

Share this post


Link to post
Share on other sites

 With Armbian I can't get any output yet. I tried to modify the script.bin file as is written on the Orangepi site but with no luck.

 

http://forum.armbian.com/index.php/topic/752-tutorial-h3disp-change-display-settings-on-h3-devices (don't follow any advises found on other sites when using Armbian, there's no need to fiddle around with bin2fex/fex2bin unless you want to enable more exotic modes like AV out)

Share this post


Link to post
Share on other sites

 

Just install another terminal programm :

sudo apt-get install gnome-terminal

Thanks that did the trick.

 

 

http://forum.armbian.com/index.php/topic/752-tutorial-h3disp-change-display-settings-on-h3-devices (don't follow any advises found on other sites when using Armbian, there's no need to fiddle around with bin2fex/fex2bin unless you want to enable more exotic modes like AV out)

Thanks, screen is now setup fine.

 

I've got Guitarix (build from source) up and running with a latency under 10ms (which is pretty decent), although it is a bit unstable (getting xruns) when using certain effects.

Next step is to streamline the whole setup to minimize the xruns.

 

Hans

Share this post


Link to post
Share on other sites

Thanks that did the trick.

 

 

Thanks, screen is now setup fine.

 

I've got Guitarix (build from source) up and running with a latency under 10ms (which is pretty decent), although it is a bit unstable (getting xruns) when using certain effects.

Next step is to streamline the whole setup to minimize the xruns.

 

Hans

 

You can try to reserve one of the cores to the audio process(es). First you isolate a core by using the kernel parameter (boot argument) "isolcpus=...", and then you can use taskset to place threads/threads onto that core. In addition you should then also set a higher priority for those processes/threads. That way you have a complete core only for the audio processing, which should help a bit.

 

Greetings,

 

Chris

Share this post


Link to post
Share on other sites

That's a good tip!

I've managed to use "taskset" to run Jackd and Guitarix on a specific core.

 

I've did a search on where to place the "isolcpus=" argument, but haven't found the right place where I can put it.

Where do I have to put it?

And can I reserve two cores or would that be over the top?

 

Hans

Share this post


Link to post
Share on other sites

The isolcpus belongs into the bootargs in boot.cmd.

 

For example, this will reserve core number 4:

setenv bootargs console=ttyS0,115200 noinitrd root=/dev/mmcblk0p2 rootfstype=ext4 rootwait isolcpus=3

This will reserve cores 3 and 4:

setenv bootargs console=ttyS0,115200 noinitrd root=/dev/mmcblk0p2 rootfstype=ext4 rootwait isolcpus=2,3

This will reserve cores 2 to 4:

setenv bootargs console=ttyS0,115200 noinitrd root=/dev/mmcblk0p2 rootfstype=ext4 rootwait isolcpus=1-3

The isolcpus argument starts counting cores at 0. Keep in mind that the above are just examples, you may have the root file system elsewhere, for example.

 

It is also possible to assign IRQ's to specific cores using the /proc/irq/... stuff, but i haven't tried that on the H3 yet, since in my own code i set the cpu affinity directly.

That _may_ help a bit with latency for the audio i/o through the underlying driver stack, by assigning the irq of the audio hardware to a specific core as well. However, i don't know much about the way audio hardware is handled on the H3. If you want  to get really nasty, i made a patch to the sunxi legacy kernel a while back, that allows a specific IRQ to be handled as fast as possibly, by bypassing a bunch of code in the Linux IRQ handler code. But that isn't for the faint of heart and may cause nasty side-effects.

 

Greetings,

 

Chris

Share this post


Link to post
Share on other sites

Alright I'll try that. If assigning IRQ help, I would gladly try that out. unfortunately it's not my faint heart (as far as I know of) that bothers me, but my infinite lack of knowledge when it comes to programming / setting up pc's. But I'm working on it... ;-)

Hans

 

edit: Found this thread showing how to update boot.scr

edit 2: CPU 2 and 3 (starting from 0) are now isolated, which I verified by using:

top

and then pressing "1"

Then in a terminal I use

taskset -c 2,3 ProgramOfMyChoice

to assign the programs to the right cores,

 

Guitarix is still a bit buggy when I use the factory presets though.

Share this post


Link to post
Share on other sites

Alright time to make an evaluation of the process so for.

Firstly: I'm impressed of the capabilities of a SBC (i.c. the OPiPC+), it will suit my daily needs: emailing, text-processing, internetsurfing and so on. All can be done without a breeze.

With -of course- Armbian on the background "doing it's thing". Great!

 

After going back and forth using different flags to configure and build Guitarix, it is now running stable with a relative low latency.

One thing which has to be dealt with is that  the number of effect which can be used simultaneously is a bit limited, because I run out of DSP power pretty fast (although I tweaked a lot with using designated cores / higher set priorities).

Over at the Linuxmusicians forum someone suggested that I may have to use buildroot to start from scratch. Currently this is a bit to big to chew for me.

 

What can I do to optimize Armbian to free up more resource?

Install an even lighter gui like LXDE or openbox?

And how can I do that properly (I've tried it but I can't switch to an other session)?

Start with Armbian server and install openbox or lxde (which I tried but didn't work so far)?

Deinstall several services to make everything lighter?

 

Hans

Share this post


Link to post
Share on other sites

With buildroot you will get worse results for sure, forget about. Their tool is generic while we are specialised for those ARM boards, especially we know a lot about Allwinner chips. Additionally you have to expect much more troubles to make things together since the tool is complex.
 

Our desktop is already as light as possible and you won't achieve any vivid (if any) speed improvements if you change window manager. XFCE is among the light ones. Furthermore our desktop build has build-in all possible acceleration methods: 3D and video playing but I guess they don't help your type of usage.

 

If you installed system on eMMC you are already on the edge - you can only try some good SSD drive for system - via USB. If you are running our of memory, get an Opi +2e ... it has faster eMMC and 2GB of memory.

Share this post


Link to post
Share on other sites

With buildroot you will get worse results for sure, forget about. Their tool is generic while we are specialised for those ARM boards, especially we know a lot about Allwinner chips. Additionally you have to expect much more troubles to make things together since the tool is complex.

 

Our desktop is already as light as possible and you won't achieve any vivid (if any) speed improvements if you change window manager. XFCE is among the light ones. Furthermore our desktop build has build-in all possible acceleration methods: 3D and video playing but I guess they don't help your type of usage.

 

If you installed system on eMMC you are already on the edge - you can only try some good SSD drive for system - via USB. If you are running our of memory, get an Opi +2e ... it has faster eMMC and 2GB of memory.

Thanks Igor, that's sound advice.

 

I haven't installed Armbian on eMMC yet, will do that.

I've contacted the developer of Guitarix it there is still some tweaking within Guitarix possible so I'll try that also.

 

Hans

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
3 3