Wikipedia:Reference desk/Archives/Computing/2015 September 3

From Wikipedia, the free encyclopedia
Computing desk
< September 2 << Aug | September | Oct >> September 4 >
Welcome to the Wikipedia Computing Reference Desk Archives
The page you are currently viewing is an archive page. While you can leave answers for any questions shown below, please ask new questions on one of the current reference desk pages.


September 3[edit]

x86 development board?[edit]

Hello everyone. Does anyone know of any x86 development board who's processing power rivals that of a raspberry pi 2? I also want to run a copy of Linux(it being x86 of course) on one so I don't want something like an Arduino. I want a micro computer that has a decent x86 processor. I was hoping to get a board that has a processor that can run at 800Mhz. I want a board that has an x86 processor that has about as much processing power as a Raspberry Pi 2. I have looked at the Intel Edison but I was not very impressed by the 500Mhz dual core processor. That's a little slow for me. Although it odes cost about as much as a raspberry Pi 2 does. Any thoughts on this? Thanks for your help in advance, —SGA314 I am not available on weekends (talk) 13:26, 3 September 2015 (UTC)[reply]

Is there any reason why you're targetting a specific clock frequency? If you're interested in this, I presume you understand comparing clock frequencies is often close to useless when comparing different architectures. For example, although only a single benchmark and comparing the original Pi, the Edison came out on top in this benchmark [1]. In any case, it's probably helpful for you to consider what you're actually trying to achive. The Pi and Edison are targetting very different markets AFAIK [2], so comparing them probably isn't that useful. Nil Einne (talk) 13:43, 3 September 2015 (UTC)[reply]
I am trying to run real-time, low latency VST audio effects. Thus, I need enough processing power to run the VST Host, as well as the VST plug-ins. I will also need to run a copy of an x86 distro of Linux that can run Wine. This is because VST is sorta a windows only thing. So I will most likely will be able to run my Windows-only VST Host software on Linux using Wine. However, it is crucial for me to have enough processing power to do this. —SGA314 I am not available on weekends (talk) 13:50, 3 September 2015 (UTC)[reply]
Do you really need something that small? A Gigabyte GA-9SISL[3][4] is 17 × 17 cm (6.7 × 6.7 inches) and has an eight-core 2.6 GHz atom. If you have other rack-mount gear, a 1U server doesn't take much space. Or you could look into a non-Wine VST. Jucetice[5] looks like they are doing some interesting stuff. --Guy Macon (talk) 15:15, 3 September 2015 (UTC)[reply]
How much does the Gigabyte board cost? Probably something like 500$ right? As for using Jucetice, the whole point of this project is to use the VST effects I already have, on this board. So using Jucetice would be counter productive. —SGA314 I am not available on weekends (talk) 16:25, 3 September 2015 (UTC)[reply]
I think the problem is the OP is still only considering small aspects of what they're trying to achieve.

Looking more closely at the specs of the Intel Edison, I'm not sure how easy it will be to achieve low latency audio output. It does have an I2S out, so perhaps with a low latency DAC you could achieve it, but I'm not so sure. Trying to achieve low latency out on the USB or the SDIO seems like a fools errand to me. Perhaps one of the other buses could be used, but it sounds like something likely to require considerable hardware and software expertise. Well probably you could with USB or SDIO too, if you had that.

Also, if the OP is hoping to use VSTs, are they simply wanting to process internal audio, or are they wanting to process audio from other sources? If it's the later, this seems even more problematic since it seems the Edison lacks audio input.

I mean if you wanted something super small, you could use an Intel Compute Stick. The upcoming Core M one in particular should be significantly more powerful than the Edison. But given its target market, that unsurprisingly has no analog output ports or any general purpose bus, so you'd definitely need to use some sort of USB analog audio output device, which again sounds like a recipe for disaster.

