Magazine Archive

Home -> Magazines -> Issues -> Articles in this issue -> View

BBC Reverb

BBC reverb


Gary Herman turns a BBC-B into a keyboard and throws in some echoes for free


Echo and reverberation are not just musical spice or a garnish on the work produced by synthesists and computer musicians. On the contrary, they are integral to tone quality. The most basic kinds of electronic instruments often sound soulless and mechanical without reverb — tones jar and do not blend well with other instruments, transitions from note to note are jerky.

This programme essentially demonstrates the quality of reverb by adding it to simple monophonic sounds produced by the BBC computer. With varying degrees of reverb, the user can simulate audible echo, phasing, staccato and pizzicato. A moderate amount of reverb simply adds depth and body to the tones produced.

The programme is entirely self-contained — music being produced from the BBC's internal loudspeaker — unfortunately, the BBC has no audio output socket. The programme converts the computer into a real-time synthesizer — the keyboard being formed from the top two rows of character keys with 'TAB' as B below middle C, 'Q' as middle C, '2' as C sharp and so on up to '_' (A). The top row of keys (excluding '1', '4', '8' and '-') are black notes.

The red function keys allow you to change reverb parameters while playing: f1 and f1 increasing and decreasing 'delay'; f2 and f3 increasing and decreasing 'number of cycles'; f4 and f5 increasing and decreasing 'note duration'; and f6 to f9 increasing and decreasing 'decay constant'. These parameters are changed by playing a note while pressing the relevant function key. The figures are displayed on the screen.

The keyboard scale can be changed by altering the value of the variable BASE in line 20 — a feature which can be used to 'tune' the computer. The basic envelope of the notes is set by entering figures for peak amplitude (MAXVOL), sustain amplitude level (SUSVOL), attack-decay constant (AD) and sustain-release constant (SR). I have had to compromise with these parameters, which do not fully exploit the complexity of the BBC's envelope generating facility. The compromise seems to work and a little practice should reveal its quirks. The programme also asks whether you want to turn off the BBC's keyboard repeat feature or not (although this may not seem to make a big difference it does have an effect) and asks you if you want to use simple or complex envelopes — which brings us to an essential point.

Echo and reverb are complex phenomena. It would be possible and relatively easy just to play a note and repeat it after a given time interval. In fact, computers using programmable sound generators (PSGs) are ideally suited to such simple repetition. However, the effect would be unconvincing. 'Real' reverb involves variable delays, variable rates of decay for each echo and variable numbers of repetitions. It also involves subtle changes in tone quality between the original sound and its echoes. Once again, I've compromised by introducing the option of using 'complex' envelopes — which actually means using three slightly different envelopes (see lines 550 to 590). You might be able to achieve better results by altering the envelope parameters in lines 570 and 580. Then there is DELAY (see lines 330 and 350) which controls the interval between the three primary occurrences of the played note. The number of cycles (variable REPT) controls the number of times these three are repeated (see the FOR...NEXT loop in lines 300 and 380) — this is rather like setting the number of heads on tape delay system while DELAY sets their distance apart. The decay constant (variable K) effectively sets the rate at which the sound decays between cycles (see line 370) and note stretch (variable DUR) is the same as the BBC's envelope duration parameter (it specifies the length of each step in the envelope in hundredths of a second). Once again, a little experimentation in the handling of these variables might be worthwhile — as it stands, the programme is the result of only so much trial and error. Some trial inputs to this programme are given in the table below:

Trial Input examples
DELAY: 16 2 64 4 1 8 1
NUMBER OF CYCLES: 2 2 1 4 2 4 2 1
NOTE STRETCH: 6 10 4 2 3 6 12 1
DECAY CONSTANT: 2 .5 1 1.1 4 1.1 1.2 1
MAXVOL: 126 126 126 126 126 100 100 100
SUSVOL: 0 0 0 126 0 100 126 126
AD: 64 110 119 0 124 100 126 126
SR: 64 0 0 0 0 100 0 4

(All the above used complex envelopes and no key repeat.)


