class Akismet_REST_API {
/**
* Register the REST API routes.
*/
public static function init() {
if ( ! function_exists( 'register_rest_route' ) ) {
// The REST API wasn't integrated into core until 4.4, and we support 4.0+ (for now).
return false;
}
register_rest_route(
'akismet/v1',
'/key',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_key' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_key' ),
'args' => array(
'key' => array(
'required' => true,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_key' ),
),
)
);
register_rest_route(
'akismet/v1',
'/settings/',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_settings' ),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_boolean_settings' ),
'args' => array(
'akismet_strictness' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, Akismet will automatically discard the worst spam automatically rather than putting it in the spam folder.', 'akismet' ),
),
'akismet_show_user_comments_approved' => array(
'required' => false,
'type' => 'boolean',
'description' => __( 'If true, show the number of approved comments beside each comment author in the comments list page.', 'akismet' ),
),
),
),
)
);
register_rest_route(
'akismet/v1',
'/stats',
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
'args' => array(
'interval' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_interval' ),
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'default' => 'all',
),
),
)
);
register_rest_route(
'akismet/v1',
'/stats/(?P[\w+])',
array(
'args' => array(
'interval' => array(
'description' => __( 'The time period for which to retrieve stats. Options: 60-days, 6-months, all', 'akismet' ),
'type' => 'string',
),
),
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'privileged_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_stats' ),
),
)
);
register_rest_route(
'akismet/v1',
'/alert',
array(
array(
'methods' => WP_REST_Server::READABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'get_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::EDITABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'set_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
array(
'methods' => WP_REST_Server::DELETABLE,
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
'callback' => array( 'Akismet_REST_API', 'delete_alert' ),
'args' => array(
'key' => array(
'required' => false,
'type' => 'string',
'sanitize_callback' => array( 'Akismet_REST_API', 'sanitize_key' ),
'description' => __( 'A 12-character Akismet API key. Available at akismet.com/get/', 'akismet' ),
),
),
),
)
);
register_rest_route(
'akismet/v1',
'/webhook',
array(
'methods' => WP_REST_Server::CREATABLE,
'callback' => array( 'Akismet_REST_API', 'receive_webhook' ),
'permission_callback' => array( 'Akismet_REST_API', 'remote_call_permission_callback' ),
)
);
}
/**
* Get the current Akismet API key.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_key( $request = null ) {
return rest_ensure_response( Akismet::get_api_key() );
}
/**
* Set the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be changed via the API.', 'akismet' ), array( 'status' => 409 ) ) );
}
$new_api_key = $request->get_param( 'key' );
if ( ! self::key_is_valid( $new_api_key ) ) {
return rest_ensure_response( new WP_Error( 'invalid_key', __( 'The value provided is not a valid and registered API key.', 'akismet' ), array( 'status' => 400 ) ) );
}
update_option( 'wordpress_api_key', $new_api_key );
return self::get_key();
}
/**
* Unset the API key, if possible.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_key( $request ) {
if ( defined( 'WPCOM_API_KEY' ) ) {
return rest_ensure_response( new WP_Error( 'hardcoded_key', __( 'This site\'s API key is hardcoded and cannot be deleted.', 'akismet' ), array( 'status' => 409 ) ) );
}
delete_option( 'wordpress_api_key' );
return rest_ensure_response( true );
}
/**
* Get the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_settings( $request = null ) {
return rest_ensure_response(
array(
'akismet_strictness' => ( get_option( 'akismet_strictness', '1' ) === '1' ),
'akismet_show_user_comments_approved' => ( get_option( 'akismet_show_user_comments_approved', '1' ) === '1' ),
)
);
}
/**
* Update the Akismet settings.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_boolean_settings( $request ) {
foreach ( array(
'akismet_strictness',
'akismet_show_user_comments_approved',
) as $setting_key ) {
$setting_value = $request->get_param( $setting_key );
if ( is_null( $setting_value ) ) {
// This setting was not specified.
continue;
}
// From 4.7+, WP core will ensure that these are always boolean
// values because they are registered with 'type' => 'boolean',
// but we need to do this ourselves for prior versions.
$setting_value = self::parse_boolean( $setting_value );
update_option( $setting_key, $setting_value ? '1' : '0' );
}
return self::get_settings();
}
/**
* Parse a numeric or string boolean value into a boolean.
*
* @param mixed $value The value to convert into a boolean.
* @return bool The converted value.
*/
public static function parse_boolean( $value ) {
switch ( $value ) {
case true:
case 'true':
case '1':
case 1:
return true;
case false:
case 'false':
case '0':
case 0:
return false;
default:
return (bool) $value;
}
}
/**
* Get the Akismet stats for a given time period.
*
* Possible `interval` values:
* - all
* - 60-days
* - 6-months
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_stats( $request ) {
$api_key = Akismet::get_api_key();
$interval = $request->get_param( 'interval' );
$stat_totals = array();
$request_args = array(
'blog' => get_option( 'home' ),
'key' => $api_key,
'from' => $interval,
);
$request_args = apply_filters( 'akismet_request_args', $request_args, 'get-stats' );
$response = Akismet::http_post( Akismet::build_query( $request_args ), 'get-stats' );
if ( ! empty( $response[1] ) ) {
$stat_totals[ $interval ] = json_decode( $response[1] );
}
return rest_ensure_response( $stat_totals );
}
/**
* Get the current alert code and message. Alert codes are used to notify the site owner
* if there's a problem, like a connection issue between their site and the Akismet API,
* invalid requests being sent, etc.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function get_alert( $request ) {
return rest_ensure_response(
array(
'code' => get_option( 'akismet_alert_code' ),
'message' => get_option( 'akismet_alert_msg' ),
)
);
}
/**
* Update the current alert code and message by triggering a call to the Akismet server.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function set_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
// Make a request so the most recent alert code and message are retrieved.
Akismet::verify_key( Akismet::get_api_key() );
return self::get_alert( $request );
}
/**
* Clear the current alert code and message.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function delete_alert( $request ) {
delete_option( 'akismet_alert_code' );
delete_option( 'akismet_alert_msg' );
return self::get_alert( $request );
}
private static function key_is_valid( $key ) {
$request_args = array(
'key' => $key,
'blog' => get_option( 'home' ),
);
$request_args = apply_filters( 'akismet_request_args', $request_args, 'verify-key' );
$response = Akismet::http_post( Akismet::build_query( $request_args ), 'verify-key' );
if ( $response[1] == 'valid' ) {
return true;
}
return false;
}
public static function privileged_permission_callback() {
return current_user_can( 'manage_options' );
}
/**
* For calls that Akismet.com makes to the site to clear outdated alert codes, use the API key for authorization.
*/
public static function remote_call_permission_callback( $request ) {
$local_key = Akismet::get_api_key();
return $local_key && ( strtolower( $request->get_param( 'key' ) ) === strtolower( $local_key ) );
}
public static function sanitize_interval( $interval, $request, $param ) {
$interval = trim( $interval );
$valid_intervals = array( '60-days', '6-months', 'all' );
if ( ! in_array( $interval, $valid_intervals ) ) {
$interval = 'all';
}
return $interval;
}
public static function sanitize_key( $key, $request, $param ) {
return trim( $key );
}
/**
* Process a webhook request from the Akismet servers.
*
* @param WP_REST_Request $request
* @return WP_Error|WP_REST_Response
*/
public static function receive_webhook( $request ) {
Akismet::log( array( 'Webhook request received', $request->get_body() ) );
/**
* The request body should look like this:
* array(
* 'key' => '1234567890abcd',
* 'endpoint' => '[comment-check|submit-ham|submit-spam]',
* 'comments' => array(
* array(
* 'guid' => '[...]',
* 'result' => '[true|false]',
* 'comment_author' => '[...]',
* [...]
* ),
* array(
* 'guid' => '[...]',
* [...],
* ),
* [...]
* )
* )
*
* Multiple comments can be included in each request, and the only truly required
* field for each is the guid, although it would be friendly to include also
* comment_post_ID, comment_parent, and comment_author_email, if possible to make
* searching easier.
*/
// The response will include statuses for the result of each comment that was supplied.
$response = array(
'comments' => array(),
);
$endpoint = $request->get_param( 'endpoint' );
switch ( $endpoint ) {
case 'comment-check':
$webhook_comments = $request->get_param( 'comments' );
if ( ! is_array( $webhook_comments ) ) {
return rest_ensure_response( new WP_Error( 'malformed_request', __( 'The \'comments\' parameter must be an array.', 'akismet' ), array( 'status' => 400 ) ) );
}
foreach ( $webhook_comments as $webhook_comment ) {
$guid = $webhook_comment['guid'];
if ( ! $guid ) {
// Without the GUID, we can't be sure that we're matching the right comment.
// We'll make it a rule that any comment without a GUID is ignored intentionally.
continue;
}
// Search on the fields that are indexed in the comments table, plus the GUID.
// The GUID is the only thing we really need to search on, but comment_meta
// is not indexed in a useful way if there are many many comments. This
// should help narrow it down first.
$queryable_fields = array(
'comment_post_ID' => 'post_id',
'comment_parent' => 'parent',
'comment_author_email' => 'author_email',
);
$query_args = array();
$query_args['status'] = 'any';
$query_args['meta_key'] = 'akismet_guid';
$query_args['meta_value'] = $guid;
foreach ( $queryable_fields as $queryable_field => $wp_comment_query_field ) {
if ( isset( $webhook_comment[ $queryable_field ] ) ) {
$query_args[ $wp_comment_query_field ] = $webhook_comment[ $queryable_field ];
}
}
$comments_query = new WP_Comment_Query( $query_args );
$comments = $comments_query->comments;
if ( ! $comments ) {
// Unexpected, although the comment could have been deleted since being submitted.
Akismet::log( 'Webhook failed: no matching comment found.' );
$response['comments'][ $guid ] = array(
'status' => 'error',
'message' => __( 'Could not find matching comment.', 'akismet' ),
);
continue;
} if ( count( $comments ) > 1 ) {
// Two comments shouldn't be able to match the same GUID.
Akismet::log( 'Webhook failed: multiple matching comments found.', $comments );
$response['comments'][ $guid ] = array(
'status' => 'error',
'message' => __( 'Multiple comments matched request.', 'akismet' ),
);
continue;
} else {
// We have one single match, as hoped for.
Akismet::log( 'Found matching comment.', $comments );
$current_status = wp_get_comment_status( $comments[0] );
$result = $webhook_comment['result'];
if ( 'true' == $result ) {
Akismet::log( 'Comment should be spam' );
// The comment should be classified as spam.
if ( 'spam' != $current_status ) {
// The comment is not classified as spam. If Akismet was the one to act on it, move it to spam.
if ( Akismet::last_comment_status_change_came_from_akismet( $comments[0]->comment_ID ) ) {
Akismet::log( 'Comment is not spam; marking as spam.' );
wp_spam_comment( $comments[0] );
Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-spam' );
} else {
Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' );
Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-spam-noaction' );
}
}
} elseif ( 'false' == $result ) {
Akismet::log( 'Comment should be ham' );
// The comment should be classified as ham.
if ( 'spam' == $current_status ) {
Akismet::log( 'Comment is spam.' );
// The comment is classified as spam. If Akismet was the one to label it as spam, unspam it.
if ( Akismet::last_comment_status_change_came_from_akismet( $comments[0]->comment_ID ) ) {
Akismet::log( 'Akismet marked it as spam; unspamming.' );
wp_unspam_comment( $comments[0] );
akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-ham' );
} else {
Akismet::log( 'Comment is not spam, but it has already been manually handled by some other process.' );
Akismet::update_comment_history( $comments[0]->comment_ID, '', 'webhook-ham-noaction' );
}
}
}
$response['comments'][ $guid ] = array( 'status' => 'success' );
}
}
break;
case 'submit-ham':
case 'submit-spam':
// Nothing to do for submit-ham or submit-spam.
break;
default:
// Unsupported endpoint.
break;
}
/**
* Allow plugins to do things with a successfully processed webhook request, like logging.
*
* @since 5.3.2
*
* @param WP_REST_Request $request The REST request object.
*/
do_action( 'akismet_webhook_received', $request );
Akismet::log( 'Done processing webhook.' );
return rest_ensure_response( $response );
}
}
Armenian Mega Store – Specifically organized for You
Comments Off on Regreso Al Amor. To Astor Piazzolla
Since the Cadence Ensemble’s premiere performance in 2004, the group has quickly become one of the leading and most popular music groups of Armenia. Initially performing the works of Argentine composer, Astor Piazzolla the ensemble has expanded its repertoire to incorporate contemporary European and Armenian composers.
On 10 June 2016 the Cadence Ensemble has performed a program dedicated to the 95th jubilee of Astor Piazzolla.
In concert participated the Festival Tango String Orchestra, concertmaster – Gayane Abrahamyan
The program included works by Astor Piazzolla, Walter Rios, Richard Galliano, Ángel G.V.Arroyo, Alberto A.M. Herrera, Remo Anzovino.
The concert took place at Aram Khachaturian Hall, on June 10, 2016.
TRAVELER – ARMENIA has been conceived by late Ruben Mangasaryan, famous photojournalist in Armenia and abroad.
His goal was to create an Armenian edition of the world famous National Geographic, TRAVELER.
That was a special agreement with the TRAVELER as the leading tourism publication. It was a unique opportunity for Armenian traveler businesses and media to be presented under the label of National Geographic. Anticipated outcomes were obvious for every interested party in Armenia: photojournalism in first place and the traveler journalism, in general.
Ruben was able to team up with journalists and photographers in Armenia, dedicated to his vision in presenting to the world the Armenian landscapes, unspoiled nature and puzzled lifestyle of cities and people living in an ancient country which has gained its independence a few years ago.
Armenian Mega Store was honored to distribute the in US.
In 2009 Ruben Mangasaryan tragically died from a heart attack. After his passing, his close friends with the staff of the magazine tried to publish several issues without success.
After eight years Armenian Mega Store decided to release and put on sale last remaining copies. This is a unique opportunity for buyers to obtain these three valuable issues that contains goergeous photography and interesting stories about Armenia and surrounding landscapes…
Comments Off on Armenian Folk Epic: Davit of Sassoun
This age old Armenian folk epic Davit of Sassoun (David of Sassoun) has been handed down from generation to generation in the oral tradition, recited by successive bards and minstrels, until being written onto paper by scholars of lore in the 19th century.
Nairi Zarian, the renowned 20th century Armenian poet, in 1966 rendered it into simple prose for the enjoyment of children and adults alike.
Since the Cadence Ensemble’s premiere performance in 2004, the group has quickly become one of the leading and most popular music groups of Armenia. Initially performing the works of Argentine composer, Astor Piazzolla the ensemble has expanded its repertoire to incorporate contemporary European and Armenian composers. Under the leadership of pianist, Armen Babakhanian, the ensemble have enjoyed international success. Most recently the ensemble have given concerts in Paris, London and Brussels.
Cadence Ensemble:
ARMEN BABAKHANIAN – Piano • HAKOB JAGATSPANYAN – Guitar
The CADENCE ENSEMBLE performs the music from the composer who influenced the founding of the group – the Argentine Astor Piazzolla – in an uplifting and exquisitely performed collection of tangos and fantasies with works from other composers arranged by the group’s leader, Armen Babakhanian.
Cadence Ensemble:
ARMEN BABAKHANIAN – Piano • HAKOB JAGATSPANYAN – Guitar
CADENCE ENSEMBLE was formed in February 2004 initially to perform the works of Argentine composer Astor Piazzolla (1921-1992). The Ensemble’s premiere concert took place in April 2004, followed by several others that attracted the attention of fans and promoters. Soon the ensemble expanded its repertoire to include masterpieces of classical and contemporary European, American, Russian and Armenian composers- while maintaining an affinity for Piazzolla. The first international tour of the ensemble took place in April 2005: Cadence performed in the Teatro Colon and Teatro Cervantes, Buenos Aires (Argentina). In July 2005 the ensemble and its soloists gave concerts and master-classes within the frames of the Pazaislis Festival in Kaunas and Vilnius (Lithuania). In December 2005 the ensemble participated in international music festivals in Tehran (Iran) and Tbilisi (Georgia). In May 2006 Cadence gave concerts in Abu Dhabi, Sharjah, Dubai (UAE), and in September 2006 – in the Cairo and Alexandria Opera Houses (Egypt). In 2007 the ensemble gave concerts in Beirut, Byblos (Lebanon), Paris (France), London (UK) Brussels (Belgium), Shenyang and Beijing (China).
In 2008 the ensemble performed concerts in Montreal (Canada), Nicosia (Cyprus) and Beirut (Lebanon). In October 2007 the ensemble recorded two COs at the Abbey Road Studios of -the EMI in London. The recording was done by the Richmond Studios (UK). Both COs produced by Signum Classics (UK) in 2008 have had wide international distribution. The CD “Expressia: Armenian Metamorphoses” received the Luxemburg “Pizzicato” Music Magazine’s Supersonic Award in November 2008. In May-June 2009 the ensemble gave two performances at the Pasadena Auditorium (Los Angeles, USA) and London (UK). In October 2009 it gave a concert at the Parnassus Hall in Athens and took part in the Dimitria Festival, Thessaloniki (Greece).
In October 2010 thanks to efforts of Cadence Music Centre and Ministry of Culture of Armenia was established Yerevan International Tango Festival launched with the concert of Cadence Ensemble and outstanding French composer and accordionist Richard Galliano. In 2010 Cadence gave a concert in Riyadh (Saudi Arabia) and closed the “Armenia: Up-Close” Cultural Year in Slovenia with concert at the Ljubljana Philharmonic Hall. In April 2011 within the frames of Yerevan International Tango Festival the ensemble gave performance with bandoneonist and composer Marcelo Nisinmann. ln 2011 the ensemble participated in the”Days of Armenian Culture in Ukraine” with two performances at the Kiev and Odessa Opera Houses.
On 19 August 2017 the Cadence Ensemble performs at prestigious Buenos Aires International Tango Festival. Maestro Walter Rios, singers Mariel Dupetit and Valeria Cherekian will accompany the Cadence that outstanding day!
[popup url=”http://armenianmegastore.com/triunfal-tracks/” height=”480″ width=”680″ scrollbars=”yes” alt=”popup”]Click Link Here[/popup]
Comments Off on Awards of Armenia/Lists of Awardees, 1918 – 1939
AWARDS OF ARMENIA, from 1918 – 1939.
Authors: Amatun Virabyan and Nika Babayan
The boook has insert: List of Awardees.
History of the first Armenian state awards, narrated in this book, is the history of Armenia from 1918 to the beginning of the Second World War in miniature.
Images of some awards and their varieties are published for the first time and will certainly be a real discovery for specialists of phaleristics. Still, it is quite obvious that there are several awards of the above mentioned period, about which the authors have very little or no information at all. Most supposedly, after the publication of this book, the authors have to republish it urgently, at least we want to believe and hope for it.
The book is written and printed in three languages: Armenian, Russian and English. The book is addressed to specialists in faleristics, collectors and all those who are interested in history of Armenia.
The authors of the book express. their deep gratitude to the directors of the State Museum of History of Armenia and Yerevan History Museum for provided materials and opportunity to work with the exhibits and in the storages of the museums…
…The present book is the first attempt to give specialists, collectors, people who are interested in the Armenian history a general idea about the awards of Armenia and the Armenian Apostolic Church.
During 2011 two more books on awards of the Soviet Armenia from 1920 to 1991 and Republic of Armenia from 1991 to 2011 will be published successively…
Souren Baronian is a multi-instrumentalist reed player and percussionist, whose main wind instruments are the G-clarinet and Saxophone as well as many traditional flutes, including the duduk and kaval. He is also a highly sought after music teacher who has taught the dumbek, tambourine/riq and Reeds at music camps and privately. Long well known among the cognoscenti in the Middle Eastern music, jazz and folk dance communities, Souren has collaborated, performed and/or recorded with countless renowned musicians, including, to mention only a small handful: Phil Woods, Joe Beck, Paul Motian, Don Cherry, Arnie Lawrence, Steve Gadd, Armen Donelian, Paul Winter and Carla Bley on the jazz side; Josh Grobam and Paul Simon on the pop side; and the giants Oudi Hrant, Mustafa Kandirali, Kadri Sencalar, Ahmet Yatman, Omar Faruk Tekbilek and Tasos Halkias on the “Mediterranean” side of the equation (i.e. in Armenian, Turkish, Greek, Balkan and Middle Eastern styles).
Souren has been deeply rooted in both Middle Eastern/Balkan idioms and jazz since his early teens, and may have been the first to create a “fusion” of two genres in the late 1950s, long before, “world music” swept the globe. His subsequent work with Taksim from the mid 1970s to the present represents the most sophisticated, compelling, authentic synthesis of these two musical universes to date. Souren continues to travel much of the year to play and teach on several continents in a wide range of settings. As is obvious from this masterful recording, he is going stronger than ever.
Mal Stein is a drummer/percussionist/composer who has played with a wide array of musicians and bands in many genres (jazz, folk, rock, R&B, “world music,” Balkan, Middle Eastern, etc.) and has written music used in a broad range of settings, including for the Joffrey Ballet and for a number of dancers working in the Modem, Jazz and Middle Eastern idioms. The musical artists he has worked with include: Cyrille Aimee and The Surreal Band, Katerina Polemi, John Hodian & Bet Williams’ Epiphany Project, Marc Von Em, Mad Juana, Tom Kennedy and Arnie Lawrence.
Mal has also collaborated with Souren Baronian as the drummer for the groundbreaking Middle Eastern/Jazz “fusion” band Taksim for some 25 years.
(To reach Mal or to sign up on his e-mail list to receive notification about where he is playing: Maldrums@Aol.com).
This totally unique, soulful exploration draws from some of the world’s most sophisticated musical idioms to inspire, soothe and stimulate. Whether you are a musical connoisseur, yoga practitioner, meditator, dreamer or dancer, these sounds are for you.
A group of scientists are mysteriously kidnapped and shuttled away to an unknown civilization. Fear and anger are soon replaced by intrigue, excitement and privilege as they learn that the fate of the Earth is in their hands …
“The situation was finally clear. Now they understood the reason for the Dorils’ sudden interest in humans and were able to link this to a bizarre chain of perplexing, seemingly unrelated happenings in recent decades-the increased frequency of UFO sightings worldwide and the disappearance, not only of ships and airplanes over the Bermuda Triangle, but humans, too-and all without a trace.”
This prophetic novel, written over two decades ago, at a time when environmental issues were not recognized as they are now, exposes the threats facing human and planetary survival.
Author George Ter-Stepanian, a scientist highly respected for his advocacy of environmental protection, brings scientific and historical fact together with literary craft and a rich imagination to champion his unwavering belief that environmental salvation is indeed possible with concentrated human effort.
NAIRA KHACHATRYAN – Suite for Two Pianos: Music Sheets
Porgy and Bess by George Gershwin, Arranged for Two Pianos / Four Hands.
This publication is Naira Khachatryan’s adaptation of the famous tunes from Gershwin’s “Porgy and Bess” for two pianos.
Pianist
Associate professor
Yerevan Komitas State Conservatory
Winner of an International Competition in Italy, 2003
Born in Yerevan, studied at the Tchaikovsky school of music. In 1988 graduated from the Yerevan Komitas State Conservatory, class of piano, where she also completed post-graduate studies.
Performed extensively with chamber music ensembles and within the Rhapsody piano duet.
Co-authored the arrangement of works by Komitas for a piano duet (four hands) (Komitas publishers, Yerevan, 2001).
Transcribed a suite for two pianos from the themes of Porgy and Bess by George Gershwin (Nahapet Publishers, Yerevan, 2008).