Home »
Member Page
C. Andrew Hovan
An avid audiophile and music collector, Chris Hovan is a Cleveland-based writer / photographer / musician.
About Me
A native of Cleveland, Ohio, I have been active in the field of jazz since my days at the
Berklee College of Music in the mid-'80s. I have been lucky enough to be involved in several
arenas, including working as a dee-jay and in concert production, but my fondest memories
have been meeting some of the legendary masters of jazz and digging through crates to find
those sought-after LPs.
A freelance drummer , I play drum set and specialize in Afro-Cuban and Brazilian hand percussion. As a record
collector, my prized possessions are my VPI Scout, VPI 16.5 record cleaning machine and the thousands of vintage
sides on the shelves. I have been a contributor to the MusicHound album reference guides for jazz and swing and a
regular contributor to All About Jazz. My work has also been featured in Down Beat, Hot House, The New York
Times,
and in the jazz history textbook Jazz Styles by Mark C. Gridley. I also regularly pen liner notes and have done so for
a
variety of labels including Cellar Music Group, Chicken Coop, Criss Cross Jazz, Water Music, Sharp Nine, Mighty
Quinn, SteepleChase,
and Smoke Sessions.
I have been documenting the jazz scene in Cleveland and abroad with my camera for many years now and my
reviews
and photos are regularly featured at AAJ as well as Down Beat Magazine. In addition, I have traveled to Columbus,
Cincinnati, Dayton, Ann Arbor, Boston, Toronto, Detroit, New York City, Pittsburgh, etc. to cover jazz festivals and
performances.
C. Andrew Hovan is a member of the Jazz Journalists Association, a voting critic in the Down Beat Critics Poll, and
uses
Nikon digital cameras exclusively.
My
Articles
|
Year End Picks
|
Album Reviews
Merge with other member page
-->
My Jazz Story
I was first exposed to jazz back in high
school when spinning the radio dial. I
locked into this Sunday evening show
where I
first heard Pat Metheny's "Are You Going
With Me?" and Dexter Gordon's "Fried
Bananas". Having been raised on pop
music,
such as Chicago, The Beach Boys, and Burt
Bacharach, these new sounds were
nothing short of a revelation to my teenage
ears. It wasn't long before I was searching
out more and more of the new sounds I
was hearing every Sunday evening. I still
revel in my time spent searching for jazz
albums and my vinyl collection has been
an integral part of my life since this all
started back in the '80s. As a
photographer of jazz musicians, there is
something intoxicating about losing
yourself in the
moment while simultaneously looking to
capture the visage of a musician's spirit and
soul. Like the music itself, that moment
can be fleeting and can delude you.
Sometimes it's a struggle and sometimes it
comes easily. But when you capture it,
there's
nothing quite like being in that zone.
My Favorite Local Jazz Venues & Festivals
Use your mousepointer (or zoom in) to move the map.
Click a pin drop to identify a venue.
";
return [content, title];
}
function call_geocode(platform, ent) {
var ent_addr = ent.addr1 + ' ' + ent.city;
if (ent.state) ent_addr = ent_addr + ", " + ent.state;
if (ent.zip) ent_addr = ent_addr + ent.zip;
ent_addr = ent_addr + ', ' + ent.country_name;
if (ent_addr!='') {
contentAndTitleArray = renderContentAndTitle(ent);
var geocoder = platform.getSearchService();
geocoder.geocode({
q: ent_addr
}, (result) => {
// Add a marker for each location found
result.items.forEach((item) => {
$.ajax({
url: 'https://www.jazznearyou.com/functions/ajax-functions/upd_entity_latlng.php?id='+ent.id,
type: "POST",
data: {'lat': item.access[0].lat, 'lng': item.access[0].lng},
dataType : "json",
success: function (data, textStatus) {
$.each(data, function(i, val) {
if (i == 'errs' && val != '') {
// console.log("error: " + val);
} else {
// console.log(ent.id + " is updated");
}
})
}
});
var marker = new H.map.Marker(item.position, { icon: icon });
// marker.label = contentAndTitleArray[1];
marker.setData(contentAndTitleArray[0]);
map.addObject(marker);
marker.addEventListener('tap', function (evt) {
// map.setCenter(evt.target.a);
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getGeometry(), {
// read custom data
content: evt.target.getData()
});
// show info bubble
ui.addBubble(bubble);
}, false);
});
}, alert);
}
}
const platform = new H.service.Platform({ apikey: '22RaiAehJhmSQsR3jH-UZKETwDfDSEJzKMO_3w4g_Jg'});
const defaultLayers = platform.createDefaultLayers();
const map = new H.Map(document.getElementById('map-canvas'),
defaultLayers.vector.normal.map, {
center: { lat: 41.48, lng: -81.66 },
zoom: 10,
pixelRatio: window.devicePixelRatio || 1
});
window.addEventListener('resize', () => map.getViewPort().resize());
const behavior = new H.mapevents.Behavior(new H.mapevents.MapEvents(map));
const ui = H.ui.UI.createDefault(map, defaultLayers);
var icon = new H.map.Icon('red-dot.png');
// map.getBaseLayer().getProvider().getStyle().getConfig();
changeFeatureStyle(map);
if (entities.length>1) {
group = new H.map.Group();
}
for (var i=0; i < entities.length; i++) {
//console.log (entities[i]);
if (!(entities[i].latitude) || !(entities[i].longitude)) {
//console.log (entities[i]);
call_geocode(platform, entities[i]);
}
else {
contentAndTitleArray = renderContentAndTitle(entities[i]);
// use DB long/lat coords to create marker coords
var marker = new H.map.Marker({lat: parseFloat(entities[i].latitude), lng: parseFloat(entities[i].longitude)}, { icon: icon });
// add custom data to the marker
// marker.label = contentAndTitleArray[1];
marker.setData(contentAndTitleArray[0]);
map.addObject(marker);
marker.addEventListener('tap', function (evt) {
// map.setCenter(evt.target.a);
// event target is the marker itself, group is a parent event target
// for all objects that it contains
var bubble = new H.ui.InfoBubble(evt.target.getGeometry(), {
// read custom data
content: evt.target.getData()
});
// show info bubble
ui.addBubble(bubble);
}, false);
if (entities.length>1) {
group.addObjects([marker]);
}
}
if (entities.length>1) {
map.addObject(group);
map.getViewModel().setLookAtData({
bounds: group.getBoundingBox()
});
}
}