To put it simply, without properly defining your parameters, you're never likely to have success and after many, many questions, the OP still doesn't seem to have done that. At the very least, if the OP believes they can achieve very low latency output with a USB device (for example), they should try to achieve this first. It sounds like they already have most of the resources to achieve this, so it would be a good first step.

Once they've proven it's possible, then they should move on to worrying about whether a Edison or Pi 2 has enough processing power to run their VSTs. There's no point buying an Edison solely for the purpose of running VSTs, if even if you can get it to work, they'll never achieve the low latency audio output you desire. If they find it isn't possible, then they need to go back to the drawing board and redefine their requirements.

And it's not like this is the first time this issue has came up, Nimur in particular, but also me and others have pointed out it was entirely unclear whether the OP will be able to achieve low latency output with their Raspberry Pi 2, yet from what I can tell, they haven't yet determined whether they could do so, but instead spend the next month or so working out if they could run VSTs on their Pi 2.

Nil Einne (talk) 16:02, 3 September 2015 (UTC)[reply]

Ok so here is my exact parameters:
  1. I Need to have1 analog input that the system can recognize as an audio device.
  2. I need to be able to run a copy of x86 Linux that can also run Wine.
  3. I need to be able to send the processed audio out via an analog output.
  4. I need enough processing power to do low latency audio processing. I did this just fine on a 3.00Ghz Pentium 4. This is my slowest processor I have ever had.
  5. The board I get needs to be able to run a copy of Linux. I would love to be able to run Windows, but this won't be possible because when I get my prototype working, I want to finish the product and ship as a final product. Thus, copyright issues would rise if I tried to ship it with a copy of Windows (This would be illegal)
I am sorry if I haven't been very explanatory. My whole goal is to use a System on a chip computer to run as a dedicated hardware VST host. However, at the same time, I want it to be small enough to fit into an electric guitar. This way, I could take my guitar's output and send it into the computer for audio processing and then take the computer's output and send it to the guitar's analog jack. I have lots of spare time to work on this, and I am very a depth at computer programming. So writing custom software is not a problem. My first step in this project is to just get my VSTHost(There is a windows application called VSTHost. This is what I am trying to run) windows app to run on a SoC board. I would prefer something like the Intel Edison but with some more processing power, and has analog input and output. Once I complete the first step, I will tweak the setup for low latency audio processing if it dosen't already support this out of the box. I can do these steps in this order because VST software dosen't have to have low latency access to the audio hardware. This is only an optional this if I am going to be using VST effects in real-time. At first, I don't expect everything to work perfectly. instead, i do expect to have serious latency issues at first. However, I will devote time to fixing this. For now though, I just need to find a SoC boad that has an x86 processor, can run c opy of Linux, and has at least 1 analog input.—SGA314 I am not available on weekends (talk) 16:25, 3 September 2015 (UTC)[reply]
As I understand it, you do need low latency processing as an end goal. The problem is you seem to be assuming you will be able to achieve low latency output, yet there's no reason to think this is guaranteed, particularly when presumably lack the ability to write your own drivers.

There's no reason why you need to get VST working to prove whether or not your setup is capable of low latency audio processing. If your setup isn't capable of low latency audio processing with simple native effects, then it isn't going to be capable of low latency processing with VST. Since you already have a Pi 2, which you believe is capable of low latency audio processing, even though others are uncertain, this is a very good proof of concept/test system

Since I'm fairly sure you don't have unlimited funds, it would be fairly silly to buy an Intel Edison, or whatever board, which has sufficient processing power for VSTs, but which can potentially never achieve the low latency processing you require.

In other words, you seem be approaching this in the wrong order.

To give an example of what I'm talking about, the Intel Compute Stick which is targeted at a totally different market neverthekess mets you 1.5ghz requirement below but I'm not sure how you're going to power it (from what I can tell it uses 5V/2A) and I have no idea how you're going to get low latency processing from it. But if you can do it from an Edison or a Pi 2, perhaps you can do it from the Intel Compute Stick depending on how you actually do it. However since you have no idea how you're actually going to do it if you even can from an Edison or a Pi 2, you have no way to know if you can do it from a Compute Stick.