Reverb Program Listing
10 REM REVERB KEYBOARD BBC COPYRIGHTG. HERMAN 1983
20 MODE4:DIMA(23):BASE = 45:L = 1: M = 2:N = 3(*FX11,50)
30 FORX=1 TO 23:READ P:A(X)= P:NEXT
40 INPUT "DELAY: "DELAY
50 INPUT "NUMBER OF CYCLES:"REPT
60 INPUT "NOTE STRETCH: "DUR
70 INPUT "DECAY CONSTANT: "K
80 PRINT
90 INPUT "MAXVOL: "V
100 INPUT "SUSVOL: "S
110 INPUT"AD:"AD
120 INPUT "SR:"SR
130 PRINT
140 INPUT "SIMPLE(S) OR COMPLEX(C) ENVELOPES: "$
150 IF A$ = "C" THEN 170
160 M = 1 :N = 1
170 INPUT "REPEAT KEYS (YOR N): ",B$
180 IF B$ = "N" THEN *FX11,0
190 PRINT TAB (8,0); DELAY; "
200 PRINTTAB(18,1); REPT; "
210 PRINTTAB(14, 2); DUR; "
220 PRINT TAB (16, 3); K; "
230 PLAY = 240
240 FREQ = - 1
250 FOR X = 1 TO 23
260 IF INKEY (-A(X)) THEN FREQ = BASE + 4*X
270 NEXT
280 IF FREQ = -1 THEN 250
290 MAXVOL = V:SUSVOL = S
300 FOR CYC = 1 TO REPT
310 PROCENV (MAXVOL, SUSVOL)
320 SOUND &11,L,FREQ,10
330 FOR X = 1 TO DELAY:NEXT
340 SOUND &12,M,FREQ,16
350 FOR X= 1 TO 0.5*DELAY: NEXT
360 SOUND &13.N, FREQ,10
370 MAXVOL = MAXVOL/K: SUSVOL = SUSVOL/K
380 NEXT
390 IF INKEY (0)< > - 1 THEN PROCKEY
400 GOTO PLAY
410 DEFPROCKEY
420 IF INKEY (-33) THEN DELAY = 2* DELAY
430 IF INKEY (-114)THEN DELAY = 0.5* DELAY
440 IF INKEY (-115) THEN REPT = REPT + 1
450 IF INKEY (- 116) THEN REPT = REPT-1
460 IF INKEY (-21) THEN DUR = DUR + 1
470 IF INKEY (-117) THEN DUR = DUR - 1
480 IF INKEY (- 118) THEN K = K + 0.1
490 IF INKEY ( - 23) THEN K = K — 0.1
500 IF INKEY (-119) THEN K = K + 1
510 IF INKEY (- 120)THEN K = K- 1
520 IF K < 0.1 THEN K = 0.1
530 PLAY = 190
540 ENDPROC
550 DEF PROCENV (MAXVOL, SUSVOL)
560 ENVELOPE 1,DUR,0,0,0,0,0,0,AD, AD - 127, - SR, SR = 0, MAXVOL, SUSVOL
570 ENVELOPE 2, DUR,0,0,0,0,0,0,AD - 2, AD - 125, - SR, SR = 0, MAXVOL - 8, SUSVOL - 8
580 ENVELOPE 3, DUR,0,0,0,0,0,0,AD - 8, AD - 119, - SR, SR = 0, MAXVOL-16, SUSVOL-16
590 ENDPROC
600 DATA 97, 17, 50, 34, 18, 35, 52, 20, 36, 53, 69, 37, 54, 38, 39, 55, 40, 56, 72, 25, 57, 121, 41


Also featuring gear in this article

BBC Micro
(ES Feb 84)

BeeBMIDI (Part 1)
(EMM Jun 84)

BeeBMIDI (Part 2)
(EMM Jul 84)

BeeBMIDI (Part 3)
(EMM Aug 84)

BeeBMIDI (Part 4)
(EMM Nov 84)

BeeBMIDI (Part 5)
(EMM Dec 84)

Soft Music
(ES Mar 84)


Browse category: Computer > Acorn



Previous Article in this issue

Chip Parade


Electronic Soundmaker & Computer Music - Copyright: Cover Publications Ltd, Northern & Shell Ltd.

 

Electronic Soundmaker - Feb 1984

Donated by: Ian Sanderson

Topic:

Computing


Gear in this article:

Computer > Acorn > BBC Model B

Feature by Gary Herman

Previous article in this issue:

> Chip Parade


Help Support The Things You Love

mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.

If you value this resource, you can support this project - it really helps!

Donations for August 2020
Issues donated this month: 0

New issues that have been donated or scanned for us this month.

Funds donated this month: £30.00

All donations and support are gratefully appreciated - thank you.

Please Contribute to mu:zines by supplying magazines, scanning or donating funds. Thanks!

Monetary donations go towards site running costs, and the occasional coffee for me if there's anything left over!
muzines_logo_02

Small Print

Terms of usePrivacy