
Recorder players are most likely to be familiar with Robin Walker 's A Book of Song and Dance ( both the edition published by Forsyth Brothers and a recording of the collection have been reviewed in The Recorder Magazine ) pieces from which have been included in grade exam syllabuses . This CD provides an opportunity to hear two more of Walker 's recorder pieces together with a selection of other instrumental works composed during the last twenty years . Mr Gilbert dines at the Modern Hindu Hotel for descant recorder and piano was composed in 1994 to celebrate composer Anthony Gilbert 's 60th birthday . Lasting a little under three minutes and certainly an occasional piece , it is nevertheless a significant work , exploring textures and sonorities found also in Rite in A Book of Song and Dance composed at around the same time . His Master 's Voice for sopranino recorder and piano was written in 2001 for Walker 's composition teacher David Lumsdain on his 70th birthday . It proceeds in alternate calm and energetic sections that achieve further contrast by setting the recorder very effectively against the piano 's higher and lower registers . This and the above are two recorder works striking in their originality that leave you eager to hear more of walker 's work for the instrument . His years as a chorister in York Minster under the direction of Francis Jackson clearly gave Walker a strong sense of organ sonorities that is very evident in two impressive works for the instrument , Dances with Chant and Chorales and Invention . The earliest composition on the disc is Dance/Still for the unusual ensemble of flute , clarinet , violin , cello , guitar and percussion ( two players ) written in 1982 . Here , the influence on Walker of his study-visits to India is particularly evident in the rhythmic freedom and expressiveness . The piano piece At the Grave of William Baines was written for the centenary of the Yorkshire composer ( 1899-1922 ) . Lasting nearly fifteen minutes , it captures something of the spirit of Baines ' own works for piano , but also reflects Walker 's own response to the instrument . In total contrast is the work for pianola , Halifax . The composer describes it as a mechanical fantasy , and as the piece progresses , an almost musical box-like quality takes over from and contrasts with the heavier almost mill-like sounds of the opening . The most personal work on the disc is the short , single movement string quartet , I Thirst , from 1994 . Walker reflects on one of Christ 's Seven Last Words in a work of extraordinary atmosphere , beginning and punctuated with viola solos and making use of chords in quiet harmonics for the entire quartet . The performances by all involved are impressive . Walker 's music engages the performer ( and the listener ) and is clearly born out of inspiration rather than formulation . This is something in which Walker believes passionately and about which he has written in his contribution in the symposium Reviving the Muse , ( edited by Peter Davison and published by Claridge Press ) . A disc revealing a very original musical personality who composes for the recorder with the same creativity he brings to all his instrumental works - Andrew Mayes Review by Roger Carpenter in The British Music Society In an age when so much - too much - new music is hardly more than soulless note-spinning striving for effect , Robin Walker stands apart , a classicist at heart , who writes from the heart in a wholly contemporary idiom , at once distinctive and attractive ; in short , he is that modern rara avis , a composer whose music leaves you wanting to hear more . This impeccably produced , performed and recorded disc presents a conspectus of his developing work over two decades , ever subject to experiment and expansion into new fields , ranging from Dance/Still , the chamber piece which first brought him to public notice , to the neatly titled His Master 's Voice , a 70th birthday tribute to his composition teacher , David Lumsdaine . One could say that Walker is Robert Simpson 's natural successor in his command of large organic structure juxtaposing vitality with stasis in the true sense of both words . Like Roussel , following two study visits to India he has drawn inspiration , particularly rhythmically , from the culture of that continent , and overall one senses a French provenance ( or as the composer himself puts it , a precession ) , matching the timeless strength of Varèse , Messiaen and , to my ears particularly , Koechlin . Remarkably Robin himself is not familiar with Koechlin , yet he aspires to the same fusion of energy and stillness ; listen to the opening of the second part of Dance/Still - for a moment , it could almost be from Le livre de la jongle . This comes across again awesomely in the organ work , Dances with Chant and Chorales , filtered through the prism of childhood recollection as a York Minster chorister of the grandeur of the Minster organ 's Full Swell , and equally in the string quartet , I Thirst , with its clouds of natural harmonics . A further organ piece , Invention , takes as its starting point a very different French idiom , that of the virtuoso tradition of Dupré et al , not to mention Walker 's first and much revered teacher at the Minster , Francis Jackson , whilst Halifax , written by contrast unusually and most effectively for the pianola , reveals an unexpected vein of Yorkshire humour beneath its celebration of a native heritage . Living as he now does just across the Pennines in Lancashire , it is no surprise that Walker has responded to another more recent virtuoso tradition , that established by the Manchester-based recorder player , John Turner , for whom he has written ten pieces ; two of these , stunningly played , are included on this CD . Readers of British Music volume 21 may recall Robin 's account of how he grew up on the very road in York in which William Baines had lived and died at the age of 23 some thirty-odd years before . The spiritual affinity between these two composers of different eras goes far deeper than that simple coincidence , and the extended piano work , At the Grave of William Baines , is a direct response to a pilgrimage made to the grave on the 100th anniversary of Baines 's birth . There is no superficial homage here replete with quotations - this is pure Robin Walker , albeit infused throughout with Baines 's spirit , and the emotion is intense , filled with frustration , and ultimately resignation , at the waste of creative instincts thwarted by ill health . It is played magnificently by Peter Lawson . David Fanning calls Walker 's half-hour symphonic poem The Stone Maker " one of the outstanding achievements in British music of the 1990s " , and , objectively setting aside my own Bainesian associations , I cannot but think that the same applies to this piano work , at least as significant in the context of 1999 as was the impact of Baines 's own Paradise Gardens exactly eighty years previously . Where next ? There are hopes of a recording of Walker 's 40-part madrigal , recently broadcast by the Tallis Scholars on BBC Radio 3 , and meanwhile the world of opera beckons . Roger Carpenter This review was written by Roger Carpenter for the September 2003 issue of The British Music Society , and can be found on-line at http://www.musicweb.uk.net/BMS/index.htm The review can also be found on-line at music web 