To some extent, it may be useful to work out what options are out there before you try doing it with the Pi 2, so you can concentrate on them. (Although this doesn't really explain why you spent so long working out whether you could do VST processing with the Pi 2, but I guess that's a moot point now.) So for example if you plan to use a Compute Stick, you could concentrate on getting realtime processing via USB in put and out put via the Pi.

But it didn't sound like this was your plan, and you reply seems to further confirm that this.

There are still caveats, it could be that the Intel USB stack is or isn't able to achieve low latency whereas whatever USB stack is used by the Pi 2 is the contrary. But it still makes sense to start with what you have and seeing what is and isn't possible with it before you get too far in to other options which could very well suffer the same problem.

Nil Einne (talk) 17:15, 4 September 2015 (UTC)[reply]

Right, but how much processing power do you need? Or in particular, why are you certain that the Edison doesn't have as much processing power as the Pi 2 for running VSTs (which actually doesn't make any sense if the Pi 2 can't run VSTs), or similar applications? The Pi 2 does have 2 more cores, but I'm not sure how often you'll find a VST set-up that uses them well. Nil Einne (talk) 15:26, 3 September 2015 (UTC)[reply]
I honestly don't know if the Pi 2 can run VSTs or not. However, I know that I can run them just find on a 3.00Ghz Pentium 4. Something that has at least 1.5Ghz and more than 1 core should be fine. —SGA314 I am not available on weekends (talk) 16:25, 3 September 2015 (UTC)[reply]
But then why did you earlier come up with the arbitary requirement 800 mhz without specifying precisely what x86 architecture you're referring to? (A 1.5ghz Atom, is quite different from a 1.5 ghz Pentium 4 is quite different from 1.5 ghz Core M.) And why did you say you need something with equivalent processing power to the Pi 2, when it's easily possible the Edison has equivalent processing power to the Pi 2 for your specific application, and you don't even know if this is enough? Are you starting to see why you need to better define your requirements before you look for stuff? Nil Einne (talk) 17:15, 4 September 2015 (UTC)[reply]
Actually I was thinking of this yesterday but for some reason forgot it today. It makes most sense to start off without any processing. Either input your guitar and output withour processing, or do a loopback. Once you've achieved suitable latency for that, then you can start adding simple realtime processing. Nil Einne (talk) 17:25, 4 September 2015 (UTC)[reply]
  • I think that the first question the OP should ask is "why is it that nobody else tries to put complex electronics like this inside of an electric guitar but instead puts it on the other end of the guitar cord?"
I agree it's a bit of a weird plan, but if the OP really wants to do it that's their choice. As hobbyist projects go, it isn't that surprising, but it does IMO need a much smarter approach. Nil Einne (talk) 17:15, 4 September 2015 (UTC)[reply]
Thank you for the advice. This is my first time starting any sort of DIY project like this so I am a newbie when it comes to planning something like this. I like your idea about taking my guitar and funneling it's output into the pi and just outputting the result directly without any processing. I got a USB audio adapter that has a mic jack on it so I will try to use that. I also have a copy of Audacity on the Pi so I can even check the sound quality by recording the guitar. So my first step should be to get the audio devices setup and get the latency issues fixed without using any processing. Thank you soo much for your advice on this project. Sorry if I wasn't clear about my requirements for this project, like I said before, I am a complete newbie when it comes to planning and executing DIY projects (Or at least ones that deal with hardware). —SGA314 I am not available on weekends (talk) 18:31, 4 September 2015 (UTC)[reply]
Did you spend look on ITX form factors? --Hans Haase (有问题吗) 21:27, 4 September 2015 (UTC)[reply]
Or looked for nano-ITX motherboards? [[6]] has some. LongHairedFop (talk) 13:21, 5 September 2015 (UTC)[reply]

