Hello! I’m a Netherlands-based pianist and composer with a deep appreciation for jazz and classical music. After graduating from conservatory, I embraced every musical opportunity that came my way. I spent years playing countless gigs, backing jazz singers, composing for string quartets and big bands, teaching piano, and producing music for online content.
A few years before the global pandemic, I decided to switch gears and pursue a professional career in a different field. Music, once the core of my existence, became a cherished hobby. The demands of my new career and the arrival of my two wonderful children shifted my focus away from the piano.
That focus has now returned. I’ve reopened this creative outlet and am diving back into the world of music. Join me as I explore new compositions, record them late in the evening, and share the stories behind my music.
How I approach music
At the moment I’m writing and recording the music that keeps pulling me back to the piano: original pieces, jazz transcriptions, classical works, small experiments with accordion and strings, and the occasional bit of piano tinkering.
In my music, I take an academic approach, challenging myself to always incorporate something musically interesting. It should please the ear while offering something for the mind, if you feel like diving in. At times, my compositions lean more toward classical music, at other times toward jazz, and occasionally lands somewhere in between. Join me on my music creating journey, as I capture and share it here.
Subscribe!
And stay updated on my latest activities
Many Thanks!
var rm_pre_data = {"ajax_url":"https://florislamers.com/wp-admin/admin-ajax.php", "rm_nonce_field":"7a28323c16"};jQuery.fn.bindFirst = function(name, fn) {
// bind as you normally would
// don't want to miss out on any jQuery magic
this.on(name, fn);
var events = this.data('events') || jQuery._data(this[0], 'events');
var handlers = events[name];
// take out the handler we just inserted from the end
var handler = handlers.splice(handlers.length - 1)[0];
// move it at the beginning
handlers.splice(0, 0, handler);
};
//Rainmaker
var Rainmaker = function() {}
Rainmaker.prototype = {
init : function(form){
// var that = form;
if(jQuery(form).closest('.rainmaker_form').length < 1) return;
if(jQuery(form).closest('.rainmaker_form').hasClass('rm_init_done') ) return;
if(jQuery(form).find('.rm_required_field, .ig_form_required_field').length < 1){
jQuery(form).append('');
}
jQuery(form).closest('.rainmaker_form').addClass(jQuery(form).closest('.rainmaker_form').data('type') || '');
jQuery(form).bindFirst('submit', function(e){
window.rainmaker.addLead(e, jQuery(e.target));
}); // submit Event
jQuery(form).closest('.rainmaker_form').addClass('rm_init_done');
},
addLead : function(e, form, icg_msg){
var form = form || undefined;
if(typeof(form) !== 'undefined'){
if(jQuery(form).closest('.rainmaker_form').length 0;
if(!jQuery(fm_parent).hasClass('rm_custom') || (!jQuery(form).attr('action') && !mc4wpform) ){
e.preventDefault();
}
if(jQuery(form).find('.rm_required_field').val() || jQuery(form).find('.ig_form_required_field').val()){
jQuery(fm_parent).find('.rm-loader').hide();
form.slideUp("slow");
jQuery(fm_parent).find('div.rm_form_message').show();
return;
}
var formData = {};
var formData = window.rainmaker.prepareFormData(e, form, icg_msg, formData);
action = rm_pre_data.ajax_url + '?action=rm_rainmaker_add_lead';
jQuery(form).trigger( 'add_lead.rm', [formData] );
jQuery.ajax({
type: 'POST',
url: action,
data: formData,
dataType: 'json',
success: function(response){
if(response && typeof response.error !== 'undefined' && response.error !== ""){
jQuery(fm_parent).find('.rm-loader').hide();
jQuery(fm_parent).find('div.rm_form_error_message').text(response.error).show();
jQuery(window).trigger('error.rm', [form, response]);
} else if(response && typeof response.success !== 'undefined'){
jQuery(form)[0].reset();
jQuery(form).trigger('success.rm', [form, response]);
jQuery(fm_parent).find('.rm-loader').hide();
//TODO :: Later Move this in success callback
form_message = jQuery(fm_parent).next('div.rm_form_message').html();
if( typeof form_message !== 'undefined' && form_message.trim() !== ''){
jQuery(fm_parent).slideUp("slow");
jQuery(fm_parent).next('div.rm_form_message').show();
// jQuery(fm_parent).next().next('div.rm_form_error_message').hide();
}
//TODO :: Later Move this in success callback
var redirection_url = response.redirection_url || '';
redirection_url = redirection_url.trim();
if (typeof(redirection_url) === 'string' && redirection_url != '') {
if (!/^https?:\/\//i.test(redirection_url) ) {
redirection_url = "http://"+redirection_url;
}
setTimeout(function(){
window.location.href = redirection_url;
}, 200);
}
}else{
jQuery(fm_parent).find('.rm-loader').hide();
}
},
error: function(err){
jQuery(fm_parent).find('.rm-loader').hide();
console.log(err);
},
});
}
},
prepareFormData: function (e, form, icg_msg, formData){
jQuery.each((jQuery(form).serializeArray() || {}), function(i, field){
formData['rmfpx_'+ field.name] = field.value;
});
formData['rmfpx_added'] = true;
formData['rmfpx_rm_nonce_field'] = rm_pre_data.rm_nonce_field;
formData['rmfpx_rm_form-id'] = jQuery(form.closest('.rainmaker_form')).data('form-id');
// Send Icegram Data To Rainmaker
if(typeof icegram !== 'undefined'){
formData['rmfpx_ig_mode'] = icegram.mode;
formData['rmfpx_ig_remote_url'] = window.location.href;
if(typeof icg_msg === 'undefined'){
var msg_id = (jQuery(form.closest('[id^=icegram_message_]') || {}).attr('id') || '').split('_').pop() || 0 ;
icg_msg = icegram.get_message_by_id(msg_id) || {};
}
if(typeof icg_msg.data !== 'undefined'){
formData['rmfpx_ig_message_id'] = icg_msg.data.id;
formData['rmfpx_ig_campaign_id'] = icg_msg.data.campaign_id;
}
}
return formData;
},
};
if(typeof window.rainmaker === 'undefined'){
window.rainmaker = new Rainmaker();
}
jQuery(document).ready(function(){
jQuery('.rainmaker_form form').each(function(i, v){
window.rainmaker.init(v);
});
});
// Start : For Icegram Compatibility
jQuery( window ).on( "init.icegram", function(e, ig) {
// Find and init all RM forms within Icegram messages/divs
if(typeof ig !== 'undefined' && typeof ig.messages !== 'undefined' ){
jQuery.each(ig.messages, function(i, msg){
var forms = jQuery(msg.el).find('.rainmaker_form form');
forms.each(function(i, form){
if(!jQuery(form).hasClass('rm_init_done')){
window.rainmaker.init(form);
jQuery(form).addClass('rm_init_done');
}
});
});
}
}); // init.icegram
//Handle CTA function(s) after successful submission of form
jQuery( window ).off('success.rm');
jQuery( window ).on('success.rm', function(e, form, response) {
if( typeof icegram !== 'undefined'){
var msg_id = ((jQuery(e.target).closest('[id^=icegram_message_]') || {}).attr('id') || '').split('_').pop() || 0 ;
var msg = icegram.get_message_by_id(msg_id) || undefined;
if(typeof msg !== 'undefined'){
//TODO:: test this for contact form.
// if(msg.data.cta === 'form_via_ajax' && msg.el.find('.rm_subscription').length > 0){
if(msg.data.cta === 'form_via_ajax' && msg.el.find('.rm_subscription, .rm_contact').length > 0){
// TODO::test this , causing duplicate messages
msg.el.trigger('form_success.ig_cta', [msg]);
} else if(msg.data.cta === 'form' || !msg.data.cta){
if(msg.data.use_form == undefined){
msg.data.response_text = '';
}
response_text = '