Wikipedia:Reference desk/Archives/Computing/2017 June 21

From Wikipedia, the free encyclopedia
Computing desk
< June 20 << May | June | Jul >> June 22 >
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.


June 21[edit]

Very low level programming[edit]

How many man-hours would it take to make 4 minutes of techno music with an abacus? A Turing tape? (1 read, write, erase or square move per second) You can't actually hear it since the system's so slow and speakerless but just because the it's not a PC doesn't mean it's not Turing-complete. How many abacuses do you need? Turing tape squares? About how many words would it take to describe the initial state and "how to do it" in plain English (though if it has enough loops doing the instructions might make learning them seem like a millisecond?). Sagittarian Milky Way (talk) 19:07, 21 June 2017 (UTC)[reply]

An abacus is not a programmable computer, so that part of the question doesn't make sense.
The rest of your question isn't likely to have an easy reference answer. You'd be asking us to do a lot of research, math, and estimation on your behalf.
Perhaps you could attempt the estimation yourself and ask us for any constants you can't find through your own research. ApLundell (talk) 21:39, 21 June 2017 (UTC)[reply]
A CD is 44,100 16-bit samples/sec*2 (~172 KB/s) so an uncompressed song is about 10 megabytes/minute. A decimal abacus with 10-14 rows of beads has a storage capacity of at least 4 bytes and can hold one 16-bit audio sample (stereo) or 2 samples (mono) so storing a song would take millions of abacuses. If a common abacus weighs only 100 grams(?) that'd be 2,000 tonnes of abacuses (stereo) or 1,000 tonnes (mono). Laid end to end the abacuses could span some continents if each was 1 foot wide. If 1 square foot they'd cover a large fraction of a square mile. This could be reduced greatly if compressed to mp3 or something. I don't know what the smallest program that can make electronic music is but surely one can be stored in only kilobytes or several megabytes. I don't know how many PC cycles it'd take but perhaps drawing the sound waves by hand would simple enough that a human could do it (calculating the value of each sample of i.e. saw-shaped waves of middle C, low F, high A or whatever the notes you need are, adding together like 7+ of them into chords, figuring out when to change the notes, calculating the new chords, and inputting the samples into roughly 10 million abacuses (mono). 1 second to write each abacus digit would be almost 5 years stopping only to sleep/eat/excrete. If you want the song to have tremolo, vibrato, portamento, glissando, volume changes, or stereo bouncing from one ear to the other that'd be a ton of more work. Perhaps it'd take over 100 man-years even without those effects but I can't estimate better than that. I've heard that some techno is made of 21 seperate notes(!) which would have to be added by abacus. Sagittarian Milky Way (talk) 01:44, 23 June 2017 (UTC)[reply]
Low-level programming generally means writing software without the aid of a compiler to isolate the writer from the execution semantics of a computer architecture.
Techno is a genre of electronic dance music characterised by a 120 to 150 beats per minute tempo created with music technologies such as drum machines, synthesizers and digital audio workstations, and expresses what Adorno saw as the alienating effect of mechanisation on the modern consciousness. Quora.com has some answers to What-is-the-best-equipment-software-for-a-beginner-to-create-electronic-music?
An Abacus is an ancient bead frame calculator capable of simple manual calculations such as addition but it is not capable of performing a program algorithm involving conditional branching or of synthesizing the sinusoidal tone waveforms of Electronic music.
Turing Tape is the name of a Seattle-area experimental musical project. You may be confusing this with the Turing completeness criterion in Theoretical computer science. Blooteuth (talk) 23:28, 21 June 2017 (UTC)[reply]
I assumed that "Turing Tape" was a reference to the infinite tape drive on Turing's hypothetical machine.
It's a common misunderstanding that if a physical Turing Machine could be built to Turing's original specification (perhaps with finite tape) it would somehow be the "most primitive" computer possible. That's not really the case. It's more of a universal machine for thought experiments, not some primitive base case upon which all other designs are built. ApLundell (talk) 15:51, 22 June 2017 (UTC)[reply]
I think a talented musician might be able to use the abacus as a sort of inconvenient cabasa - an abacasacabasa? - and with a little imagination, you could probably perform at least a portion of a musical composition that some might call "rhythmic." Nimur (talk) 23:29, 21 June 2017 (UTC)[reply]
It also depends on what you define as "techno" (do you count 8-bit music?). But I don't see the point of making music for a speakerless system unless you intend to make it write the notes down on the Turing tape. If it has no output, how do you decide if it's "made" anything? 78.0.193.196 (talk) 23:33, 21 June 2017 (UTC)[reply]
The question is very unclear, but one could imagine a computer program for generating music being written down on paper and "executed" by a human being. It's a common exercise in elementary programming classes to give the student a program and ask her to determine what it does by executing it manually. An abacus could be used to assist with any arithmetic operations required by the program. (Multiple abacuses would not serve any purpose, except perhaps to save the trouble of copying the result of an arithmetic operation onto paper.) Perhaps that's what the OP was asking. I would estimate that it takes a human 1 to 10 seconds to execute an assembly language instruction, so the answer would require determining how many instructions a music generating program takes, and multiplying by that number. Human are of course vastly slower than computers in executing computer code -- a typical modern computer takes less than a nanosecond to execute an instruction, several billion times faster than the human. CodeTalker (talk) 00:17, 22 June 2017 (UTC)[reply]
On the same lines as the abacasacabasa might I suggest Mechanical Turing Machine in Wood which definitely does make a noise though one would probably need a number of them to produce music like The Floppotron: The Final Countdown. ;-) Dmcq (talk) 11:31, 22 June 2017 (UTC)[reply]
Usually, ll programming is assembler. A programming language very close to assembler is C. But, todays C on the PC it is full of included ressources, inflating each small program, sometimes with an overhead. For a real time application on the lowest level, the cycles of each CPU instruction can be counted. In RISC, it is usually all the same number of clock cycles per instruction. Interrupts trigger by a preset countdown to compensate an variable number of instructions in program flow. This occurs, in generating a variable frequency generator to the duration of a tone. Understanding it in this way, there's no big difference, in swapping a bit for pulse output or reading a sample from previous stored a wave sound. Splitting the tone data from the program code is the basic of a simple digital synthesizer, which is playing the sound data. More complex is MIDI and synthesizing different sounds per instrument and octave, also fading volume in and out. The basic loops for such program code are simple, but the human errors take the time. --Hans Haase (有问题吗) 08:48, 25 June 2017 (UTC)[reply]