BBC BASIC
« The Sussex Carol »

Welcome Guest. Please Login or Register.
Mar 31st, 2018, 10:40pm



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
We apologize Conforums does not have any export functions to migrate data.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

Thank you Conforums members.
Cross-platform BBC BASIC (Windows, Linux x86, Mac OS-X, Android, iOS, Raspberry Pi)
BBC BASIC Resources
BBC BASIC Help Documentation
BBC BASIC for Windows Home Page
BBC BASIC Programmers' Reference
BBC BASIC Beginners' Tutorial
BBC BASIC for SDL 2.0 Home Page
BBC BASIC Discussion Group

« Previous Topic | Next Topic »
Pages: 1  Notify Send Topic Print
 thread  Author  Topic: The Sussex Carol  (Read 223 times)
Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 803
xx The Sussex Carol
« Thread started on: Dec 17th, 2017, 09:34am »

Here's a seasonal offering from Ron Stickley: The Sussex Carol, transcribed for the old Z80 Music Program in 1983. The code will run in 'BBC BASIC for SDL 2.0' (on all platforms, including the experimental 64-bit version!) or in 'BBC BASIC for Windows' (including the trial version).

I don't think it's common to repeat the first verse, but Ron did so I've kept that feature in his memory. I'm so pleased that a reasonably complete archive of Ron's transcriptions has survived all this time.

Because of its length I have listed the source code in a separate message.



Richard.
« Last Edit: Dec 17th, 2017, 10:29am by Richard Russell » User IP Logged

Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 803
xx Re: The Sussex Carol
« Reply #1 on: Dec 17th, 2017, 09:34am »