Any helpful tool for analyzing XML documents?[edit]

Are there free tools that will do this: given an input XML file, output 1) a list of the element types in the XML file, 2) for each element type, list the attributes that are used with an element instance of that type, 3) containment relations among the different element types? Thanks. --134.242.92.2 (talk) 17:51, 3 September 2015 (UTC)[reply]

The tree view here [7] I think does some of what you're asking. SemanticMantis (talk) 18:34, 3 September 2015 (UTC)[reply]
Probably, the browser you're using right now can do it. Load the XML into the browser and use the debugging features already present. Failing, that, there are literally dozens of free/OpenSourced XML editors that'll help you do it.
eg, try opening THIS XML FILE in Google Chrome - and you get a nice indented, syntax-colored, collapsible tree-view. SteveBaker (talk) 20:10, 3 September 2015 (UTC)[reply]
IntelliJ IDEA can generate a Document type definition from an instance XML document (Menu item Tools > XML Actions > Generate DTD). --84.119.219.106 (talk) 21:21, 3 September 2015 (UTC)[reply]

chmod or sudo chmod?[edit]

Why can I change file permissions without sudo?

Shan@XYShan:~$ ls -l a.sh
-rw-rw-r-- 1 k4 k4 114 Sep  4 00:13 a.sh
Shan@XYShan:~$ chmod +x a.sh
Shan@XYShan:~$ ls -l a.sh
-rwxrwxr-x 1 k4 k4 114 Sep  4 00:13 a.sh

Shouldn't that be restricted to admins?--YX-1000A (talk) 23:30, 3 September 2015 (UTC)[reply]

You can change file permissions if you own the containing directory. That's how things are supposed to work. Setting a binary to executable isn't a problem - after all, that's how ordinary users make executable shell scripts (etc.) and how compilers running as ordinary users can emit executable binaries. -- Finlay McWalterTalk 23:35, 3 September 2015 (UTC)[reply]
On what system is that? It's certainly not true on either the UNIX system (a NetBSD one) or the Linux system that I have access to. In both cases you need to own the file (or be root, as via sudo) to be able to set its permissions... and that's how ordinary users make executable shell scripts. --65.94.50.17 (talk) 04:16, 4 September 2015 (UTC)[reply]
D'oh, I didn't notice he wasn't already the owner of the file. Indeed, that should fail with EPERM. -- Finlay McWalterTalk 12:40, 4 September 2015 (UTC)[reply]
My question was misleading. Before chmod I have ran PS1='Shan@XYShan:~$'
and the name of the user is indeed k4 (not the Shan or XYShan shown). I get the idea of chmod now and there is nothing strange happening. It runs as Finlay explaining by the first answer.--YX-1000A (talk) 00:59, 5 September 2015 (UTC)[reply]
That certainly was trick question! I assume you were just trying to obscure personal information and that you do understand that something like PS1='\u@\h:\w$ ' is more useful. Hard setting what is traditionally the working directory in your prompt seems counterproductive. We do have a section on command prompt, but you should see the man page for the specific shell you are using for details. -- ToE 12:26, 5 September 2015 (UTC)[reply]
One thing ordinary (non-root) users usually cannot do is chown a file. If they could, they could write a binary, setuid it, chown it to root, and then execute it, gaining root privileges. That's the "obvious security reasons" (I'm sure there are other wrinkles on the same theme) that the man page quoted on the chown article talks about. -- Finlay McWalterTalk 23:46, 3 September 2015 (UTC)[reply]
You need the rights for your changes by chmod. If you need to make the file accessible for you, use "sudo". If you are more resticting the rights, try sudo if neccessary and review with "ls -l". chown changes the owner and group. Use the midnight commander, if you need to try changes like using a wizzard and having no GUI on the machine. (sudo apt-get -install mc). You will be required to run "sudo mc", the performing such operations. --Hans Haase (有问题吗) 21:32, 4 September 2015 (UTC)[reply]