Wikipedia:Reference desk/Archives/Computing/2015 August 10

Computing desk
< August 9 << Jul | August | Sep >> August 11 >
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.


August 10 edit

Nameservers & web hosting for just one page, with domain already registered elsewhere edit

With a personal domain name registered on Amazon Route 53, and an email service already setup and working (with a host that only does email and doesn't offer nameservers) how would I find a really lightweight web hosting package? I literally just need namservers and one plain HTML page, to say hello and link to my social media accounts. Is there a term of art I should be searching for here? 129.67.174.116 (talk) 15:55, 10 August 2015 (UTC)[reply]

The very cheapest way is to find someone who already pays for a hosting service, and persuade them to allow your single page on their site. You can then point your domain name to this exact page and mask it so your domain name stays in the address line and it is not immediately obvious where the page resides. The next cheapest is to point the domain name to your own computer, but this requires that it is always on, and maybe raises some security questions. Cheap hosting can be bought for a few pounds a year, or why not ask Oxford if they will host your page (... assuming that you have some connection with your IP address)? The days of free hosting are over, but you might find somewhere that will host your page in exchange for some advertising. Are you willing to put up with this? here are some cheap and free offers, but there are lots of others. Dbfirs 16:38, 10 August 2015 (UTC)[reply]
Thanks for the tips. I was hoping to find a low-usage, very cheap (but not free with ads) hosting service, ideally one that's used to handling domains where it isn't the registrar. Not trying to blag a freebie, but reluctant to sign up and pay forever for a much higher level of service that I don't need. My google-fu is failing me though. I am sitting in a Bodleian reading room, but I'm not a matriculated student so Oxford isn't going to help unfortunately. 129.67.174.116 (talk) 16:51, 10 August 2015 (UTC)[reply]
I use "Falcoda" -- they've been around for nearly twenty years and seem reliable with downtime guaranteed to be less than 0.04% (current price 83p per month if you go for three years) but I'm paying for more space and facilities than I use. There's no problem with having your domain name registered elsewhere, just point to the server IPs that they give you. I have my e-mail there too (no extra cost), and I had a problem once with e-mails being blocked by one recipient because they'd received spam from another user on the same server, but you won't have this problem. I'm not particularly recommending this company because there are many others offering a similar deal. You may well find something cheaper. You can change your hosting company at any time just by changing the server IP addresses in your domain registration control panel (AWS Management Console), so you are not tied to any one company for hosting. Dbfirs 21:21, 10 August 2015 (UTC)[reply]
NearlyFreeSpeech does pay as you go hosting. You top up $x and your website runs until you've used $x of bandwidth, and you can use your own domain, I don't know about Nameservers though. 81.138.15.171 (talk) 14:40, 12 August 2015 (UTC)[reply]
Yes, for a simple web-page, NearlyFreeSpeech sounds like a good idea because your bandwidth will be very low. They will provide you with the server CNAME IP addresses for the nameservers at your domain registration end. Dbfirs 20:32, 13 August 2015 (UTC)[reply]

Can the Raspberry Pi 2 ARM port of Windows 10 run apps that have a GUI? edit

Hello everyone. Does anyone know if the Raspberry Pi 2 ARM port of Windows 10 can run apps that have a GUI(Grapchical User Interface)? For instance, could it run an instance of the calculator app? Thanks for your help in advance. —SGA314 I am not available on weekends (talk) 16:45, 10 August 2015 (UTC)[reply]

The Windows 10 IOT for Raspberry Pi will support Universal Windows Platform UI. If you aren't familiar with that, start reading Universal Windows Platform. Nimur (talk) 17:33, 10 August 2015 (UTC)[reply]
Cool. Can't wait to try it out. So will it be backwards compatible with traditional windows UI? For example, could it run older Windows 7 programs? —SGA314 I am not available on weekends (talk) 17:53, 10 August 2015 (UTC)[reply]

How to read notes from a MIDI(*.mid) file? edit

Hello everyone. I have built a program that can calculate any musical scale given a formula written in step notation. A couple of weeks ago, I got a bunch of midi files from WIKI that contained examples of musical scales. What I want to do is I want implement a feature that can read notes from a mid file, and write up a formula automatically. I know how to write up the formula based on a sequence of MIDI numbers, its just that I don't know how to retrieve the MIDI numbers from the mid file. So, how would I do this? I have posted a binary dump of the file located here at wiki. I don't care about getting the velocity and all that, I just want the note data. Thanks for your help in advance.

'MThd\x00\x00\x00\x06\x00\x01\x00\x02\x01\x00MTrk\x00\x00\x00)\x00\xff\x02\x0cCopyright \xa9 \x00\ x00\xc0\x0e\x00\xb0y\x00\x00\xb0@\x00\x00\xb0[H\x00\xb0\n9\x00\xb0\x07d\x00\xff\x03\x07Slentam\x00\ \x80A\x00\x00\xe0U*\x00\x90Dj\x88\x00\x80D\x00\x00\xe0+5\x00\x90Ej\x88\x00\x80E\x00\x00\xe0\x00@\x0 \x01\xff/\x00' Where would the MIDI number/note data be in this? —SGA314 I am not available on weekends (talk) 19:14, 10 August 2015 (UTC)[reply]

Here's a whitepaper hosted at the Carnegie Mellon Computer Music Group: Standard MIDI-File Format Spec. 1.1. You should be aware that "standard" is a term of relative merit. Nimur (talk) 21:31, 10 August 2015 (UTC)[reply]
Could this be uploaded to wiki and used as a source? Because this would provide some valuable information to the Standard MIDI files file section in the MIDI article. If it can be uploaded could someone please do so.(I can't because of ISP restrictions) This way I could expand that section in the MIDI article. —SGA314 I am not available on weekends (talk) 14:43, 11 August 2015 (UTC)[reply]
A number of libraries are available containing code to read midi files. If you tell us what language you are working in and what type of system (Windows, Linux, etc) it might be possible to point you to one that would make things easier for you. Looie496 (talk) 14:01, 11 August 2015 (UTC)[reply]
Well, I don't want to find a library because I already have one(I am using C# by the way). What I want to know is what and where the different sections are located in the MIDI file. In addition, I would like to know where the actual MIDI note data is stored. —SGA314 I am not available on weekends (talk) 14:36, 11 August 2015 (UTC)[reply]
You can read it in byte-by-byte. It is written in "chunks" where each chunk has a very clear format. See this. 209.149.114.32 (talk) 14:49, 11 August 2015 (UTC)[reply]
Yet again, I can't go to most external links. My ISP restricts them. What do you mean by "You can read it in byte-by-byte?" And does each chunk consist of 2 bytes? —SGA314 I am not available on weekends (talk) 15:18, 11 August 2015 (UTC)[reply]
I don't use C#, but I'm certain you can read a byte (an 8-bit unsigned integer) from a file. Then, build chunks from the bytes. You read in four bytes. That is the type of the chunk. It is ASCII, so you can try to work out what each type means. For example MTrk is Midi Track. Then, after the type you read in four bytes and build a "long" unsigned integer. That is the length of the chunk (count of how many bytes are in the chunk). Finally, you read in however many bytes are in the chunk. Note that the length does not include the 8 bytes for the type and length. It is just what comes after the length. That is all binary. You need to get a list of how each type is stored. Then, it is a simple matter of pulling out what you want from the chunk. Then, you move on to the next chunk. Reading in the file isn't hard if you get a list of how each type of stored. You just read in bytes. Storing the note duration is a bit harder. When I did a study using MIDI, the code referred to notes as envelopes. They would be defined with a frequency (0-255 if I remember correctly) and a volume (also 0-255 if I remember correctly). Then, the envelope opens and the note plays. Once open, it may be redefined (get louder, adjust pitch, etc...). When the note stops, the envelope is closed. What it comes down to is getting a guide to the byte-representation of MIDI. I seriously doubt anyone is going to type in the entire manual here and you say that you cannot go to any websites that contain information on the MIDI format. So, I suggest using the library. There will certainly be at least one book on the subject. 209.149.114.32 (talk) 16:15, 11 August 2015 (UTC)[reply]
Very helpful. Thanks. I was certainly not thinking or asking anyone to type in the entire manual here. I know how to load the binary data of a file into a C# program(I just use the System.IO namespace). Thanks for the explanation. I am trying to use the library but it is proving to be a pain to use. I think I am just going and to try to build my own function using your explanation to get the data I need. —SGA314 I am not available on weekends (talk) 17:31, 11 August 2015 (UTC)[reply]
For clarity when you said the library is proving a pain to use, do you mean you're having difficulty finding a suitable book in the library, or you're having difficulty finding or borrowing the book? If it's the former, what library is this? Nil Einne (talk) 12:19, 12 August 2015 (UTC)[reply]
Uh, if that was supposed to be a joke then it wasn't very funny. If that was an honest question, then I am not trying to use that kind of library. I am trying to use a C# library. A library in a programming language, is a set of functions and code to do a specific task. For instance, the library I am trying to use is built to process MIDI messages and read MIDI files. Read this article for a more complete description for the kind of library I am talking about. —SGA314 I am not available on weekends (talk) 13:51, 12 August 2015 (UTC)[reply]
I think it is simple confusion. I mentioned that you should use the library (the C# library) and that there should be at least one book you can find that has the library well documented. However, the way I wrote it, it could very well mean that I suggested you use the library (a public building full of books) and that the building would contain at least one book about the MIDI format. I should have made my comment less vague. However, I think that both interpretations are valid suggestions. You could use the C# library with documentation or you could visit the library and look for a book on MIDI. 209.149.114.32 (talk) 14:24, 12 August 2015 (UTC)[reply]
I though it was a misunderstanding to, although my first thought was that he was joking so just to be sure I included the first part. As an open comment to everyone(including Nil Einne) I meant no disrespect or offense by what I said about if he was joking or not. —SGA314 I am not available on weekends (talk) 15:06, 12 August 2015 (UTC)[reply]
It wasn't a joke but a serious question. I thought 209 was referring to a physical library in that context since the library you had was already discussed and semi dismissed as being unhelpful to you, and they referred to a book. I may have misunderstood the comment but I do think if your resources on the internet are so limited, you will find you have no choice but to use resources like physical libraries a lot. In fact, I presume you already explored other options like Tor or VPNs, but perhaps it's worth exploring if the physical library has a less restrictive internet access since blocking most or all educational institutions is frankly bizzare (we've had some Cuban users before and IIRC even they weren't generally quite so restricted). For something like programming, even the resources of a well stock library is likely to be limiting. Nil Einne (talk) 15:40, 12 August 2015 (UTC)[reply]
Oh yes, I will be visiting a library soon. There are many books I need to find, like a book all about GLSL shader programming or a book all about C++ programming. Another option is to use a virtual web browser. Although I can't access one right now, if I ever was at the library and something blocked me, I could simply use a virtual web browser to access almost whatever I want. yeah, Tor is good for a lot of things, but its still very tricky for me to use. As for VPNs, those go way over my head. I haven't the slightest clue how to use one. —SGA314 I am not available on weekends (talk) 16:13, 12 August 2015 (UTC)[reply]
I didn't see any of these posts as answering your specific question, so I have broken down the entire hexadecimal for you using the following sources: http://www.cs.cmu.edu/~music/cmsip/readings/Standard-MIDI-file-format-updated.pdf and http://valentin.dasdeck.com/midi/midifile.htm. Likely you'll want to list the specific note values 'note on' events on a per-track basis. Hopefully you can take it from here.
Pelog on D.mid - Hex Breakdown
(Hex : Meaning)

4d54 6864 : MThs (Header Chunk)
	0000 0006 : Length = 6 bytes
	0001 : Format Type = 1 (one or more simultaneous tracks)
	0002 : Track Count = 2
	0100 : (positive) - Division of a quarter note = 256

4d54 726b : MTrk (Track Chunk) 
	0000 0029 : Length = 41 bytes 
	00 : Delta Time = 0
		ff02 : Copyright
		0c : Length = 12 bytes
		436f 7079 7269 6768 7420 a920 : Text = "Copyright © "
	00 : Delta Time = 0
		ff58 04 : Time Signature
		0800 6008 : nndd ccbb - 8/0 
	00 : Delta Time = 0
		ff59 02 : Key Signature
		0000 : sf mi - Key of C Major 
	00 : Delta Time = 0
		ff51 03 : Set Tempo
		03d0 90 : tttttt - 250000 microseconds per quarter note (1/4 second per quarter note, or 1 second per note)
	01 : Delta Time = 1
		ff2f 00	: End of Track

4d54 726b : MTrk (Track Chunk)
	0000 008e : Length = 142 bytes
	00 : Delta Time = 0
		c0 : Program Change, Channel 0
			0e : Program 11
	00 : Delta Time = 0
		b0 : Control Change, Channel 0
			7900 : Controller = 127, Value = 0 
	00 : Delta Time = 0
		b0 : Control Change, Channel 0 
			4000 : Controller = 64, Value = 0
	00 : Delta Time = 0
		b0 : Control Change, Channel 0
			5b48 : Controller = 91, Value = 72 
	00 : Delta Time = 0
		b0 : Control Change, Channel 0
			0a39 : Controller = 10, Value = 57 
	00 : Delta Time = 0
		b0 : Control Change, Channel 0
			0764 : Controller = 7, Value = 64 
	00 : Delta Time = 0
		ff03 : Sequence/Track Name
			07 : Length = 7 bytes 
			536c 656e 7461 6d : Text = "Slentam"
	00 : Delta Time = 0 
		e0 : Pitch Wheel Change, Channel 0
			0040 : 8192
	00 : Delta Time = 0
		90 : Note On, Channel 0
			3e5c : Note 62 (D4), Velocity 92
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			3e00 : Note 62 (D4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			554a : 9557 
	00 : Delta Time = 0
		90 : Note On, Channel 0
			3f5e : Note 63 (D#4), Velocity 94
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			3f00 : Note 63 (D#4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			2b35: 6827
	00 : Delta Time = 0
		90 : Note On, Channel 0
			4165 : Note 65 (F4), Velocity 101
	88 : Delta Time = 136 
	00 : Delta Time = 0
		80 : Note Off
			4100 : Note 65 (F4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			552a : 5461 
	00 : Delta Time = 0
		90 : Note On, Channel 0
			446a : Note 68 (G#4), Velocity 106
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			4400 : Note 68 (G#4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			2b35 : 6827
	00 : Delta Time = 0
		90 : Note On, Channel 0
			456a : Note 69 (A4), Velocity 106
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			4500 : Note 69 (A4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			0040 : 8192
	00 : Delta Time = 0
		90 : Note On, Channel 0
			4664 : Note 70 (A#4)
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			4600 : Note 70 (A#4), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			2b55 : 10923
	00 : Delta Time = 0
		90 : Note On, Channel 0
			486a : Note 72 (C5), Velocity 106
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0 
			4800 : Note 72 (C5), Velocity 0
	00 : Delta Time = 0
		e0 : Pitch Wheel Change, Channel 0
			0040 : 8192
	00 : Delta Time = 0
		90 : Note On, Channel 0
			4a66 : Note 74 (D5), Velocity 102
	88 : Delta Time = 136
	00 : Delta Time = 0
		80 : Note Off, Channel 0
			4a00 : Note 74 (D5), Velocity 0
	01 : Delta Time = 1
	 	ff2f 00 : End of Track

Note Sequence: D4, D#4, F4, G#4, A4, A#4, C5, D5

Ehryk (talk) 06:42, 13 August 2015 (UTC)[reply]

Wow. Thats superbly helpful and answers my question. Thanks So much Ehryk. —SGA314 I am not available on weekends (talk) 11:28, 13 August 2015 (UTC)[reply]