Code:
REM The Sussex Carol, Traditional Lyrics and Melody.REM Transcribed for Z80 Music by Ron J. Stickley 1983REM BBC BASIC version by Richard Russell, 16-Dec-2017IF INKEY$(-256) = "W" THEN INSTALL @lib$+"HQSOUND" PROC_hqinit *FONT Consolas,10 PROC_stereo(0,-127) PROC_stereo(1,-0) PROC_stereo(2,127) PROC_stereo(3,127)ELSE ON ERROR IF ERR=17 CHAIN @lib$+"../examples/tools/touchide" ELSE PRINT REPORT$ : END OSCLI "FONT """ + @lib$ + "DejaVuSansMono"",10" *STEREO 0,-127 *STEREO 1,0 *STEREO 2,127 *STEREO 3,127ENDIF*TEMPO 129DIM snd{(3,50)a&,p&,d&}, p%(3), q%(3), vol%(3)DIM cmajor&(7), scale%(7), acc%(7), flat&(7), sharp&(7)cmajor&() = 88,96,52,60,68,72,80flat&() = 0, &02, &12, &13, &1B, &5B, &5F, &7Fsharp&() = 0, &A0, &A4, &E4, &EC, &ED, &FD, &FFvol%() = 4, 1, 2, 3dur% = 24tempo% = 3ENVELOPE 1,1,0,0,0,0,0,0,56,0,-28,-8,112,0ENVELOPE 2,1,0,0,0,0,0,0,28,0,-14,-4,56,0ENVELOPE 3,1,0,0,0,0,0,0,28,0,-14,-4,56,0ENVELOPE 4,1,0,0,0,0,0,0,28,0,-14,-4,56,0REPEAT T$ = "" REPEAT READ R$ : IF R$="" OFF : REPEAT WAIT 10 : UNTIL FALSE T$ += R$ : IF RIGHT$(T$) = "\" T$ = LEFT$(T$) UNTIL RIGHT$(R$) <> "\" acc%() = scale%() clef% = 48 : voice% = 1 p%() = 0 : q%() = 0 play% = FALSE WHILE T$<>"" I% = 1 : WHILE INSTR("0123456789",MID$(T$,I%,1)) I% += 1 : ENDWHILE IF I% > 1 dur% = VALLEFT$(T$,I%-1) : T$ = MID$(T$,I%) C$ = LEFT$(T$,1) : T$=MID$(T$,2) CASE C$ OF  WHEN "[": PRINT T$ :T$ = ""  WHEN ";": T$ = ""   WHEN " ":   WHEN "P": T$ = MID$(T$,2)   WHEN "T": acc%() = scale%() : clef% = 48   WHEN "S": acc%() = scale%() : clef% = 0   WHEN "V": voice% = ASC(T$) - &30 : T$=MID$(T$,2)    IF voice%=4 voice%=0   WHEN "W": wave% = VAL(T$) : T$ = MID$(T$,2)    WHILE ADVAL(-5-voice%)<8 WAIT 0:ENDWHILE    IF wave% = 0 vol%(voice%) = 1    IF INKEY$(-256) = "W" THEN     PROC_voice(voice%, wave%)    ELSE     OSCLI "voice " + STR$voice% + "," + STR$(wave%)    ENDIF   WHEN "K": key% = ASC(T$) - &30 : T$=MID$(T$,2)    scale%() = 0    IF key% THEN     key$ = LEFT$(T$,1) : T$=MID$(T$,2)     CASE key$ OF      WHEN "#": key& = sharp&(key%)      WHEN "b","&": key& = flat&(key%)     ENDCASE     FOR I% = 0 TO 6      IF key& AND (2^I%) scale%(I%) = -4 : IF key& AND &80 scale%(I%) = +4     NEXT    ENDIF    acc%() = scale%()    SOUND 1,-15,0,4   OTHERWISE    Note% = INSTR("ABCDEFG$",C$)-1    IF Note% < 0 ERROR 100, "Unrecognised command "+C$    octave% = 0    staccato = 0    REPEAT     ok% = FALSE     CASE LEFT$(T$,1) OF      WHEN "#": acc%(Note%) = 4 : T$=MID$(T$,2) : ok% = TRUE      WHEN "%": acc%(Note%) = 0 : T$=MID$(T$,2) : ok% = TRUE      WHEN "&","b": acc%(Note%) =-4 : T$=MID$(T$,2) : ok% = TRUE      WHEN "+": octave% += 48  : T$=MID$(T$,2) : ok% = TRUE      WHEN "-": octave% -= 48  : T$=MID$(T$,2) : ok% = TRUE      WHEN ",": staccato = 1/2 : T$=MID$(T$,2) : ok% = TRUE      WHEN "'": staccato = 1/8 : T$=MID$(T$,2) : ok% = TRUE      WHEN """": staccato = 1/4 : T$=MID$(T$,2) : ok% = TRUE     ENDCASE    UNTIL NOT ok%    tim% = dur% DIV 3 * tempo%    IF LEFT$(T$,1)="." tim% = dur% DIV 3 * tempo% * 3/2 : T$=MID$(T$,2)    IF LEFT$(T$,1)=":" tim% = dur% DIV 3 * tempo% * 2/3 : T$=MID$(T$,2)    pitch% = cmajor&(Note%) + acc%(Note%) + clef% + octave%    IF Note% = 7 pitch% = 0    WHILE pitch% < 0 pitch% += 48 : ENDWHILE    WHILE pitch% > 255 : pitch% -= 48 : ENDWHILE    IF tim% < 0 ERROR 100, "Duration out of range: "+STR$tim%    gap% = INT(tim% * staccato) + 0.5    IF voice% < 4 THEN     IF gap% THEN tim% -= gap%     REPEAT      IF tim% < 254 l% = tim% ELSE l% = 254      snd{(voice%,p%(voice%))}.a& = vol%(voice%)      snd{(voice%,p%(voice%))}.p& = pitch%      snd{(voice%,p%(voice%))}.d& = l%      p%(voice%) += 1      tim% -= l%     UNTIL tim% = 0     IF gap% THEN      snd{(voice%,p%(voice%))}.a& = vol%(voice%)      snd{(voice%,p%(voice%))}.p& = 0      snd{(voice%,p%(voice%))}.d& = gap%      p%(voice%) += 1     ENDIF    ENDIF    play% = TRUE  ENDCASE ENDWHILE IF play% THEN  SOUND &300,0,0,0 : SOUND &301,0,0,0 : SOUND &302,0,0,0 : SOUND &303,0,0,0  WHILE p%(0)<>q%(0) OR p%(1)<>q%(1) OR p%(2)<>q%(2) OR p%(3)<>q%(3)   stall% = TRUE   FOR v% = 0 TO 3    IF q%(v%) < p%(v%) IF ADVAL(-5-v%) THEN     stall% = FALSE     SOUND v%,snd{(v%,q%(v%))}.a&,snd{(v%,q%(v%))}.p&,snd{(v%,q%(v%))}.d&     q%(v%) += 1    ENDIF   NEXT v%   IF stall% WAIT 0  ENDWHILE ENDIFUNTIL FALSEENDDATA [  THE SUSSEX CAROL - Traditional English Carol.DATA [ Transcribed for Z80 Music by R.J.Stickley 1983.DATA [DATA [ 1. On Christmas night all Christians singDATA [    To hear the news the angels bring       (repeat)DATA "[    News of great joy, news of great mirth"DATA [    News of our merciful King's birth.DATA [DATA K1#DATA V1W2V2W8V3W8V4W7DATA PADATA TV224D+'DATA TV2D+G+D+'C+G+D+' SV348G.C+. V496G-.DATA PBDATA TV124$$$$$D+ V224B'A'G'AD+F' SV348B.A. V496G-.DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348D.E. V496G-.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348D.C. V496G-.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348B-.C. V496G-.DATA TV148B24A48G24D+ V224D+C+B'C+BA' SV348D.E. V496G-.DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348F.A. V4G-.A.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348B.A. V4D.C.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348G.A. V4B-.C.DATA TV148B24A48G. V224D+FD'BGD' SV348F.D. V4D.G-.DATA PCDATA TV148A.A24G V224AFDF+AF SV348F.A. V496D.DATA TV124ABC+D+C+B V2E+AFD+BG SV348A.B. V4C.B-.DATA TV196A. V224E+AGF+D+A SV348C+A+ V496C.DATA TV148D+.E+.D+. V224G+D+GG+C+GG+BG V348D.C.B-. SV4B-.C.D.DATA TV148C+24BAGA V2G+C+GE+C+A SV396A. V448E.C.DATA TV196G. V224D+G+B'C+G+D+' SV348B.C+. V496G-.DATA [ 2. On Christmas night all Christians singDATA [    To hear the news the angels bring       (repeat)DATA "[    News of great joy, news of great mirth"DATA [    News of our merciful King's birth.DATA [DATA TV124$$$ V224B'A'G' SV348B. V448G-.DATA PD V1W6DATA TV124$$D+ V224AD+F' SV348A. V448G-.DATA V2W1V3W1V4W7DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348D.E. V496G-.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348D.C. V496G-.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348B-.C. V496G-.DATA TV148B24A48G24D+ V224D+C+B'C+BA' SV348D.E. V496G-.DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348F.A. V4G-.A.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348B.A. V4D.C.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348G.A. V4B-.C.DATA TV148B24A48G. V224D+FD'BGD' SV348F.D. V4D.G-.DATA PEDATA TV148A.A24G V248F.F24E V348D.D24D V448D.D+24D+DATA TV124ABC+D+C+B V2FGABAG V348D24D48D24E V448C24C48B-24CDATA TV196A. V2F. V348F.E. V4D.C.DATA TV148D+.E+.D+. V2G.E.G. V3D.C.B-. SV4B.36C+C48D.DATA TV148C+24BAGA V248G24G48E24G V348C24D48E24C SV448E24E48C24EDATA TV148G. V224D+G+D+'C+G+D+' SV348G.C+. V496G-.DATA [ 3. Then why should men on earth be so sadDATA [    Since our redeemer made us glad         (repeat)DATA [    When from our sin he set us freeDATA [    All for to gain our liberty.DATA [DATA TV124$$$ V224B'A'G' SV348B. V448G-.DATA PF V1W2DATA TV124$$D+ V224AD+F' SV348A. V448G-.DATA V2W5V3W8V4W7DATA TV148D+24B48C+24D+ V236GFGA V3B-D72C SV4$EDATA TV124BAG48A24F V236BC+24D+E+F+ SV372G36E+D+ V472DCDATA TV148G24GABC+ V236G+DF%+E+ V372D24CB-A- SV472B-CDATA TV148B24A48G24D+ V236D+C+BA V324B-CD72D SV4D36GADATA PGDATA TV148D+24B48C+24D+ V236GFGA V3B-D72C SV4$EDATA TV124BAG48A24F V236BC+24D+E+F+ SV372G36E+D+ V472DCDATA TV148G24GABC+ V236G+DF%+E+ V372D24CB-A- SV472B-CDATA TV148B24A48G. V236D+C+BA V324B-CD72D SV4D36GADATA PHDATA TV148A.A24G V236AD+F+E+ V372D36A-D SV472D36DDDATA TV124ABC+D+C+B V236AF72G V336FE72D SV4CBDATA TV196A. V236E+D+E+F+ V3EE72A SV436C+C+72CDATA TV148D+.E+.D+. V224G+F+E+36D+C+BG V372GED SV4B-CDDATA TV148C+24BAGA V236ABC+E+ V3CDEC SV4EECCDATA TV148G. V224D+G+D+'C+G+D+' SV348G.C+. V496G-.DATA [ 4. When sin departs before his graceDATA [    Then life and health come in its place  (repeat)DATA [    Angels and men with joy may singDATA [    All for to see the new born King.DATA [DATA TV124$$$ V224B'A'G' SV348B. V448G-.DATA PX V1W6DATA TV124$$D+ V224AD+F' SV348A. V448G-.DATA V2W8V3W8V4W7DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348D.E. V496G-.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348D.C. V496G-.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348B-.C. V496G-.DATA TV148B24A48G24D+ V224D+C+B'C+BA' SV348D.E. V496G-.DATA TV148D+24B48C+24D+ V2G'B'D+'G+'C+'G' SV348F.A. V4G-.A.DATA TV124BAG48A24F V2D+'B'F'E+'A'E' SV348B.A. V4D.C.DATA TV148G24GABC+ V2B'G'D'E+'A'E' SV348G.A. V4B-.C.DATA TV148B24A48G. V224D+FD'BGD' SV348F.D. V4D.G-.DATA TV148A.A24G V224AFDF+AF SV348F.A. V496D.DATA TV124ABC+D+C+B V2E+AFD+BG SV348A.B. V4C.B-.DATA TV196A. V224E+AGF+D+A SV348C+A+ V496C.DATA TV148D+.E+.D+. V224G+D+GG+C+GG+BG V348D.C.B-. SV4B-.C.D.DATA TV148C+24BAGA V2G+C+GE+C+A SV396A. V448E.C.DATA TV196G. V224D+G+B'C+G+D+' SV3B.C+. V496G-.DATA [ 5. All out of darkness we have lightDATA [    Which made the angels sing this night   (repeat)DATA [    "Glory to God and peace to menDATA [    Now and for evermore. Amen".DATA SV124$$$ TV224B'A'G' V348B. V448G-.DATA PY V1W6DATA SV124$$D+ TV224AD+F' V348A. V448G-.DATA V2W8V3W3V4W3DATA PJDATA SV148D+24B48C+24D+ TV2G'B'D+'G+'C+'G' V348D.E. V496G-.DATA SV124BAG48A24F TV2D+'B'F'E+'A'E' V348D.C. V496G-.DATA SV148G24GABC+ TV2B'G'D'E+'A'E' V348B-.C. V496G-.DATA SV148B24A48G24D+ TV224D+C+B'C+BA' V348D.E. V496G-.DATA SV148D+24B48C+24D+ TV2G'B'D+'G+'C+'G' V348F.A. V4G-.A.DATA SV124BAG48A24F TV2D+'B'F'E+'A'E' V348B.A. V4D.C.DATA SV148G24GABC+ TV2B'G'D'E+'A'E' V348G.A. V4B-.C.DATA SV148B24A48G. TV224D+FD'BGD' V348F.D. V4D.G-.DATA PK V3W0DATA TV136AD+F+E+ V2FGAB SV348A.A24G V448D.D.DATA TV172D+.36D+ V2AFGG SV324ABC+D+C+B V448C.B-.DATA TV136E+D+E+F+ V2EE72A SV396A. V4C.DATA PLDATA TV127G+F+E+D+.C+.B.G. V281GGG V354D.E.D. SV454B-.C.D.DATA PMDATA TV127A.B.C+.E+. V2G.E.G.C+. SV354C+27BAGA V454E.C.DATA TV1112G+.G+. V2B.B. SV3G.G. V4G-.G-.DATA "" 

« Last Edit: Dec 17th, 2017, 09:55am by Richard Russell » User IP Logged

Richard Russell
Administrator
ImageImageImageImageImage


member is offline

Avatar




Homepage PM


Posts: 803
xx Re: The Sussex Carol
« Reply #2 on: Dec 18th, 2017, 10:25pm »

I'm rather disappointed to have received no reaction to this (except a solitary 'like' on Facebook). Is it that bad? Or have the religious overtones inadvertently caused offence (I am an atheist but I can still enjoy the music and appreciate the skill that went into the transcription)?

Richard.
User IP Logged

michael
Full Member
ImageImageImage


member is offline

Avatar




PM


Posts: 157
xx Re: The Sussex Carol
« Reply #3 on: Dec 19th, 2017, 02:17am »

That is a very nice carol. Do you play an instrument like violin or piano or guitar? I doubt it would be as much to do with religion as it would do with the times. Times change. Although, it does bring back memories of programming my TRS-80 back in 1982.

Id say, it would be a matter of spirit (inner spirit) that drives a person to create such melodies.

Quote:
Imagination is more important than knowledge. For knowledge is limited to all we now know and understand, while imagination embraces the entire world, and all there will ever be to know and understand

: Einstein

The universe would have no meaning without awareness, and would not exist without those whom were there to witness its endless wonders. So what is likely or unlikely is irrelevant, for it is what one makes of experience that gives life meaning.

I wish you well Richard.

« Last Edit: Dec 19th, 2017, 02:21am by michael » User IP Logged

I like reinventing the wheel, but for now I will work on tools for D3D
Pages: 1  Notify Send Topic Print
« Previous Topic | Next Topic »

| |

This forum powered for FREE by Conforums ©
Terms of Service | Privacy Policy | Conforums Support | Parental Controls