EMUSIC-L Digest Volume 30, Number 3 This issue's topics: Delay vs. BPM, innumeracy, and calculators (20 messages) Your EMUSIC-L Digest moderator is Joe McMahon . You may subscribe to EMUSIC-L by sending mail to listserv@american.edu with the line "SUB EMUSIC-L your name" as the text. The EMUSIC-L archive is a service of SunSite (sunsite.unc.edu) at the University of North Carolina. ------------------------------------------------------------------------ Date: Mon, 8 Jul 1991 15:32:18 EDT From: Joel Kraft Subject: Delay vs BPM Hello... Does anyone out there have a chart that would calculate the required delay setting needed to synchronize with a given number of beats per minute? Example: If I have a metronome clicking away at 100 beats per min., I want to be able to find out the required delay time needed (milliseconds) in order to have each repeated delay occur exactly on the beat in synchronicity with the clicking of the metronome... Thanks Joel ------------------------------ Date: Mon, 8 Jul 1991 17:00:40 EST From: Kathleen Russell Subject: Re: Delay vs BPM Joel: I have a book that gives a formula for figuring out delay times. I will look it up tonight and get an answer for you tomorrow [Tuesday] Kathy ------------------------------ Date: Mon, 8 Jul 1991 17:10:00 CDT From: greg@IHLPM.ATT.COM Subject: Re: Delay vs BPM > Does anyone out there have a chart that would calculate the > required delay setting needed to synchronize with a given number > of beats per minute? How 'bout a formula: delay(in milliseconds) = 60000 / BPM > Example: If I have a metronome clicking away at 100 beats per min., > I want to be able to find out the required delay time needed > (milliseconds) in order to have each repeated delay occur exactly on > the beat in synchronicity with the clicking of the metronome... delay = 60000 / 100, or 600 milliseconds The value 60000 is just the number of milliseconds in a minute (nothing magic there). You could probably code up a quick program to generate a chart for yourself if you are into programming. -- Greg Youngdahl AT&T Bell Laboratories Naperville, IL att!ihlpm!greg ------------------------------ Date: Mon, 8 Jul 1991 15:34:15 PDT From: "Michael R. Kesti" Subject: Re: Delay vs BPM Simply divide 60,000 by the number of beats per minute to get the number of milliseconds per beat. This is derived as follows: 1 minute 60 seconds 1000 milliseconds 60,000 milliseconds -------- X ---------- X ----------------- = ------------------- N beats 1 minute 1 second N beats If you must have a chart, write a short program based on this formula that tabulates the values for a range of tempos (and perhaps for a range of repeats per beat, as well) redirect the output to a printer. ============================================================================ Michael Kesti Grass Valley Group, Inc. | "And like, one and one don't make mrk@gvgspd.GVG.TEK.COM | two, one and one make one." !tektronix!gvgpsa!gvgspd!mrk | - The Who, Bargain ========================================================================= ------------------------------ Date: Tue, 9 Jul 1991 08:00:00 EDT From: wbf@CBEMA.ATT.COM Subject: Re: Delay vs BPM /* * An interactive utility for computing the number of beats per * note for various time signatures and beat resolutions. * * Written by Bill Fox cbema!wbf * * If you don't want the escape sequences, which are used to * do ANSI-compatible screen operations, you'll have to remove the * third #define at the top of the program. That should make it * runnable on non-ANSI terminals. */ #include #define TRUE 1 #define FALSE 0 /* #define VT100 */ struct NOTE { char name[20]; int value; }; static struct NOTE note[12] = { {"half", 2}, {"half triplet", 3}, {"quarter", 4}, {"quarter triplet", 6}, {"eighth", 8}, {"eighth triplet", 12}, {"sixteenth", 16}, {"sixteenth triplet", 24}, {"thirtysecond", 32}, {"thirtysecond triplet", 48}, {"sixtyfourth", 64}, {"sixtyfourth triplet", 96} }; int choice; float BPMin; /* Tempo in beats per minute. */ float BL; /* Beat length = 60 / BPMin. */ int BPMea; /* Beats per measure, time signature's numerator. */ int BEAT; /* Which type of note gets the beat. */ int QL; /* Quantize level - which type of note is resolution. */ float TPB; /* Ticks per beat = (float)QL / (float)BEAT. */ int Beat_no; /* A beat number <= BPMea. */ int Tick_no; /* Tick number <= QL; Tick_no = ((TPB) x (Beat_no - 1)) + 1 */ float EQ[12]; /* Equivalent ticks = (float)BEAT*TPB/(float)note[i].value. */ int case_two_done; int case_three_done; int requantize; int i; main() { int case_two_done = FALSE; int case_three_done = FALSE; int requantize = FALSE; printf("\v\v\v\vRythm Composer Aid\n\n"); while (1) { printf("\nWhat do you want to do?\n\n"); printf("\t1. Calculate time delay from a tempo marking.\n"); printf("\t2. Calculate tick number for the beats in a measure.\n"); printf("\t3. Calculate the number of ticks for different note lengths.\n"); printf("\t4. Exit the program.\n\n"); fflush(stdin); printf("Enter your choice from the menu by number: "); choice = getchar(); printf("\n"); switch(choice) { case '1': /* Calculate time delay from tempo marking. */ delay(); break; case '2': /* Calculate tick number for beats. */ beats(); break; case '3': /* Calculate the equivalent ticks. */ notes(); break; case '4': /* Quit the program. */ printf("Thank you for using the Rythm Composer Aid "); printf("Program.\n\n"); exit(0); default: printf("Invalid response. Please try again.\n"); break; } } } int note_value(menu) char menu; { int value = -1; #ifdef VT100 static char UP[] = { '', '[', '6', 'A' }; static char OVER[] = { '', '[', '4', '0', 'C' }; #else static char UP[] = { 0 }; static char OVER[] = { ' ' }; #endif fflush(stdin); printf("\t2. Half note\n"); printf("\t4. Quarter note\n"); printf("\t8. Eighth note\n"); printf("\t16. Sixteenth note\n"); printf("\t32. Thirtysecond note\n"); if (menu != 'r') { /* If the menu is not restricted, print the other menu items. */ printf("\t64. Sixtyfourth note%s\n", UP); printf("%s3. Half triplet note\n", OVER); printf("%s6. Quarter triplet note\n", OVER); printf("%s12. Eighth triplet note\n", OVER); printf("%s24. Sixteenth triplet note\n", OVER); printf("%s48. Thirtysecond triplet note\n", OVER); printf("%s96. Sixtyfourth triplet note\n", OVER); } printf("\nEnter your choice from the menu by number: "); scanf("%d", &value); return(value); } delay() { while (1) { printf("Enter 0 to return to the menu.\n"); printf("Enter the tempo in beats per minute: "); fflush(stdin); scanf("%f", &BPMin); /* printf("BPMin = %f\n", BPMin); */ if (BPMin == 0) return; else { BL = 60 / BPMin; printf("\nEach beat lasts %.2f ", BL * 1000); printf("milliseconds.\n\n"); } } } beats() { case_two_done = TRUE; case_three_done = FALSE; printf("Enter the time signature in two parts...\n"); printf("What is the number of beats per measure? "); fflush(stdin); scanf("%d", &BPMea); printf("What type of note gets the beat?\n\n"); BEAT = note_value('r'); printf("The time signature is %d/%d.\n", BPMea, BEAT); printf("What note is your quantization level?\n\n"); QL = note_value('f'); /* printf("QL = %d\n", QL); */ TPB = (float)QL / (float)BEAT; printf("There are %5.2f ticks per beat.\n\n", TPB); printf("------------\n"); printf("|beat|tick#|\n"); printf("|----|-----|\n"); for (Beat_no = 1; Beat_no <= BPMea; Beat_no++) { Tick_no = (TPB * (Beat_no - 1)) + 1; printf("| %2d | %3d |\n", Beat_no, Tick_no); } printf("------------\n"); } notes() { if (!case_two_done) { printf("You must do number 2 before this will work"); if (case_three_done) { printf(" again"); } printf(".\n"); return; } case_two_done = FALSE; case_three_done = TRUE; printf("--------------------------------\n"); printf("| Note Length | Ticks |\n"); printf("|----------------------|-------|\n"); for (i = 0; i < 12; i++) { EQ[i] = (float)BEAT * TPB / (float)note[i].value; if (EQ[i] >= 1.00) { printf("| %-20s | %5.2f |", note[i].name, EQ[i]); if (EQ[i] > (float)((int)EQ[i])) { printf(" *"); requantize = TRUE; } printf("\n"); } } printf("--------------------------------\n"); if (requantize) { printf("* To acheive this note length, you'll have "); printf("to choose another quantization level."); } requantize = FALSE; } ------------------------------ Date: Tue, 9 Jul 1991 11:35:25 EDT From: Jeffrey R Kell Subject: Re: Delay vs BPM Rather simple, delay(ms)=(60/BPM)*1000 so for 100 beats/minute, delay = (60/100)*1000 = 600ms /Jeff/ ------------------------------ Date: Tue, 9 Jul 1991 10:31:51 BST From: Nick Rothwell Subject: Re: Delay vs BPM > Does anyone out there have a chart that would calculate the >required delay setting needed to synchronize with a given number >of beats per minute? A second or two of mental activity tells me that (60 * 1000) / bpm will give msec per beat. I blame the New Math in high schools. Kids can't do their numbers any more. Nick. ------------------------------ Date: Tue, 9 Jul 1991 13:17:00 EDT From: Patrick Robinson Subject: Re: Delay vs BPM On Tue, 9 Jul 1991 10:31:51 BST Nick Rothwell said: >A second or two of mental activity tells me that (60 * 1000) / bpm will >give msec per beat. > >I blame the New Math in high schools. Kids can't do their numbers any more. You've hit the nail on the head. I never cease to be amazed when people can't calculate the appropriate tip (15%, or whatever) in restaurants. -Patrick ------------------------------ Date: Tue, 9 Jul 1991 16:04:00 EDT From: "William R(ay) Brohinsky" Subject: Re: Delay vs BPM Nick, Patrick, Don't be so hard on the kid. After all, new math deadens the brain, yes. However, reality sometimes hurts harder than thinking: Most metronomes (even electronic ones) are not very precise. You may think you're getting 100BPM, but you may be getting 97 to 103. This is not just shoddy merchandise, or at least can be justified with other reasoning: rarely would a human need to be that exact. Metronomes are not sequencers nor drum-machine thump tracks. Maybe the kid is _actually using_ a mechanical metronome. In such a case, no amount of figguring would have come up with numbers that could match, exactly, the mechanism's rate. Poor thing! Doubting his ability to play even sixteenths as well as to calculate milliseconds from BPM, the poor guy drops a note to his EMUSIC buddies, only to be picked on because his government-controlled schools shorted him on a real education. This is sad. (In actuallity, I could almost believe that...but not quite8^) raybro ------------------------------ Date: Tue, 9 Jul 1991 16:18:04 EDT From: Joel Kraft Subject: Re: Delay vs BPM Thanks to those who responded intelligently about BPM To those who didn't... It's the English teachers who should be blamed.... Those who can read would have realized that I was looking for a quick reference chart so that I would not have to make one.... Joel ------------------------------ Date: Wed, 10 Jul 1991 10:33:13 BST From: Nick Rothwell Subject: Re: Delay vs BPM >You've hit the nail on the head. I never cease to be amazed when >people can't calculate the appropriate tip (15%, or whatever) in >restaurants. Quite. I don't have a pocket calculator- I blame these for the innumeracy I see around these days. I do, however, own four slide rules, including a rather nice chrome spiral Otis King model which I bought for a quid. If anything, the computer and MIDI revolution is an argument for *more* numeracy. MIDI in particular requires quick conversion between decimal and hex, as well as bitshifts and two's-complement negation. The more we're surrounded by this technology which can do our menial arithmetic for us, the more important it is to be able to do it mentally in order to stay in control of the technology. I even meet computer jocks these days who can't think in octal. And I'll never buy one of those telephones which remembers numbers. Instant mental flab, which you realise as soon as you have to call someone from a phone box. Party trick: pi to 50 significant digits (memorised about 15 years ago): 3.1415926535897932384626433832795028841971693993751. Nick. ------------------------------ Date: Tue, 9 Jul 1991 18:16:00 CDT From: greg@IHLPM.ATT.COM Subject: Re: Delay vs BPM Joel, > Thanks to those who responded intelligently about BPM > > To those who didn't... > > It's the English teachers who should be blamed.... Those who can > read would have realized that I was looking for a quick reference > chart so that I would not have to make one.... Not being sure which camp I fell into (not having provided a chart or information about where to get one) I thought I'd give you a chart. Here you go. For any given BPM find the row for that BPM and index over to the column for the desired units and pick the value. For example, if you have 137 BPM goto row 130, index over to the 7 column, and find 438 microseconds. The program I used to create this chart is also included at the end of this posting. All values are in microseconds, rounded to the nearest microsecond. I hope that is sufficient. Enjoy, -- Greg Youngdahl AT&T Bell Laboratories Naperville, IL att!ihlpm!greg 0 1 2 3 4 5 6 7 8 9 ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 10 6000 5455 5000 4615 4286 4000 3750 3529 3333 3158 20 3000 2857 2727 2609 2500 2400 2308 2222 2143 2069 30 2000 1935 1875 1818 1765 1714 1667 1622 1579 1538 40 1500 1463 1429 1395 1364 1333 1304 1277 1250 1224 50 1200 1176 1154 1132 1111 1091 1071 1053 1034 1017 60 1000 984 968 952 938 923 909 896 882 870 70 857 845 833 822 811 800 789 779 769 759 80 750 741 732 723 714 706 698 690 682 674 90 667 659 652 645 638 632 625 619 612 606 100 600 594 588 583 577 571 566 561 556 550 110 545 541 536 531 526 522 517 513 508 504 120 500 496 492 488 484 480 476 472 469 465 130 462 458 455 451 448 444 441 438 435 432 140 429 426 423 420 417 414 411 408 405 403 150 400 397 395 392 390 387 385 382 380 377 160 375 373 370 368 366 364 361 359 357 355 170 353 351 349 347 345 343 341 339 337 335 180 333 331 330 328 326 324 323 321 319 317 190 316 314 313 311 309 308 306 305 303 302 200 300 299 297 296 294 293 291 290 288 287 210 286 284 283 282 280 279 278 276 275 274 220 273 271 270 269 268 267 265 264 263 262 230 261 260 259 258 256 255 254 253 252 251 240 250 249 248 247 246 245 244 243 242 241 250 240 239 238 237 236 235 234 233 233 232 260 231 230 229 228 227 226 226 225 224 223 270 222 221 221 220 219 218 217 217 216 215 280 214 214 213 212 211 211 210 209 208 208 290 207 206 205 205 204 203 203 202 201 201 #include char *h1 = " 0 1 2 3 4 5 6 7 8 9\n", *h2 = " ---- ---- ---- ---- ---- ---- ---- ---- ---- ----\n"; main() { double ones, tens, value; printf( "%s%s", h1, h2 ); for( tens = 10.0; tens < 300.0; tens += 10.0 ) { printf( "%3.0lf ", tens ); for( ones = 0.0; ones < 10.0; ones++ ) { value = tens + ones; printf( " %4.0lf", 60000.0 / value ); } printf( "\n" ); } } ------------------------------ Date: Wed, 10 Jul 1991 11:21:42 EDT From: ronin Subject: Re: Delay vs BPM pocket calculators are not to blame for innumeracy. rather, there is significant fault with an educational system which promotes an adversarial relationship with numbers, arithmetic, and math. i feel this strongly, because i was so victimized. it is only recently that i have come to terms with the subjects, and my anger at having had them presented to me in such a disconnected, irrelevant manner is great. i blame this (without any evidence), on what i perceive as a general anti-intellectual bias in the US. math is almost the paragon of the abstract, and so seems to be kept at more than arm's length, even by many of its teachers. personally, i love calculators... they bring numbers closer to me. i can play with them, discover patterns, and so on. if anything, they have made the subject more accessible to me, and made me more numerate. this is not a rebuttal of nick's views, just an exposition of my own. --------------------------< Eschew Obfuscation >------------------------- Eric Harnden (Ronin) The American University Physics Dept. Washington, D.C ------------------------------ Date: Wed, 10 Jul 1991 11:41:53 EDT From: Joel Kraft Subject: Delay vs BPM pmy.... I'm not going to use profane language or cut on anyone in order to continue in a futile arguement, because it would be a waste of my time and your time as well. I apologize for not wanting to "re-invent the wheel" when it already existed. I do not understand how you could have concluded that my abilities were inept concidering that you knew nothing about my mathematical background. I do admit to having had problems with Calc III, but Algebra? Give me a break. I just thought that by sending a memo out I would have been able to find what I was looking for and maybe provide an interesting topic for other subscribers. In 1991, I would think that musicians would be willing to help out fellow musicians (and there were many who did help out, thanks). Instead, a few people blatantly attacked my friendly request for information. While you were getting flustered I created my own conversion table in REXX. If anyone would like a copy, just let me know and I'll send it out straight away. I found it came in handy last night while learning some U2 tunes "by ear" for my band. Joel ------------------------------ Date: Wed, 10 Jul 1991 13:16:33 EDT From: ronin Subject: the end of delay/bpm at least as far as i'm concerned, that is. really, i hope i didn't give the impression that i thought anyone here was innumerate by continuing along a path of discussion that had been raised by the suggestion. my own most sincere apologies if so. i really was just talking about the nature of the phenomenon itself, particularly with respect to pocket calculators... which i still like. especially the programmable ones with graphical displays. one wonders if there might be a musical use for them... about which more (sort of) in the next post (i want to separate the topic). anyone remember kraftwerk, and the show they did where they'd hand calculators out to the first row, which controlled sequence parameters in the current song? --------------------------< Eschew Obfuscation >------------------------- Eric Harnden (Ronin) The American University Physics Dept. Washington, D.C ------------------------------ Date: Wed, 10 Jul 1991 13:22:15 EDT From: Patrick Robinson Subject: Re: Delay vs BPM Joel, Sorry for sounding caustic. But it really is a simple calculation, if you think about it. Nick is right when he condemns our habit of using machines to perform simple arithmetic. Sure, it may be *easier* to glance at a chart, but avoidance of this level of calculation leads to intellectual depravity. > The program I used to create this chart is also included at the >end of this posting. All values are in microseconds, rounded to the >nearest microsecond. I hope that is sufficient. Actually, your chart gives values in units of 10^(-4) sec. A microsecond is one millionth of a second, or 10^(-6) sec. Just to clarify, if you have 100 BPM, then you would have 1 beat per 600 milliseconds. 120 BPM == 1 beat per 500 milliseconds. -Patrick, who admits to the occasional use of a calculator when balancing his checkbook... :-P ------------------------------ Date: Thu, 11 Jul 1991 09:31:00 CDT From: greg@IHLPM.ATT.COM Subject: Re: Delay vs BPM Patrick (and all), Just for clarification, I should have said milliseconds where I typed microseconds. However, the chart *is* in milliseconds (10^-3) not 10^-4 (whatever name that may have). If you go to the 100 row and look in the 0 column you will see the value of 600 milliseconds corresponding to a rate of 100 BPM, similarly the 120 row, 0 column has a value of 500 milliseconds corresponding to 120 BPM, just as you specify. While I did type microseconds again in my example of using the chart, the numbers there also are correct for millisecond values (137 BPM: row 130, column 7 has 438, the correct millisecond delay required for 137 BPM). > >end of this posting. All values are in microseconds, rounded to the > >nearest microsecond. I hope that is sufficient. > > Actually, your chart gives values in units of 10^(-4) sec. > A microsecond is one millionth of a second, or 10^(-6) sec. > Just to clarify, if you have 100 BPM, then you would have 1 beat per > 600 milliseconds. 120 BPM == 1 beat per 500 milliseconds. > > -Patrick, who admits to the occasional use of a calculator when > balancing his checkbook... :-P Sorry for any confusion. I probably should have labeled the chart and the axes, but it was a "quick-and-dirty" coding effort, and I didn't take the time to beautify things. I assumed my example would make use of the chart clear, but obviously I should have reviewed my terminology before sending out the mail. After reviewing all of the above I can see that you were appending the digit from the top of a column to the end of the digits from the side of each row. The way the chart works is to add the two values. Thus row 130, column 7 represents 130 + 7 or 137 BPM, not 1307 BPM. The chart covers BPM values from 10 to 299, not 100 to 2909. My microsecond/millisecond faux pas still stands however. Sorry. -- Greg Youngdahl AT&T Bell Laboratories Naperville, IL att!ihlpm!greg ------------------------------ Date: Thu, 11 Jul 1991 14:36:58 EDT From: Patrick Robinson Subject: Re: Delay vs BPM On Thu, 11 Jul 1991 09:31:00 CDT said: > After reviewing all of the above I can see that you were appending >the digit from the top of a column to the end of the digits from the side >of each row. The way the chart works is to add the two values. Ooops! My mistake. See? This is the kinds of problems you run into when you depend upon charts and such... :-) :-) :-) ^^^^^^^^^^^^^ | (just so no one takes offense...)------+ -Patrick ------------------------------ Date: Thu, 11 Jul 1991 10:16:51 BST From: Nick Rothwell Subject: Re: the end of delay/bpm >anyone remember kraftwerk, Remember them? I'm seeing them in concert next Wednesday. >and the show they did where they'd hand >calculators out to the first row, which controlled sequence parameters >in the current song? They did that back in '81. Some member of the audience pressed a button, and the sequencers immediately drifted out of sync. Nick. ------------------------------ Date: Thu, 11 Jul 1991 12:04:14 EDT From: jtf Subject: Re: the end of delay/bpm Musical (?) use of calculators: If you hold a calculator next to a guitar pickup, you can often pick up a buzz or tone from the calculator's clock frequency (or an audible subharmonic thereof). I found I could get different tones from an old TI programmable by running loops with different numbers of NOPs in them. What, me a nerd? Nahhhh.... ------------------------------ End of the EMUSIC-L Digest ******************************