Merge branch 'master' of dev.sourcefabric.org:airtime
This commit is contained in:
commit
3727195c54
|
@ -100,6 +100,10 @@
|
|||
<actionMethod actionName="index"/>
|
||||
<actionMethod actionName="help"/>
|
||||
</controllerFile>
|
||||
<controllerFile controllerName="Recorder">
|
||||
<actionMethod actionName="index"/>
|
||||
<actionMethod actionName="getShowSchedule"/>
|
||||
</controllerFile>
|
||||
</controllersDirectory>
|
||||
<formsDirectory>
|
||||
<formFile formName="Login"/>
|
||||
|
@ -325,6 +329,12 @@
|
|||
<viewControllerScriptsDirectory forControllerName="Schedule">
|
||||
<viewScriptFile forActionName="cancelShow"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
<viewControllerScriptsDirectory forControllerName="Recorder">
|
||||
<viewScriptFile forActionName="index"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
<viewControllerScriptsDirectory forControllerName="Recorder">
|
||||
<viewScriptFile forActionName="getShowSchedule"/>
|
||||
</viewControllerScriptsDirectory>
|
||||
</viewScriptsDirectory>
|
||||
<viewHelpersDirectory/>
|
||||
<viewFiltersDirectory enabled="false"/>
|
||||
|
@ -370,6 +380,7 @@
|
|||
<testApplicationControllerFile filesystemName="NowplayingControllerTest.php"/>
|
||||
<testApplicationControllerFile filesystemName="PreferenceControllerTest.php"/>
|
||||
<testApplicationControllerFile filesystemName="DashboardControllerTest.php"/>
|
||||
<testApplicationControllerFile filesystemName="RecorderControllerTest.php"/>
|
||||
</testApplicationControllerDirectory>
|
||||
</testApplicationDirectory>
|
||||
<testLibraryDirectory>
|
||||
|
|
|
@ -28,6 +28,10 @@ Linked code:
|
|||
- Note: Only used for development, not needed to run Airtime.
|
||||
- License: LGPLv3
|
||||
|
||||
* Soundcloud php api wrapper
|
||||
- https://github.com/mptre/php-soundcloud/blob/master/Services/Soundcloud.php
|
||||
- License: MIT
|
||||
|
||||
----------------
|
||||
Non-linked code:
|
||||
----------------
|
||||
|
|
|
@ -21,7 +21,8 @@ $ccAcl->add(new Zend_Acl_Resource('library'))
|
|||
->add(new Zend_Acl_Resource('nowplaying'))
|
||||
->add(new Zend_Acl_Resource('search'))
|
||||
->add(new Zend_Acl_Resource('dashboard'))
|
||||
->add(new Zend_Acl_Resource('preference'));
|
||||
->add(new Zend_Acl_Resource('preference'))
|
||||
->add(new Zend_Acl_Resource('recorder'));
|
||||
|
||||
/** Creating permissions */
|
||||
$ccAcl->allow('G', 'index')
|
||||
|
@ -29,13 +30,13 @@ $ccAcl->allow('G', 'index')
|
|||
->allow('G', 'error')
|
||||
->allow('G', 'nowplaying')
|
||||
->allow('G', 'api')
|
||||
->allow('G', 'recorder')
|
||||
->allow('G', 'schedule')
|
||||
->allow('G', 'dashboard')
|
||||
->allow('H', 'library')
|
||||
->allow('H', 'search')
|
||||
->allow('H', 'plupload')
|
||||
->allow('H', 'playlist')
|
||||
->allow('H', 'sideplaylist')
|
||||
->allow('A', 'user')
|
||||
->allow('A', 'preference');
|
||||
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
<?php
|
||||
|
||||
class RecorderController extends Zend_Controller_Action
|
||||
{
|
||||
|
||||
public function init()
|
||||
{
|
||||
$ajaxContext = $this->_helper->getHelper('contextSwitch');
|
||||
$ajaxContext->addActionContext('get-show-schedule', 'json')
|
||||
->initContext();
|
||||
}
|
||||
|
||||
public function indexAction()
|
||||
{
|
||||
// action body
|
||||
}
|
||||
|
||||
public function getShowScheduleAction()
|
||||
{
|
||||
//$from = $this->_getParam("from");
|
||||
//$to = $this->_getParam("to");
|
||||
|
||||
$today_timestamp = date("Y-m-d H:i:s");
|
||||
|
||||
$this->view->shows = Show::getShows($today_timestamp, null, $excludeInstance=NULL, $onlyRecord=TRUE);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -188,7 +188,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
|
||||
$this->view->showContent = $show->getShowContent();
|
||||
$this->view->timeFilled = $show->getTimeScheduled();
|
||||
$this->view->percentFilled = $show->getPercentScheduledInRange();
|
||||
$this->view->percentFilled = $show->getPercentScheduled();
|
||||
|
||||
$this->view->chosen = $this->view->render('schedule/scheduled-content.phtml');
|
||||
unset($this->view->showContent);
|
||||
|
@ -237,7 +237,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
|
||||
$this->view->showContent = $show->getShowContent();
|
||||
$this->view->timeFilled = $show->getTimeScheduled();
|
||||
$this->view->percentFilled = $show->getPercentScheduledInRange();
|
||||
$this->view->percentFilled = $show->getPercentScheduled();
|
||||
$this->view->chosen = $this->view->render('schedule/scheduled-content.phtml');
|
||||
unset($this->view->showContent);
|
||||
}
|
||||
|
@ -268,7 +268,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
$this->view->timeFilled = $show->getTimeScheduled();
|
||||
$this->view->showName = $show->getName();
|
||||
$this->view->showLength = $show->getShowLength();
|
||||
$this->view->percentFilled = $show->getPercentScheduledInRange();
|
||||
$this->view->percentFilled = $show->getPercentScheduled();
|
||||
|
||||
$this->view->s_wday = $dateInfo_s['weekday'];
|
||||
$this->view->s_month = $dateInfo_s['month'];
|
||||
|
|
|
@ -110,10 +110,11 @@ class Zend_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
|
|||
{
|
||||
$controller = strtolower($request->getControllerName());
|
||||
|
||||
if ($controller == 'api'){
|
||||
$this->setRoleName("G");
|
||||
|
||||
} else if (!Zend_Auth::getInstance()->hasIdentity()){
|
||||
if ($controller == 'api' || $controller == 'recorder'){
|
||||
|
||||
$this->setRoleName("G");
|
||||
}
|
||||
else if (!Zend_Auth::getInstance()->hasIdentity()){
|
||||
|
||||
if ($controller !== 'login') {
|
||||
|
||||
|
|
|
@ -2,92 +2,91 @@
|
|||
|
||||
class Application_Model_Nowplaying
|
||||
{
|
||||
/*
|
||||
public static function InsertBlankRow($i, $rows){
|
||||
$startDateFull = $rows[$i-1][3];
|
||||
$endDateFull = $rows[$i][2];
|
||||
|
||||
$startDate = explode(".", $startDateFull);
|
||||
$endDate = explode(".", $endDateFull);
|
||||
public static function FindBeginningOfShow($rows){
|
||||
$numRows = count($rows);
|
||||
|
||||
$epochStartMS = strtotime($startDate[0])*1000;
|
||||
$epochEndMS = strtotime($endDate[0])*1000;
|
||||
$newCopy = array();
|
||||
|
||||
if (count($startDate) > 1)
|
||||
$epochStartMS += $startDate[1];
|
||||
if (count($endDate) > 1)
|
||||
$epochEndMS += $endDate[1];
|
||||
for ($i=0; $i<$numRows; $i++){
|
||||
$currentRow = $rows[$i];
|
||||
if ($i == 0 || ($i != 0 && $currentRow['instance_id'] != $rows[$i-1]['instance_id'])){
|
||||
//$currentRow is first instance of a show.
|
||||
$group = $currentRow;
|
||||
$group['group'] = 'x';
|
||||
$group['item_starts'] = $group['show_starts'];
|
||||
$group['item_ends'] = $group['show_ends'];
|
||||
|
||||
$blankRow = array(array("b", $startDateFull, $startDateFull, $endDate, Application_Model_DateHelper::ConvertMSToHHMMSSmm($epochEndMS - $epochStartMS), "-", "-", "-", "-" , "-", "", ""));
|
||||
array_splice($rows, $i, 0, $blankRow);
|
||||
return $rows;
|
||||
}
|
||||
|
||||
public static function FindGaps($rows){
|
||||
$n = count($rows);
|
||||
|
||||
$blankRowIndices = array();
|
||||
$arrayIndexOffset = 0;
|
||||
|
||||
if ($n < 2)
|
||||
return $rows;
|
||||
|
||||
for ($i=1; $i<$n; $i++){
|
||||
if ($rows[$i-1][3] != $rows[$i][2])
|
||||
array_push($blankRowIndices, $i);
|
||||
array_push($newCopy, $group);
|
||||
}
|
||||
array_push($newCopy, $currentRow);
|
||||
}
|
||||
|
||||
for ($i=0, $n=count($blankRowIndices); $i<$n; $i++){
|
||||
$rows = Application_Model_Nowplaying::InsertBlankRow($blankRowIndices[$i]+$arrayIndexOffset, $rows);
|
||||
$arrayIndexOffset++;
|
||||
}
|
||||
|
||||
return $rows;
|
||||
return $newCopy;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
public static function FindGapsBetweenShows($showsMap){
|
||||
public static function FindGapAtEndOfShow($rows){
|
||||
$numRows = count($rows);
|
||||
|
||||
$previousShow = null;
|
||||
foreach($showsMap as $k => $show){
|
||||
$currentShow = $showsMap[$k];
|
||||
$newCopy = array();
|
||||
|
||||
if (!is_null($previousShow)){
|
||||
$diff = strtotime($currentShow['starts']) - strtotime($previousShow['ends'])
|
||||
if ($$diff != 0){
|
||||
//array_splice($showsMap, $i, 0, $blankRow);
|
||||
for ($i=0; $i<$numRows; $i++){
|
||||
$currentRow = $rows[$i];
|
||||
array_push($newCopy, $currentRow);
|
||||
if ($i+1 == $numRows || ($i+1 !=$numRows && $currentRow['instance_id'] != $rows[$i+1]['instance_id'])){
|
||||
//$row is the last instance in the show.
|
||||
|
||||
if ($currentRow['item_ends'] == ""){
|
||||
//show is empty and has no scheduled items in it. Therefore
|
||||
//the gap is the entire length of the show.
|
||||
$currentRow['item_ends'] = $currentRow['show_starts'];
|
||||
}
|
||||
|
||||
$diff = strtotime($currentRow['show_ends']) - strtotime($currentRow['item_ends']);
|
||||
if ($diff > 0){
|
||||
//gap at the end of show. Lets create a "gap" row
|
||||
$gap = $currentRow;
|
||||
$gap['gap'] = '';
|
||||
$gap['item_starts'] = $diff;
|
||||
|
||||
array_push($newCopy, $gap);
|
||||
}
|
||||
}
|
||||
|
||||
$previousShow = $showsMap[$k];
|
||||
}
|
||||
|
||||
return $showsMap;
|
||||
return $newCopy;
|
||||
}
|
||||
*/
|
||||
public static function FindGapAtEndOfShow($show, $rows){
|
||||
$showStartTime = $show['starts'];
|
||||
$showEndTime = $show['ends'];
|
||||
|
||||
if (count($rows) > 1){
|
||||
$lastItem = $rows[count($rows)-1];
|
||||
$lastItemEndTime = $lastItem['ends'];
|
||||
} else {
|
||||
$lastItemEndTime = $showStartTime;
|
||||
public static function FilterRowsByDate($rows, $date, $startCutoff, $endCutoff){
|
||||
$dateNow = new Application_Model_DateHelper;
|
||||
$timeNow = $dateNow->getDate();
|
||||
|
||||
$data = array();
|
||||
//iterate over each show, and calculate information for it.
|
||||
$numItems = count($rows);
|
||||
for ($i=0; $i<$numItems; $i++){
|
||||
$item = $rows[$i];
|
||||
|
||||
if ((strtotime($item['item_ends']) > $date->getEpochTime() - $startCutoff
|
||||
&& strtotime($item['item_starts']) < $date->getEpochTime() + $endCutoff) || array_key_exists("group", $item) || array_key_exists("gap", $item)){
|
||||
|
||||
if (array_key_exists("group", $item)){
|
||||
$type = "g";
|
||||
} else if (array_key_exists("gap", $item)){
|
||||
$type = "b";
|
||||
} else if (strtotime($item['item_ends']) < strtotime($timeNow)){
|
||||
$type = "p";
|
||||
} else if (strtotime($item['item_starts']) < strtotime($timeNow) && strtotime($timeNow) < strtotime($item['item_ends'])
|
||||
&& strtotime($item['show_starts']) < strtotime($timeNow) && strtotime($timeNow) < strtotime($item['show_ends'])){
|
||||
$type = "c";
|
||||
} else {
|
||||
$type = "n";
|
||||
}
|
||||
|
||||
array_push($data, array($type, $item["item_starts"], $item["item_starts"], $item["item_ends"], $item["clip_length"], $item["track_title"], $item["artist_name"], $item["album_title"], $item["playlist_name"], $item["show_name"], $item["instance_id"]));
|
||||
}
|
||||
}
|
||||
|
||||
$diff = Application_Model_DateHelper::TimeDiff($lastItemEndTime, $showEndTime);
|
||||
|
||||
if ($diff <= 0){
|
||||
//ok!
|
||||
return null;
|
||||
} else {
|
||||
//There is a gap at the end of the show. Return blank row
|
||||
return array("b", $diff, "-", "-", "-", "-", "-", "-", "-", "-", "-", "-");
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
public static function GetDataGridData($viewType, $dateString){
|
||||
|
@ -105,44 +104,19 @@ class Application_Model_Nowplaying
|
|||
$timeNow = $date->getDate();
|
||||
|
||||
$startCutoff = $date->getNowDayStartDiff();
|
||||
$endCutoff = $date->getNowDayEndDiff();
|
||||
$endCutoff = $date->getNowDayEndDiff();
|
||||
}
|
||||
|
||||
|
||||
$showsMap = Show_DAL::GetShowsInRange($timeNow, $startCutoff, $endCutoff);
|
||||
$rows = Show_DAL::GetShowsInRange($timeNow, $startCutoff, $endCutoff);
|
||||
$rows = Application_Model_Nowplaying::FindBeginningOfShow($rows);
|
||||
$rows = Application_Model_Nowplaying::FindGapAtEndOfShow($rows);
|
||||
//$rows = FindGapsBetweenShows
|
||||
$data = Application_Model_Nowplaying::FilterRowsByDate($rows, $date, $startCutoff, $endCutoff);
|
||||
|
||||
//iterate over each show, and calculate information for it.
|
||||
foreach($showsMap as $k => $show){
|
||||
$rows = Schedule::GetShowInstanceItems($k);
|
||||
$gapRow = Application_Model_Nowplaying::FindGapAtEndOfShow($showsMap[$k], $rows);
|
||||
foreach ($rows as $item){
|
||||
//check if this item is in todays date range
|
||||
if (strtotime($item['ends']) > $date->getEpochTime() - $startCutoff
|
||||
&& strtotime($item['starts']) < $date->getEpochTime() + $endCutoff){
|
||||
|
||||
if ($item['ends'] < $timeNow){
|
||||
$type = "p";
|
||||
} else if ($item['starts'] < $timeNow && $timeNow < $item['ends']){
|
||||
$type = "c";
|
||||
} else {
|
||||
$type = "n";
|
||||
}
|
||||
|
||||
array_push($showsMap[$k]['items'], array($type, $item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"],
|
||||
$item["album_title"], $item["name"], $item["show_name"], $item["instance_id"], $item["group_id"]));
|
||||
}
|
||||
}
|
||||
|
||||
if (!is_null($gapRow))
|
||||
array_push($showsMap[$k]['items'], $gapRow);
|
||||
}
|
||||
|
||||
//$showsMap = Application_Model_Nowplaying::FindGapsBetweenShows($showsMap);
|
||||
|
||||
|
||||
$date = new Application_Model_DateHelper;
|
||||
$timeNow = $date->getDate();
|
||||
|
||||
return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$showsMap);
|
||||
return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$data);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -278,12 +278,11 @@ class Schedule {
|
|||
return ($count == '0');
|
||||
}
|
||||
|
||||
public static function getTimeUnScheduledInRange($s_datetime, $e_datetime) {
|
||||
public static function getTimeUnScheduledInRange($instance_id, $s_datetime, $e_datetime) {
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
|
||||
$sql = "SELECT SUM(clip_length) FROM ".$CC_CONFIG["scheduleTable"]."
|
||||
WHERE (starts >= '{$s_datetime}')
|
||||
AND (ends <= '{$e_datetime}')";
|
||||
$sql = "SELECT SUM(clip_length) FROM $CC_CONFIG[scheduleTable]"
|
||||
." WHERE instance_id = $instance_id";
|
||||
|
||||
$time = $CC_DBC->GetOne($sql);
|
||||
|
||||
|
@ -313,6 +312,20 @@ class Schedule {
|
|||
|
||||
return $res;
|
||||
}
|
||||
|
||||
public static function GetTotalShowTime($instance_id) {
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
|
||||
$sql = "SELECT SUM(clip_length) FROM $CC_CONFIG[scheduleTable]"
|
||||
." WHERE instance_id = $instance_id";
|
||||
|
||||
$res = $CC_DBC->GetOne($sql);
|
||||
|
||||
if(is_null($res))
|
||||
return 0;
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
public static function getPercentScheduledInRange($s_datetime, $e_datetime) {
|
||||
|
||||
|
@ -337,6 +350,25 @@ class Schedule {
|
|||
return $percent;
|
||||
}
|
||||
|
||||
public static function GetPercentScheduled($instance_id, $s_datetime, $e_datetime){
|
||||
$time = Schedule::GetTotalShowTime($instance_id);
|
||||
|
||||
$s_epoch = strtotime($s_datetime);
|
||||
$e_epoch = strtotime($e_datetime);
|
||||
|
||||
$con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
|
||||
$sql = "SELECT EXTRACT(EPOCH FROM INTERVAL '{$time}')";
|
||||
$r = $con->query($sql);
|
||||
$i_epoch = $r->fetchColumn(0);
|
||||
|
||||
$percent = ceil(($i_epoch / ($e_epoch - $s_epoch)) * 100);
|
||||
|
||||
if ($percent > 100)
|
||||
$percent = 100;
|
||||
|
||||
return $percent;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return TRUE if file is going to be played in the future.
|
||||
|
@ -490,7 +522,8 @@ class Schedule {
|
|||
." WHERE st.playlist_id = pt.id"
|
||||
." AND st.file_id = ft.id"
|
||||
." AND st.instance_id = si.id"
|
||||
." AND si.show_id = show.id";
|
||||
." AND si.show_id = show.id"
|
||||
." AND st.starts < si.ends";
|
||||
|
||||
if ($timePeriod < 0){
|
||||
$sql .= " AND st.ends < TIMESTAMP '$timeStamp'"
|
||||
|
|
|
@ -175,15 +175,26 @@ class Show {
|
|||
Show::populateShowUntilLastGeneratedDate($showId);
|
||||
}
|
||||
|
||||
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL) {
|
||||
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL, $onlyRecord=FALSE) {
|
||||
global $CC_DBC;
|
||||
|
||||
$sql = "SELECT starts, ends, show_id, name, description, color, background_color, cc_show_instances.id AS instance_id
|
||||
FROM cc_show_instances
|
||||
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id
|
||||
WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
|
||||
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id";
|
||||
|
||||
//only want shows that are starting at the time or later.
|
||||
if($onlyRecord) {
|
||||
|
||||
$sql = $sql." WHERE (starts >= '{$start_timestamp}' AND starts < timestamp '{$start_timestamp}' + interval '2 hours')";
|
||||
$sql = $sql." AND (record = TRUE)";
|
||||
}
|
||||
else {
|
||||
|
||||
$sql = $sql." WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
|
||||
OR (ends > '{$start_timestamp}' AND ends <= '{$end_timestamp}')
|
||||
OR (starts <= '{$start_timestamp}' AND ends >= '{$end_timestamp}'))";
|
||||
}
|
||||
|
||||
|
||||
if(isset($excludeInstance)) {
|
||||
foreach($excludeInstance as $instance) {
|
||||
|
@ -196,7 +207,6 @@ class Show {
|
|||
}
|
||||
|
||||
//echo $sql;
|
||||
|
||||
return $CC_DBC->GetAll($sql);
|
||||
}
|
||||
|
||||
|
@ -446,6 +456,10 @@ class ShowInstance {
|
|||
return $showInstance->getDbShowId();
|
||||
}
|
||||
|
||||
public function getShowInstanceId() {
|
||||
return $this->_instanceId;
|
||||
}
|
||||
|
||||
public function getName() {
|
||||
$show = CcShowQuery::create()->findPK($this->getShowId());
|
||||
return $show->getDbName();
|
||||
|
@ -625,11 +639,8 @@ class ShowInstance {
|
|||
}
|
||||
|
||||
public function getTimeScheduled() {
|
||||
|
||||
$start_timestamp = $this->getShowStart();
|
||||
$end_timestamp = $this->getShowEnd();
|
||||
|
||||
$time = Schedule::getTimeScheduledInRange($start_timestamp, $end_timestamp);
|
||||
$instance_id = $this->getShowInstanceId();
|
||||
$time = Schedule::GetTotalShowTime($instance_id);
|
||||
|
||||
return $time;
|
||||
}
|
||||
|
@ -638,8 +649,9 @@ class ShowInstance {
|
|||
|
||||
$start_timestamp = $this->getShowStart();
|
||||
$end_timestamp = $this->getShowEnd();
|
||||
$instance_id = $this->getShowInstanceId();
|
||||
|
||||
$time = Schedule::getTimeUnScheduledInRange($start_timestamp, $end_timestamp);
|
||||
$time = Schedule::getTimeUnScheduledInRange($instance_id, $start_timestamp, $end_timestamp);
|
||||
|
||||
return $time;
|
||||
}
|
||||
|
@ -652,6 +664,14 @@ class ShowInstance {
|
|||
return Schedule::getPercentScheduledInRange($start_timestamp, $end_timestamp);
|
||||
}
|
||||
|
||||
public function getPercentScheduled(){
|
||||
$start_timestamp = $this->getShowStart();
|
||||
$end_timestamp = $this->getShowEnd();
|
||||
$instance_id = $this->getShowInstanceId();
|
||||
|
||||
return Schedule::GetPercentScheduled($instance_id, $start_timestamp, $end_timestamp);
|
||||
}
|
||||
|
||||
public function getShowLength(){
|
||||
global $CC_DBC;
|
||||
|
||||
|
@ -760,32 +780,34 @@ class Show_DAL{
|
|||
|
||||
public static function GetShowsInRange($timeNow, $start, $end){
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
$sql = "SELECT *,"
|
||||
." si.starts as start_timestamp,"
|
||||
." si.ends as end_timestamp,"
|
||||
." si.id as instance_id"
|
||||
." FROM "
|
||||
." $CC_CONFIG[showInstances] si,"
|
||||
." $CC_CONFIG[showTable] s"
|
||||
." WHERE si.show_id = s.id"
|
||||
." AND ((si.starts < TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends > TIMESTAMP '$timeNow' - INTERVAL '$start seconds')"
|
||||
$sql = "SELECT"
|
||||
." si.starts as show_starts,"
|
||||
." si.ends as show_ends,"
|
||||
." st.starts as item_starts,"
|
||||
." st.ends as item_ends,"
|
||||
." st.clip_length as clip_length,"
|
||||
." ft.track_title as track_title,"
|
||||
." ft.artist_name as artist_name,"
|
||||
." ft.album_title as album_title,"
|
||||
." s.name as show_name,"
|
||||
." si.id as instance_id,"
|
||||
." pt.name as playlist_name"
|
||||
." FROM $CC_CONFIG[showInstances] si"
|
||||
." LEFT JOIN $CC_CONFIG[scheduleTable] st"
|
||||
." ON st.instance_id = si.id"
|
||||
." LEFT JOIN $CC_CONFIG[playListTable] pt"
|
||||
." ON st.playlist_id = pt.id"
|
||||
." LEFT JOIN $CC_CONFIG[filesTable] ft"
|
||||
." ON st.file_id = ft.id"
|
||||
." LEFT JOIN $CC_CONFIG[showTable] s"
|
||||
." ON si.show_id = s.id"
|
||||
." WHERE ((si.starts < TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends > TIMESTAMP '$timeNow' - INTERVAL '$start seconds')"
|
||||
." OR (si.starts > TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends < TIMESTAMP '$timeNow' + INTERVAL '$end seconds')"
|
||||
." OR (si.starts < TIMESTAMP '$timeNow' + INTERVAL '$end seconds' AND si.ends > TIMESTAMP '$timeNow' + INTERVAL '$end seconds'))"
|
||||
." ORDER BY si.starts";
|
||||
." AND (st.starts < si.ends)"
|
||||
." ORDER BY st.starts";
|
||||
|
||||
$rows = $CC_DBC->GetAll($sql);
|
||||
|
||||
$showsMap = array();
|
||||
$rowsCount = count($rows);
|
||||
|
||||
for ($i=0; $i<$rowsCount; $i++){
|
||||
$rows[$i]['items'] = array();
|
||||
array_push($rows[$i]['items'],
|
||||
array("s", $rows[$i]["starts"], $rows[$i]["starts"], $rows[$i]["ends"], "", "", "", "", "", $rows[$i]["name"], $rows[$i]["instance_id"], ""));
|
||||
$showsMap[$rows[$i]['instance_id']] = $rows[$i];
|
||||
}
|
||||
|
||||
return $showsMap;
|
||||
return $CC_DBC->GetAll($sql);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1655,7 +1655,7 @@ class StoredFile {
|
|||
|
||||
$fromTable = "cc_playlist AS pl LEFT JOIN cc_playlisttimes AS plt USING(id) LEFT JOIN cc_subjs AS sub ON pl.editedby = sub.id";
|
||||
|
||||
$datatables["optWhere"][] = "plt.length <= INTERVAL '{$p_length}'";
|
||||
$datatables["optWhere"][] = "INTERVAL '{$p_length}' > INTERVAL '00:00:00'";
|
||||
$datatables["optWhere"][] = "plt.length > INTERVAL '00:00:00'";
|
||||
|
||||
return StoredFile::searchFiles($fromTable, $datatables);
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
<?php
|
||||
|
||||
require_once 'soundcloud-api/Services/Soundcloud.php';
|
||||
|
||||
class Airtime_View_Helper_SoundCloudLink extends Zend_View_Helper_Abstract
|
||||
{
|
||||
public function soundCloudLink()
|
||||
{
|
||||
$request = Zend_Controller_Front::getInstance()->getRequest();
|
||||
$host = $request->getHttpHost();
|
||||
$controller = $request->getControllerName();
|
||||
$action = $request->getActionName();
|
||||
|
||||
$redirectUrl = "http://{$host}/{$controller}/{$action}";
|
||||
|
||||
$soundcloud = new Services_Soundcloud('2CLCxcSXYzx7QhhPVHN4A', 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs', $redirectUrl);
|
||||
$authorizeUrl = $soundcloud->getAuthorizeUrl();
|
||||
|
||||
return $authorizeUrl;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
<br /><br /><center>View script for controller <b>AirtimeRecorder</b> and script/action name <b>index</b></center>
|
|
@ -0,0 +1 @@
|
|||
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>getShowSchedule</b></center>
|
|
@ -0,0 +1 @@
|
|||
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>index</b></center>
|
|
@ -28,6 +28,7 @@
|
|||
<div id="show_progressbar"></div>
|
||||
<span id="show_length" class="time"><?php echo $this->showLength; ?></span>
|
||||
</div>
|
||||
<div id="show_time_warning"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -0,0 +1,278 @@
|
|||
=======================================================================
|
||||
*** Ecasound - AUTHORS file ***
|
||||
=======================================================================
|
||||
|
||||
Note about author information in version control (git)
|
||||
------------------------------------------------------
|
||||
|
||||
For recent development history (since August 2008), the Ecasound git
|
||||
repository (see:
|
||||
- http://ecasound.git.sourceforge.net/git/gitweb.cgi?p=ecasound )
|
||||
... contains accurate author information. For earlier commits, the git
|
||||
repository does not provide an accurate view, as all of these
|
||||
pre-2008/Aug patches were committed by the release manager. However,
|
||||
even in the older commits, the original author (if different from
|
||||
commit author), is identified in the patch description (e.g. "Patch
|
||||
from.." or "Patch by..").
|
||||
|
||||
Main author, coordination of development
|
||||
========================================
|
||||
|
||||
Kai Vehmanen [kaiv] (kvehmanen -at- eca -dot- cx)
|
||||
|
||||
New functionality, refactoring old code
|
||||
=======================================
|
||||
|
||||
Allie, Stuart [allies] (stuart -dot- allie -at- hydro -dot- com -dot- au)
|
||||
Added EIAM command set for controller parameters (ctrlp-*), bugfixes.
|
||||
Bowman, Brad [bowman]
|
||||
Perl ECI binding, bug hunting.
|
||||
Chappell, Jesse [jesse] (jesse -at- essej -dot- net)
|
||||
Improvements to libsndfile support, various bugfixes.
|
||||
Coker, Rob [rcs] (rcs -at- birch -dot- net)
|
||||
Pulse gate (-eemp) code.
|
||||
Cunningham, Jeffrey [jeffrey] (jeffrey -at- cunningham -dot- net)
|
||||
Various improvements to ecasignalview.
|
||||
Dobson, Julian [juliand]
|
||||
Improved mechanism for mp3 header parsing.
|
||||
Ewe, Michael [mewe]
|
||||
Signal handling bugfixes to ecasignalview and the ECI C impl.
|
||||
Fendt, Stefan (stefan -at- lionfish -dot- ping -dot- de)
|
||||
Original code for reverb (-ete) and RC-lowpass filter (-ef4).
|
||||
Hall, Jeremy [jhall] (jhall -at- maoz -dot- com)
|
||||
Extensive testing, ALSA 0.6.x support, many design ideas.
|
||||
Halttunen, Janne [jhalttun]
|
||||
Helped in developing the EIAM, and specifically the
|
||||
new ECI concept. Wrote the native Python ECI implementation.
|
||||
Hamara, Arto [artham] (artham -at- utu -dot- fi)
|
||||
Ecasound logo(s), preset params, general linear
|
||||
envelope support, various bug fixes!
|
||||
Jeanneau, Aymeric [ajeanneau] (ajeanneau -at- cvf -dot- fr)
|
||||
Reentrant libecasoundc (C ECI) implementation.
|
||||
Lang, Mario [mlang]
|
||||
Ecasound.el, the ecasound emacs module.
|
||||
Leake, Tony [tonyleake]
|
||||
PHP ECI extension.
|
||||
Lees, Andrew [andrewl]
|
||||
Reopen functionality to threshold gate (-ge).
|
||||
Linson, Adam [alinson]
|
||||
Adding the cop-get command
|
||||
Lopez-Cabanillas, Pedro [pedrolc] (pedro -dot- lopez-cabanillas -at- gmail -dot -com)
|
||||
ALSA sequencer interface support.
|
||||
Massy, S. [smassy]
|
||||
Ecalength utility, extensive testing and debugging.
|
||||
Poelstra, Remco [rjpoelstra]
|
||||
ECI C API bug hunting.
|
||||
Polton, Richard [rpolton]
|
||||
The 250k gcc3.x patch. :)
|
||||
Tiedemann, Eric S. [est]
|
||||
Wrote the eci.py interface.
|
||||
Uekawa, Junichi [juekawa]
|
||||
Maintainer for Ecasound's Debian package. Improvements to build
|
||||
system and numerous bugfixes.
|
||||
Weil, Jan [janweil] (Jan -dot- Weil -at- web -dot- de)
|
||||
Wrote the Ruby ECI implementation.
|
||||
|
||||
Contributions
|
||||
==============
|
||||
|
||||
Anarcat [anarcat]
|
||||
Work on Ecasound's FreeBSD port.
|
||||
Amundsen, Eric [amundsen]
|
||||
Bug hunting.
|
||||
Beaupre, Antoine [beaupran]
|
||||
Patches for FreeBSD compatibility.
|
||||
Berndtgen, Manfred [mb]
|
||||
Bugfix to ecasignalview.
|
||||
Bolton, Sean [smbolton]
|
||||
Patches for Mac OS X compability.
|
||||
Brulebois, Cyril [cyrilbrulebois]
|
||||
Patches for issues reported by GCC 3.4.
|
||||
Campbell, Ross [rcampbel]
|
||||
Tips concerning Solaris compatibility.
|
||||
Carmack, Michael [karmak]
|
||||
Tips concerning Solaris.
|
||||
Claassen, Julien [julien]
|
||||
Ideas for interface development, marketing work.
|
||||
Darilek, Nolan [nolan_d]
|
||||
Ogg vorbis fixes.
|
||||
Dye, Rob [rob]
|
||||
OSS compilation fixes.
|
||||
Eure, Ian [ieure]
|
||||
Work on the Ecasound debian packages.
|
||||
Fischer, Hans-Georg [hgfischer]
|
||||
Bug fix that solved edi-1.
|
||||
Grabner Markus [grabner]
|
||||
Updated RPM spec-file for x86_64 platforms.
|
||||
Groffen, Fabian [grobian] (grobian -at- gentoo -dot- org)
|
||||
OS X build fixes.
|
||||
Head, Chris [hawk777]
|
||||
Patches fixing ecasignalview build errors.
|
||||
Heller, Aaron [aheller]
|
||||
Fixes to big-endian support.
|
||||
Harris, Steve [swharris]
|
||||
gcc 2.96 (RH7.0) testing and fixes.
|
||||
Hughes, Jeremy [jedahu]
|
||||
Bugfix for JACK port muting
|
||||
Lavallée, Marc
|
||||
Rpm-spec for Mandrake.
|
||||
Merino, Pedro Antonio Fructuoso [pfructuoso]
|
||||
Various bugfix patches.
|
||||
Morris, Steve [smorris]
|
||||
Ewf-handling fixes.
|
||||
O'Toole David [dto]
|
||||
Patches to ecasound.el.
|
||||
Petit, Bertrand
|
||||
Helped with POSIX-compatibility issues.
|
||||
Poulton, Ron [thok]
|
||||
Helped to track down the mysterious chain-bug.
|
||||
Rzewnicki, Eric Dantan [ericdr]
|
||||
Lots of typo fixes and corrections to Ecasound docs.
|
||||
Sacré, Dominic [dsacre]
|
||||
Fixes to 'jack_generic'.
|
||||
Sassmannshausen, Ruediger [rsassman]
|
||||
Mp3 filename parsing fixes.
|
||||
Shchepin, Alexey [alexey]
|
||||
Bugfix to time crop gate operator (-gc).
|
||||
Sijrier, Remon [remon]
|
||||
Fix to a bug in setting -eca initial values.
|
||||
Smith, Richard A.
|
||||
Helped in solving the "gcc 2.95" bug.
|
||||
Sousa, Rui
|
||||
OSS bug fixes.
|
||||
Stradling, Rob [robstr]
|
||||
MIDI-MMC bug fixes.
|
||||
Tkachenko, Vadim -
|
||||
Helped to get started with autoconf.
|
||||
Yee-king, Matt [yeeking]
|
||||
Helped debugging big-endian troubles on PowerPC.
|
||||
Westbrook, Tim [iondiode]
|
||||
Autoconf 2.5x fixes.
|
||||
Wever, Mark de [koraq]
|
||||
Bugs in libecasoundc-config.
|
||||
Wróblewski, Artur [wrobell]
|
||||
PLD-Linux RPM-specfile, readline and destdir patches.
|
||||
|
||||
Contributions - Patches, Bug Hunting and Feature Proposals
|
||||
==========================================================
|
||||
|
||||
Starting from 2.2.1 release (in Feb/2003), contributors have
|
||||
been listed in the release notes. For all past releases notes,
|
||||
see:
|
||||
|
||||
- http://eca.cx/relnotes/
|
||||
|
||||
Below is a list of all contributors to 2.2.1 and beyond, collected
|
||||
from the published releases notes, and listed in the order they appear
|
||||
in the release notes:
|
||||
|
||||
Junichi Uekawa
|
||||
Kai Vehmanen
|
||||
Janne Halttunen
|
||||
Antti Boman
|
||||
William Goldsmith
|
||||
Oliver Thuns
|
||||
Mario Lang
|
||||
Michael Hellwig
|
||||
Janno Liivak
|
||||
Raoul Megelas
|
||||
Jan Stary
|
||||
Daniel Kruszyna
|
||||
Jeremy Hall
|
||||
Vegard Lima
|
||||
Carsten Bauer
|
||||
Ismail Donmez
|
||||
Lars Henrik Mai
|
||||
Stephan Niemz
|
||||
Al Oemens
|
||||
Tommi Uimonen
|
||||
Hirendra Hindocha
|
||||
Stefan Bundt
|
||||
Dave Phillips
|
||||
Jan Weil
|
||||
Mark de Wever
|
||||
Fernando Pablo Lopez-Lezcano
|
||||
Michael Ewe
|
||||
Eric Dantan Rzewnicki
|
||||
Pierre Lorenzon
|
||||
Jesse Chappell
|
||||
Sean Bolton
|
||||
Adam Linson
|
||||
Paul Winkler
|
||||
Didier Bellamy
|
||||
Manfred Berndtgen
|
||||
Stéphane Letz
|
||||
Paul Marquardt
|
||||
kito -at- gentoo-org
|
||||
jcwjcw -at- qwest-net
|
||||
Vitaly Belostotsky
|
||||
Steve Harris
|
||||
Tim Blechmann
|
||||
Aaron Heller
|
||||
Kamil Wencel
|
||||
Julien Claassen
|
||||
Erik de Castro Lopo
|
||||
Frederik Eaton
|
||||
Philippe Schelté aka Dubphil
|
||||
Julian Dobson
|
||||
Alexey Shchepin
|
||||
Brad Fuller
|
||||
Peter Lutek
|
||||
Stuart Allie
|
||||
Jeffrey Cunningham
|
||||
Kyle Kirkland
|
||||
Olivier Guilyardi
|
||||
Jack O'Quin
|
||||
Pierre Lorenzon
|
||||
Pedro Lopez-Cabanillas
|
||||
Pedro Antonio Fructuoso Merino
|
||||
Arieh Skliarouk
|
||||
Tom Rosenfeld
|
||||
Valery -at- vslash -dot com
|
||||
Markus Grabner
|
||||
Michael Willoughby
|
||||
Rocco <linuxmedia -at- netscape-net>
|
||||
Dave Serls
|
||||
Stephen Stocker
|
||||
Aaron Heller
|
||||
Chris Head
|
||||
Zrajm Akfohg
|
||||
Florian Ladstaedter
|
||||
Koen <kbr -at- patat-org>
|
||||
Kurt Konolige
|
||||
Brad Bowman
|
||||
Joel Roth
|
||||
Martin Michlmayr
|
||||
Joe Planisky
|
||||
Rémi Rouaud
|
||||
Etienne Deleflie
|
||||
Klaus Schulz
|
||||
Keith Creasy
|
||||
Cyril Brulebois
|
||||
Fabian Groffen
|
||||
Andrew Lees
|
||||
Sergei Steshenko
|
||||
Alexis Ballier
|
||||
Avuton Olrich
|
||||
Dominic Sacré
|
||||
Erik Nomitch
|
||||
|
||||
Code from other projects
|
||||
========================
|
||||
|
||||
Davis Paul
|
||||
pthread_mutex_spinlock() from libpbd.
|
||||
Dyson, John S.
|
||||
The original advanced compressor (-eca) code.
|
||||
Furse, Richard W.E.
|
||||
Sine tone generation code from Computer Music Toolkit
|
||||
LADSPA plugin set is used in AUDIO_IO_TONE.
|
||||
Harris, Steve and Tim Blechmann
|
||||
Denormal handling code from swh-plugins package.
|
||||
Laydier, Antoine [SMF]
|
||||
Mp3 header parsing (layer.cpp).
|
||||
|
||||
|
||||
Note! The developer tags (for example [kaiv] is one) are used
|
||||
throughout Ecasound docs: NEWS, TODO-list, edi-list.txt,
|
||||
ChangeLog files and so on.
|
|
@ -0,0 +1,58 @@
|
|||
-----------------------------------------------------------------------
|
||||
*** Ecasound - Known Bugs/Features ***
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Reporting bugs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Please send your bug reports to the ecasound-list mailing list (see
|
||||
README or http://eca.cx/ecasound/mlists.php for list contact information).
|
||||
|
||||
If the bug (or feature request) cannot be solved immediately (or
|
||||
getting a response takes longer than you care to wait for), feel free
|
||||
to add the item to the sourceforge.net tracker (see below). It is
|
||||
also a good idea to send a note to the list that you have added
|
||||
a new item as the sourceforge.net tracker is not monitored by
|
||||
all developers.
|
||||
|
||||
To get the best results, see for example Simon Tatham's excellent
|
||||
article on 'How to Report Bugs Effectively' (if you are in a hurry,
|
||||
skip to the summary at the end of the article :)):
|
||||
|
||||
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
|
||||
|
||||
Ecasound bug tracker at sourceforge.net
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Ecasound has used the sourceforge.net bug tracker since Jan/2006:
|
||||
|
||||
https://sourceforge.net/tracker/?group_id=4605&atid=104605
|
||||
|
||||
This tracker is used to monitor longstanding bugs and
|
||||
feature/improvement items. It replaces the old Ecasound Development
|
||||
Item practise (items marked with 'edi-x' tags) that was used
|
||||
between 2002-08.
|
||||
|
||||
Known Bugs and Features (not in other issue trackers)
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
In addition to the below items, some known missing features have been
|
||||
listed in the 'TODO' file (in same directory as this file).
|
||||
|
||||
- commas in filenames given as arguments to '-i' and '-o' options need
|
||||
to be either escaped with backslashes (-i foo\\,bar.wav) or quoted
|
||||
with doublequotes (-i "foo,bar.wav")
|
||||
- certain combinations of glibc and linux-2.6 kernels cause the 'cs-edit'
|
||||
EIAM command to fail (ecasound exits back to shell after the command);
|
||||
as a workaround, set the LD_ASSUME_KERNEL=2.2.5 environment variable
|
||||
before running ecasound; see http://people.redhat.com/drepper/assumekernel.html
|
||||
for background information on LD_ASSUME_KERNEL
|
||||
- ecasound cannot parse ogg and flac headers so correct audio
|
||||
format parameters must be set manually with ecasound's '-f' option
|
||||
- pitch shifter (-ei) doesn't work with all real-time audio object
|
||||
types (for instance JACK)
|
||||
- ecasound crashes if /dev/midi points to an invalid rawmidi device
|
||||
- MIDI-ops like '-km' cannot be used in presets
|
||||
- controller sources and big buffersizes
|
||||
- distortion results for example if sine-oscillators
|
||||
are used with big buffersize (-b:X) settings
|
|
@ -0,0 +1,18 @@
|
|||
=======================================================================
|
||||
*** Ecasound - Licensing/distribution policy ***
|
||||
=======================================================================
|
||||
|
||||
Copyright (C) 1997-2006 Kai Vehmanen and others (see ecasound/AUTHORS).
|
||||
|
||||
Ecasound is freely distributable according to the terms of the
|
||||
GNU General Public License (see the file 'COPYING.GPL').
|
||||
|
||||
This program is distributed without any warranty. See the file
|
||||
'COPYING.GPL' for details.
|
||||
|
||||
As an exception to the above, the C, C++ and python implementations
|
||||
of the Ecasound Control Interface (ECI) are licensed under the LGPL
|
||||
(see the file 'COPYING.LGPL'). This allows writing ECI applications
|
||||
that are not licensed under GPL.
|
||||
|
||||
=======================================================================
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
|
@ -0,0 +1,502 @@
|
|||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
[This is the first released version of the Lesser GPL. It also counts
|
||||
as the successor of the GNU Library Public License, version 2, hence
|
||||
the version number 2.1.]
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
Licenses are intended to guarantee your freedom to share and change
|
||||
free software--to make sure the software is free for all its users.
|
||||
|
||||
This license, the Lesser General Public License, applies to some
|
||||
specially designated software packages--typically libraries--of the
|
||||
Free Software Foundation and other authors who decide to use it. You
|
||||
can use it too, but we suggest you first think carefully about whether
|
||||
this license or the ordinary General Public License is the better
|
||||
strategy to use in any particular case, based on the explanations below.
|
||||
|
||||
When we speak of free software, we are referring to freedom of use,
|
||||
not price. Our General Public Licenses are designed to make sure that
|
||||
you have the freedom to distribute copies of free software (and charge
|
||||
for this service if you wish); that you receive source code or can get
|
||||
it if you want it; that you can change the software and use pieces of
|
||||
it in new free programs; and that you are informed that you can do
|
||||
these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
distributors to deny you these rights or to ask you to surrender these
|
||||
rights. These restrictions translate to certain responsibilities for
|
||||
you if you distribute copies of the library or if you modify it.
|
||||
|
||||
For example, if you distribute copies of the library, whether gratis
|
||||
or for a fee, you must give the recipients all the rights that we gave
|
||||
you. You must make sure that they, too, receive or can get the source
|
||||
code. If you link other code with the library, you must provide
|
||||
complete object files to the recipients, so that they can relink them
|
||||
with the library after making changes to the library and recompiling
|
||||
it. And you must show them these terms so they know their rights.
|
||||
|
||||
We protect your rights with a two-step method: (1) we copyright the
|
||||
library, and (2) we offer you this license, which gives you legal
|
||||
permission to copy, distribute and/or modify the library.
|
||||
|
||||
To protect each distributor, we want to make it very clear that
|
||||
there is no warranty for the free library. Also, if the library is
|
||||
modified by someone else and passed on, the recipients should know
|
||||
that what they have is not the original version, so that the original
|
||||
author's reputation will not be affected by problems that might be
|
||||
introduced by others.
|
||||
|
||||
Finally, software patents pose a constant threat to the existence of
|
||||
any free program. We wish to make sure that a company cannot
|
||||
effectively restrict the users of a free program by obtaining a
|
||||
restrictive license from a patent holder. Therefore, we insist that
|
||||
any patent license obtained for a version of the library must be
|
||||
consistent with the full freedom of use specified in this license.
|
||||
|
||||
Most GNU software, including some libraries, is covered by the
|
||||
ordinary GNU General Public License. This license, the GNU Lesser
|
||||
General Public License, applies to certain designated libraries, and
|
||||
is quite different from the ordinary General Public License. We use
|
||||
this license for certain libraries in order to permit linking those
|
||||
libraries into non-free programs.
|
||||
|
||||
When a program is linked with a library, whether statically or using
|
||||
a shared library, the combination of the two is legally speaking a
|
||||
combined work, a derivative of the original library. The ordinary
|
||||
General Public License therefore permits such linking only if the
|
||||
entire combination fits its criteria of freedom. The Lesser General
|
||||
Public License permits more lax criteria for linking other code with
|
||||
the library.
|
||||
|
||||
We call this license the "Lesser" General Public License because it
|
||||
does Less to protect the user's freedom than the ordinary General
|
||||
Public License. It also provides other free software developers Less
|
||||
of an advantage over competing non-free programs. These disadvantages
|
||||
are the reason we use the ordinary General Public License for many
|
||||
libraries. However, the Lesser license provides advantages in certain
|
||||
special circumstances.
|
||||
|
||||
For example, on rare occasions, there may be a special need to
|
||||
encourage the widest possible use of a certain library, so that it becomes
|
||||
a de-facto standard. To achieve this, non-free programs must be
|
||||
allowed to use the library. A more frequent case is that a free
|
||||
library does the same job as widely used non-free libraries. In this
|
||||
case, there is little to gain by limiting the free library to free
|
||||
software only, so we use the Lesser General Public License.
|
||||
|
||||
In other cases, permission to use a particular library in non-free
|
||||
programs enables a greater number of people to use a large body of
|
||||
free software. For example, permission to use the GNU C Library in
|
||||
non-free programs enables many more people to use the whole GNU
|
||||
operating system, as well as its variant, the GNU/Linux operating
|
||||
system.
|
||||
|
||||
Although the Lesser General Public License is Less protective of the
|
||||
users' freedom, it does ensure that the user of a program that is
|
||||
linked with the Library has the freedom and the wherewithal to run
|
||||
that program using a modified version of the Library.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow. Pay close attention to the difference between a
|
||||
"work based on the library" and a "work that uses the library". The
|
||||
former contains code derived from the library, whereas the latter must
|
||||
be combined with the library in order to run.
|
||||
|
||||
GNU LESSER GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License Agreement applies to any software library or other
|
||||
program which contains a notice placed by the copyright holder or
|
||||
other authorized party saying it may be distributed under the terms of
|
||||
this Lesser General Public License (also called "this License").
|
||||
Each licensee is addressed as "you".
|
||||
|
||||
A "library" means a collection of software functions and/or data
|
||||
prepared so as to be conveniently linked with application programs
|
||||
(which use some of those functions and data) to form executables.
|
||||
|
||||
The "Library", below, refers to any such software library or work
|
||||
which has been distributed under these terms. A "work based on the
|
||||
Library" means either the Library or any derivative work under
|
||||
copyright law: that is to say, a work containing the Library or a
|
||||
portion of it, either verbatim or with modifications and/or translated
|
||||
straightforwardly into another language. (Hereinafter, translation is
|
||||
included without limitation in the term "modification".)
|
||||
|
||||
"Source code" for a work means the preferred form of the work for
|
||||
making modifications to it. For a library, complete source code means
|
||||
all the source code for all modules it contains, plus any associated
|
||||
interface definition files, plus the scripts used to control compilation
|
||||
and installation of the library.
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running a program using the Library is not restricted, and output from
|
||||
such a program is covered only if its contents constitute a work based
|
||||
on the Library (independent of the use of the Library in a tool for
|
||||
writing it). Whether that is true depends on what the Library does
|
||||
and what the program that uses the Library does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Library's
|
||||
complete source code as you receive it, in any medium, provided that
|
||||
you conspicuously and appropriately publish on each copy an
|
||||
appropriate copyright notice and disclaimer of warranty; keep intact
|
||||
all the notices that refer to this License and to the absence of any
|
||||
warranty; and distribute a copy of this License along with the
|
||||
Library.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy,
|
||||
and you may at your option offer warranty protection in exchange for a
|
||||
fee.
|
||||
|
||||
2. You may modify your copy or copies of the Library or any portion
|
||||
of it, thus forming a work based on the Library, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) The modified work must itself be a software library.
|
||||
|
||||
b) You must cause the files modified to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
c) You must cause the whole of the work to be licensed at no
|
||||
charge to all third parties under the terms of this License.
|
||||
|
||||
d) If a facility in the modified Library refers to a function or a
|
||||
table of data to be supplied by an application program that uses
|
||||
the facility, other than as an argument passed when the facility
|
||||
is invoked, then you must make a good faith effort to ensure that,
|
||||
in the event an application does not supply such function or
|
||||
table, the facility still operates, and performs whatever part of
|
||||
its purpose remains meaningful.
|
||||
|
||||
(For example, a function in a library to compute square roots has
|
||||
a purpose that is entirely well-defined independent of the
|
||||
application. Therefore, Subsection 2d requires that any
|
||||
application-supplied function or table used by this function must
|
||||
be optional: if the application does not supply it, the square
|
||||
root function must still compute square roots.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Library,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Library, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote
|
||||
it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Library.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Library
|
||||
with the Library (or with a work based on the Library) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may opt to apply the terms of the ordinary GNU General Public
|
||||
License instead of this License to a given copy of the Library. To do
|
||||
this, you must alter all the notices that refer to this License, so
|
||||
that they refer to the ordinary GNU General Public License, version 2,
|
||||
instead of to this License. (If a newer version than version 2 of the
|
||||
ordinary GNU General Public License has appeared, then you can specify
|
||||
that version instead if you wish.) Do not make any other change in
|
||||
these notices.
|
||||
|
||||
Once this change is made in a given copy, it is irreversible for
|
||||
that copy, so the ordinary GNU General Public License applies to all
|
||||
subsequent copies and derivative works made from that copy.
|
||||
|
||||
This option is useful when you wish to copy part of the code of
|
||||
the Library into a program that is not a library.
|
||||
|
||||
4. You may copy and distribute the Library (or a portion or
|
||||
derivative of it, under Section 2) in object code or executable form
|
||||
under the terms of Sections 1 and 2 above provided that you accompany
|
||||
it with the complete corresponding machine-readable source code, which
|
||||
must be distributed under the terms of Sections 1 and 2 above on a
|
||||
medium customarily used for software interchange.
|
||||
|
||||
If distribution of object code is made by offering access to copy
|
||||
from a designated place, then offering equivalent access to copy the
|
||||
source code from the same place satisfies the requirement to
|
||||
distribute the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
5. A program that contains no derivative of any portion of the
|
||||
Library, but is designed to work with the Library by being compiled or
|
||||
linked with it, is called a "work that uses the Library". Such a
|
||||
work, in isolation, is not a derivative work of the Library, and
|
||||
therefore falls outside the scope of this License.
|
||||
|
||||
However, linking a "work that uses the Library" with the Library
|
||||
creates an executable that is a derivative of the Library (because it
|
||||
contains portions of the Library), rather than a "work that uses the
|
||||
library". The executable is therefore covered by this License.
|
||||
Section 6 states terms for distribution of such executables.
|
||||
|
||||
When a "work that uses the Library" uses material from a header file
|
||||
that is part of the Library, the object code for the work may be a
|
||||
derivative work of the Library even though the source code is not.
|
||||
Whether this is true is especially significant if the work can be
|
||||
linked without the Library, or if the work is itself a library. The
|
||||
threshold for this to be true is not precisely defined by law.
|
||||
|
||||
If such an object file uses only numerical parameters, data
|
||||
structure layouts and accessors, and small macros and small inline
|
||||
functions (ten lines or less in length), then the use of the object
|
||||
file is unrestricted, regardless of whether it is legally a derivative
|
||||
work. (Executables containing this object code plus portions of the
|
||||
Library will still fall under Section 6.)
|
||||
|
||||
Otherwise, if the work is a derivative of the Library, you may
|
||||
distribute the object code for the work under the terms of Section 6.
|
||||
Any executables containing that work also fall under Section 6,
|
||||
whether or not they are linked directly with the Library itself.
|
||||
|
||||
6. As an exception to the Sections above, you may also combine or
|
||||
link a "work that uses the Library" with the Library to produce a
|
||||
work containing portions of the Library, and distribute that work
|
||||
under terms of your choice, provided that the terms permit
|
||||
modification of the work for the customer's own use and reverse
|
||||
engineering for debugging such modifications.
|
||||
|
||||
You must give prominent notice with each copy of the work that the
|
||||
Library is used in it and that the Library and its use are covered by
|
||||
this License. You must supply a copy of this License. If the work
|
||||
during execution displays copyright notices, you must include the
|
||||
copyright notice for the Library among them, as well as a reference
|
||||
directing the user to the copy of this License. Also, you must do one
|
||||
of these things:
|
||||
|
||||
a) Accompany the work with the complete corresponding
|
||||
machine-readable source code for the Library including whatever
|
||||
changes were used in the work (which must be distributed under
|
||||
Sections 1 and 2 above); and, if the work is an executable linked
|
||||
with the Library, with the complete machine-readable "work that
|
||||
uses the Library", as object code and/or source code, so that the
|
||||
user can modify the Library and then relink to produce a modified
|
||||
executable containing the modified Library. (It is understood
|
||||
that the user who changes the contents of definitions files in the
|
||||
Library will not necessarily be able to recompile the application
|
||||
to use the modified definitions.)
|
||||
|
||||
b) Use a suitable shared library mechanism for linking with the
|
||||
Library. A suitable mechanism is one that (1) uses at run time a
|
||||
copy of the library already present on the user's computer system,
|
||||
rather than copying library functions into the executable, and (2)
|
||||
will operate properly with a modified version of the library, if
|
||||
the user installs one, as long as the modified version is
|
||||
interface-compatible with the version that the work was made with.
|
||||
|
||||
c) Accompany the work with a written offer, valid for at
|
||||
least three years, to give the same user the materials
|
||||
specified in Subsection 6a, above, for a charge no more
|
||||
than the cost of performing this distribution.
|
||||
|
||||
d) If distribution of the work is made by offering access to copy
|
||||
from a designated place, offer equivalent access to copy the above
|
||||
specified materials from the same place.
|
||||
|
||||
e) Verify that the user has already received a copy of these
|
||||
materials or that you have already sent this user a copy.
|
||||
|
||||
For an executable, the required form of the "work that uses the
|
||||
Library" must include any data and utility programs needed for
|
||||
reproducing the executable from it. However, as a special exception,
|
||||
the materials to be distributed need not include anything that is
|
||||
normally distributed (in either source or binary form) with the major
|
||||
components (compiler, kernel, and so on) of the operating system on
|
||||
which the executable runs, unless that component itself accompanies
|
||||
the executable.
|
||||
|
||||
It may happen that this requirement contradicts the license
|
||||
restrictions of other proprietary libraries that do not normally
|
||||
accompany the operating system. Such a contradiction means you cannot
|
||||
use both them and the Library together in an executable that you
|
||||
distribute.
|
||||
|
||||
7. You may place library facilities that are a work based on the
|
||||
Library side-by-side in a single library together with other library
|
||||
facilities not covered by this License, and distribute such a combined
|
||||
library, provided that the separate distribution of the work based on
|
||||
the Library and of the other library facilities is otherwise
|
||||
permitted, and provided that you do these two things:
|
||||
|
||||
a) Accompany the combined library with a copy of the same work
|
||||
based on the Library, uncombined with any other library
|
||||
facilities. This must be distributed under the terms of the
|
||||
Sections above.
|
||||
|
||||
b) Give prominent notice with the combined library of the fact
|
||||
that part of it is a work based on the Library, and explaining
|
||||
where to find the accompanying uncombined form of the same work.
|
||||
|
||||
8. You may not copy, modify, sublicense, link with, or distribute
|
||||
the Library except as expressly provided under this License. Any
|
||||
attempt otherwise to copy, modify, sublicense, link with, or
|
||||
distribute the Library is void, and will automatically terminate your
|
||||
rights under this License. However, parties who have received copies,
|
||||
or rights, from you under this License will not have their licenses
|
||||
terminated so long as such parties remain in full compliance.
|
||||
|
||||
9. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Library or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Library (or any work based on the
|
||||
Library), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Library or works based on it.
|
||||
|
||||
10. Each time you redistribute the Library (or any work based on the
|
||||
Library), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute, link with or modify the Library
|
||||
subject to these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties with
|
||||
this License.
|
||||
|
||||
11. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Library at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Library by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Library.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under any
|
||||
particular circumstance, the balance of the section is intended to apply,
|
||||
and the section as a whole is intended to apply in other circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
12. If the distribution and/or use of the Library is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Library under this License may add
|
||||
an explicit geographical distribution limitation excluding those countries,
|
||||
so that distribution is permitted only in or among countries not thus
|
||||
excluded. In such case, this License incorporates the limitation as if
|
||||
written in the body of this License.
|
||||
|
||||
13. The Free Software Foundation may publish revised and/or new
|
||||
versions of the Lesser General Public License from time to time.
|
||||
Such new versions will be similar in spirit to the present version,
|
||||
but may differ in detail to address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Library
|
||||
specifies a version number of this License which applies to it and
|
||||
"any later version", you have the option of following the terms and
|
||||
conditions either of that version or of any later version published by
|
||||
the Free Software Foundation. If the Library does not specify a
|
||||
license version number, you may choose any version ever published by
|
||||
the Free Software Foundation.
|
||||
|
||||
14. If you wish to incorporate parts of the Library into other free
|
||||
programs whose distribution conditions are incompatible with these,
|
||||
write to the author to ask for permission. For software which is
|
||||
copyrighted by the Free Software Foundation, write to the Free
|
||||
Software Foundation; we sometimes make exceptions for this. Our
|
||||
decision will be guided by the two goals of preserving the free status
|
||||
of all derivatives of our free software and of promoting the sharing
|
||||
and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
|
||||
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
|
||||
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
|
||||
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
|
||||
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
|
||||
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
|
||||
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
||||
|
||||
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
|
||||
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
|
||||
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
|
||||
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
|
||||
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
|
||||
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
|
||||
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
|
||||
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
|
||||
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
|
||||
DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Libraries
|
||||
|
||||
If you develop a new library, and you want it to be of the greatest
|
||||
possible use to the public, we recommend making it free software that
|
||||
everyone can redistribute and change. You can do so by permitting
|
||||
redistribution under these terms (or, alternatively, under the terms of the
|
||||
ordinary General Public License).
|
||||
|
||||
To apply these terms, attach the following notices to the library. It is
|
||||
safest to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least the
|
||||
"copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the library's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This library is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Lesser General Public
|
||||
License as published by the Free Software Foundation; either
|
||||
version 2.1 of the License, or (at your option) any later version.
|
||||
|
||||
This library is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
Lesser General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the library, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the
|
||||
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1990
|
||||
Ty Coon, President of Vice
|
||||
|
||||
That's all there is to it!
|
|
@ -0,0 +1,662 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# Documentation/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/Makefile.am
|
||||
# Description: Ecasound documentation files
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = .
|
||||
top_srcdir = ..
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
subdir = Documentation
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
SUBDIRS = users_guide programmers_guide
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
man1_pages_to_install = \
|
||||
ecasound.1 \
|
||||
ecasound-iam.1 \
|
||||
ecatools.1 \
|
||||
ecaconvert.1 \
|
||||
ecafixdc.1 \
|
||||
ecalength.1 \
|
||||
ecaplay.1 \
|
||||
ecamonitor.1 \
|
||||
ecanormalize.1 \
|
||||
ecasignalview.1
|
||||
|
||||
man5_pages_to_install = \
|
||||
ecasoundrc.5
|
||||
|
||||
html_man_pages = \
|
||||
ecasound_manpage.html \
|
||||
ecasoundrc_manpage.html \
|
||||
ecatools_manpage.html \
|
||||
ecalength_manpage.html \
|
||||
ecasound-iam_manpage.html
|
||||
|
||||
EXTRA_DIST = $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-local
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
|
||||
clean clean-generic clean-libtool clean-recursive ctags \
|
||||
ctags-recursive distclean distclean-generic distclean-libtool \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-local
|
||||
|
||||
$(srcdir)/ecasound_manpage.yo \
|
||||
$(srcdir)/ecasoundrc_manpage.yo \
|
||||
$(srcdir)/ecasound-iam_manpage.yo \
|
||||
$(srcdir)/ecatools_manpage.yo \
|
||||
$(srcdir)/ecalength_manpage.yo \
|
||||
$(srcdir)/index.html \
|
||||
$(srcdir)/examples.html \
|
||||
$(srcdir)/manpages.html \
|
||||
$(srcdir)/tutorials.html \
|
||||
$(srcdir)/style_ecasound.css \
|
||||
$(srcdir)/ecasound_osc_interface.txt
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# local targets for generating docs from latex and yodl sources
|
||||
|
||||
all:
|
||||
|
||||
docs: docs-guides docs-manpages
|
||||
|
||||
docs-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
docs-manpages: $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Man pages
|
||||
|
||||
# following are copies of ecatools.1
|
||||
ecaconvert.1: ecatools.1
|
||||
cp ecatools.1 ecaconvert.1
|
||||
ecafixdc.1: ecatools.1
|
||||
cp ecatools.1 ecafixdc.1
|
||||
ecamonitor.1: ecatools.1
|
||||
cp -v ecatools.1 ecamonitor.1
|
||||
ecanormalize.1: ecatools.1
|
||||
cp -v ecatools.1 ecanormalize.1
|
||||
ecaplay.1: ecatools.1
|
||||
cp -v ecatools.1 ecaplay.1
|
||||
ecasignalview.1: ecatools.1
|
||||
cp -v ecatools.1 ecasignalview.1
|
||||
|
||||
%.1: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.5: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.html: $(srcdir)/%.yo
|
||||
yodl2html -o $@ $<
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# doxygen (target removed 2009/Feb)
|
||||
#doxygen:
|
||||
# doxygen doxygen_libkvutils_config
|
||||
# doxygen doxygen_libecasound_config
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Clean targets
|
||||
|
||||
clean:
|
||||
|
||||
clean-docs: clean-manpages clean-guides
|
||||
|
||||
clean-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
|
||||
clean-manpages:
|
||||
rm -f $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Install targets
|
||||
install-data-local:
|
||||
mkdir -p $(DESTDIR)$(mandir)/man1
|
||||
mkdir -p $(DESTDIR)$(mandir)/man5
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Uninstall targets
|
||||
uninstall-local:
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,128 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/Makefile.am
|
||||
# Description: Ecasound documentation files
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
prefix = @prefix@
|
||||
mandir = @mandir@
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
SUBDIRS = users_guide programmers_guide
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
|
||||
man1_pages_to_install = \
|
||||
ecasound.1 \
|
||||
ecasound-iam.1 \
|
||||
ecatools.1 \
|
||||
ecaconvert.1 \
|
||||
ecafixdc.1 \
|
||||
ecalength.1 \
|
||||
ecaplay.1 \
|
||||
ecamonitor.1 \
|
||||
ecanormalize.1 \
|
||||
ecasignalview.1
|
||||
|
||||
man5_pages_to_install = \
|
||||
ecasoundrc.5
|
||||
|
||||
html_man_pages = \
|
||||
ecasound_manpage.html \
|
||||
ecasoundrc_manpage.html \
|
||||
ecatools_manpage.html \
|
||||
ecalength_manpage.html \
|
||||
ecasound-iam_manpage.html
|
||||
|
||||
EXTRA_DIST = $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
$(srcdir)/ecasound_manpage.yo \
|
||||
$(srcdir)/ecasoundrc_manpage.yo \
|
||||
$(srcdir)/ecasound-iam_manpage.yo \
|
||||
$(srcdir)/ecatools_manpage.yo \
|
||||
$(srcdir)/ecalength_manpage.yo \
|
||||
$(srcdir)/index.html \
|
||||
$(srcdir)/examples.html \
|
||||
$(srcdir)/manpages.html \
|
||||
$(srcdir)/tutorials.html \
|
||||
$(srcdir)/style_ecasound.css \
|
||||
$(srcdir)/ecasound_osc_interface.txt
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# local targets for generating docs from latex and yodl sources
|
||||
|
||||
all:
|
||||
|
||||
docs: docs-guides docs-manpages
|
||||
|
||||
docs-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
docs-manpages: $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Man pages
|
||||
|
||||
# following are copies of ecatools.1
|
||||
ecaconvert.1: ecatools.1
|
||||
cp ecatools.1 ecaconvert.1
|
||||
ecafixdc.1: ecatools.1
|
||||
cp ecatools.1 ecafixdc.1
|
||||
ecamonitor.1: ecatools.1
|
||||
cp -v ecatools.1 ecamonitor.1
|
||||
ecanormalize.1: ecatools.1
|
||||
cp -v ecatools.1 ecanormalize.1
|
||||
ecaplay.1: ecatools.1
|
||||
cp -v ecatools.1 ecaplay.1
|
||||
ecasignalview.1: ecatools.1
|
||||
cp -v ecatools.1 ecasignalview.1
|
||||
|
||||
%.1: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.5: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.html: $(srcdir)/%.yo
|
||||
yodl2html -o $@ $<
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# doxygen (target removed 2009/Feb)
|
||||
#doxygen:
|
||||
# doxygen doxygen_libkvutils_config
|
||||
# doxygen doxygen_libecasound_config
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Clean targets
|
||||
|
||||
clean:
|
||||
|
||||
clean-docs: clean-manpages clean-guides
|
||||
|
||||
clean-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
|
||||
clean-manpages:
|
||||
rm -f $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Install targets
|
||||
install-data-local:
|
||||
mkdir -p $(DESTDIR)$(mandir)/man1
|
||||
mkdir -p $(DESTDIR)$(mandir)/man5
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Uninstall targets
|
||||
uninstall-local:
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done
|
|
@ -0,0 +1,662 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/Makefile.am
|
||||
# Description: Ecasound documentation files
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = Documentation
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
SUBDIRS = users_guide programmers_guide
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
man1_pages_to_install = \
|
||||
ecasound.1 \
|
||||
ecasound-iam.1 \
|
||||
ecatools.1 \
|
||||
ecaconvert.1 \
|
||||
ecafixdc.1 \
|
||||
ecalength.1 \
|
||||
ecaplay.1 \
|
||||
ecamonitor.1 \
|
||||
ecanormalize.1 \
|
||||
ecasignalview.1
|
||||
|
||||
man5_pages_to_install = \
|
||||
ecasoundrc.5
|
||||
|
||||
html_man_pages = \
|
||||
ecasound_manpage.html \
|
||||
ecasoundrc_manpage.html \
|
||||
ecatools_manpage.html \
|
||||
ecalength_manpage.html \
|
||||
ecasound-iam_manpage.html
|
||||
|
||||
EXTRA_DIST = $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool \
|
||||
distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-local
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
|
||||
clean clean-generic clean-libtool clean-recursive ctags \
|
||||
ctags-recursive distclean distclean-generic distclean-libtool \
|
||||
distclean-recursive distclean-tags distdir dvi dvi-am html \
|
||||
html-am info info-am install install-am install-data \
|
||||
install-data-am install-data-local install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am maintainer-clean maintainer-clean-generic \
|
||||
maintainer-clean-recursive mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
|
||||
tags tags-recursive uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-local
|
||||
|
||||
$(srcdir)/ecasound_manpage.yo \
|
||||
$(srcdir)/ecasoundrc_manpage.yo \
|
||||
$(srcdir)/ecasound-iam_manpage.yo \
|
||||
$(srcdir)/ecatools_manpage.yo \
|
||||
$(srcdir)/ecalength_manpage.yo \
|
||||
$(srcdir)/index.html \
|
||||
$(srcdir)/examples.html \
|
||||
$(srcdir)/manpages.html \
|
||||
$(srcdir)/tutorials.html \
|
||||
$(srcdir)/style_ecasound.css \
|
||||
$(srcdir)/ecasound_osc_interface.txt
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# local targets for generating docs from latex and yodl sources
|
||||
|
||||
all:
|
||||
|
||||
docs: docs-guides docs-manpages
|
||||
|
||||
docs-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
docs-manpages: $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Man pages
|
||||
|
||||
# following are copies of ecatools.1
|
||||
ecaconvert.1: ecatools.1
|
||||
cp ecatools.1 ecaconvert.1
|
||||
ecafixdc.1: ecatools.1
|
||||
cp ecatools.1 ecafixdc.1
|
||||
ecamonitor.1: ecatools.1
|
||||
cp -v ecatools.1 ecamonitor.1
|
||||
ecanormalize.1: ecatools.1
|
||||
cp -v ecatools.1 ecanormalize.1
|
||||
ecaplay.1: ecatools.1
|
||||
cp -v ecatools.1 ecaplay.1
|
||||
ecasignalview.1: ecatools.1
|
||||
cp -v ecatools.1 ecasignalview.1
|
||||
|
||||
%.1: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.5: $(srcdir)/%_manpage.yo
|
||||
yodl2man -o $@ $<
|
||||
|
||||
%.html: $(srcdir)/%.yo
|
||||
yodl2html -o $@ $<
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# doxygen (target removed 2009/Feb)
|
||||
#doxygen:
|
||||
# doxygen doxygen_libkvutils_config
|
||||
# doxygen doxygen_libecasound_config
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Clean targets
|
||||
|
||||
clean:
|
||||
|
||||
clean-docs: clean-manpages clean-guides
|
||||
|
||||
clean-guides:
|
||||
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
|
||||
|
||||
clean-manpages:
|
||||
rm -f $(man1_pages_to_install) \
|
||||
$(man5_pages_to_install) \
|
||||
$(html_man_pages)
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Install targets
|
||||
install-data-local:
|
||||
mkdir -p $(DESTDIR)$(mandir)/man1
|
||||
mkdir -p $(DESTDIR)$(mandir)/man5
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Uninstall targets
|
||||
uninstall-local:
|
||||
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
|
||||
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,76 @@
|
|||
.TH "ecalength" "1" "18\&.04\&.2004" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecalength \- prints audio file lenght and other information
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecalength\fP [-ahtsfmbcr] FILE1 [FILE2] [FILEn]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
This is ecalength, a few lines of code pompously named so because they
|
||||
let one retrieve the length of an audio file from the command line
|
||||
using ecasound\&'s engine\&.
|
||||
.PP
|
||||
Limitations:
|
||||
.IP ""
|
||||
- With files without header information (raw files), ecalength will only work
|
||||
correctly if the audio file is at a sampling rate of 44100 hz\&.
|
||||
(Addressed with the -a switch\&.)
|
||||
.IP ""
|
||||
- It is not foolproof, feeding it with something other than an audio
|
||||
file WILL result in ugly things being spewed back\&.
|
||||
(A bit better)
|
||||
.IP ""
|
||||
- A thousand more that I haven\&'t thought of\&.
|
||||
|
||||
.PP
|
||||
.SH "OPTIONS"
|
||||
|
||||
.PP
|
||||
.IP "-h"
|
||||
Prints this usage message\&. (help)
|
||||
.IP
|
||||
.IP "-a[:]bits,channels,rate"
|
||||
Changes the format assumed by default for headerless data\&. (adjust)
|
||||
.IP
|
||||
.IP "-t"
|
||||
Prints the summed length of all the files processed\&. (total)
|
||||
(Ignored if with -s)
|
||||
.IP
|
||||
.IP "-s"
|
||||
Enables script mode: One info type per file per line\&. (script)
|
||||
(Defaults to length in secs\&.)
|
||||
.IP
|
||||
.IP "-f"
|
||||
With -s will return the format string as info, alone it will
|
||||
add it to the main display\&. (format)
|
||||
.IP
|
||||
.IP "-b"
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the sample\&'s bitwidth\&. (bits)
|
||||
.IP
|
||||
.IP "-c"
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the channel count\&. (channel count)
|
||||
.IP
|
||||
.IP "-r"
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the sampling rate\&. (rate)
|
||||
.IP
|
||||
.IP "-m"
|
||||
Will print human computable time as in main display but in
|
||||
batch fashion\&. (minutes) (Only with -s)
|
||||
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound(1), ecatools(1)
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
S\&.Massy, <observer |at| colba\&.net <observer |at| colba\&.net>>
|
|
@ -0,0 +1,95 @@
|
|||
<html><head>
|
||||
<title>ecalength</title>
|
||||
<link rev="made" href="mailto:observer .at. colba .dot. net">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecalength</h1>
|
||||
<h2>18.04.2004</h2>
|
||||
|
||||
<html><head>
|
||||
<link rev="made" href="mailto:observer .at. colba .dot. net">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1></h1>
|
||||
|
||||
<html><head>
|
||||
<title>ecalength(1)</title>
|
||||
<link rev="made" href="mailto:observer .at. colba .dot. net">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecalength(1)</h1>
|
||||
<h2> Multimedia software</h2>
|
||||
<h2>18.04.2004</h2>
|
||||
|
||||
|
||||
<p>
|
||||
<h2>NAME</h2>ecalength - prints audio file lenght and other information
|
||||
<p>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<strong>ecalength</strong> [-ahtsfmbcr] FILE1 [FILE2] [FILEn]
|
||||
<p>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<p>
|
||||
This is ecalength, a few lines of code pompously named so because they
|
||||
let one retrieve the length of an audio file from the command line
|
||||
using ecasound's engine.
|
||||
<p>
|
||||
Limitations:
|
||||
<dl>
|
||||
<p><dt><strong></strong><dd>- With files without header information (raw files), ecalength will only work
|
||||
correctly if the audio file is at a sampling rate of 44100 hz.
|
||||
(Addressed with the -a switch.)
|
||||
<p><dt><strong></strong><dd> - It is not foolproof, feeding it with something other than an audio
|
||||
file WILL result in ugly things being spewed back.
|
||||
(A bit better)
|
||||
<p><dt><strong></strong><dd> - A thousand more that I haven't thought of.
|
||||
</dl>
|
||||
<p>
|
||||
<h2>OPTIONS</h2>
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>-h</strong><dd>
|
||||
Prints this usage message. (help)
|
||||
<p>
|
||||
<p><dt><strong>-a[:]bits,channels,rate</strong><dd>
|
||||
Changes the format assumed by default for headerless data. (adjust)
|
||||
<p>
|
||||
<p><dt><strong>-t</strong><dd>
|
||||
Prints the summed length of all the files processed. (total)
|
||||
(Ignored if with -s)
|
||||
<p>
|
||||
<p><dt><strong>-s</strong><dd>
|
||||
Enables script mode: One info type per file per line. (script)
|
||||
(Defaults to length in secs.)
|
||||
<p>
|
||||
<p><dt><strong>-f</strong><dd>
|
||||
With -s will return the format string as info, alone it will
|
||||
add it to the main display. (format)
|
||||
<p>
|
||||
<p><dt><strong>-b</strong><dd>
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the sample's bitwidth. (bits)
|
||||
<p>
|
||||
<p><dt><strong>-c</strong><dd>
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the channel count. (channel count)
|
||||
<p>
|
||||
<p><dt><strong>-r</strong><dd>
|
||||
If -s and -f are enabled with this the info printed will be
|
||||
the sampling rate. (rate)
|
||||
<p>
|
||||
<p><dt><strong>-m</strong><dd>
|
||||
Will print human computable time as in main display but in
|
||||
batch fashion. (minutes) (Only with -s)
|
||||
</dl>
|
||||
<p>
|
||||
<h2>SEE ALSO</h2>
|
||||
<p>
|
||||
ecasound(1), ecatools(1)
|
||||
<p>
|
||||
<h2>AUTHOR</h2>
|
||||
<p>
|
||||
S.Massy, <<a href="mailto:observer |at| colba.net"><em>observer |at| colba.net</em></a>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,722 @@
|
|||
.TH "ecasound-iam" "1" "11\&.10\&.2009" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecasound-iam \- ecasound interactive mode
|
||||
.SH "SYNOPSIS"
|
||||
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecasound library contains an interpreter module that understands
|
||||
a set of commands aimed at controlling various library services\&.
|
||||
This is called the ecasound interactive mode (EIAM)\&. All programs
|
||||
linked to ecasound library can use this facility\&.
|
||||
.PP
|
||||
.SH "ECI API and return types"
|
||||
A special case of interactive mode use is ecasound\&'s control interface (ECI),
|
||||
which is a small library providing easy access to the interactive
|
||||
mode commands from outside of libecasound\&. When issuing inter commands using
|
||||
the control interface, it\&'s possible that commands also return information\&.
|
||||
Currently supported return value types are: string [s], list of strings [S]
|
||||
(elements separated by commas; escaped if necessary), integer [i],
|
||||
long integer [li] and floating-point number [f]\&. These definitions are
|
||||
used throughout this document\&. Commands that return nothing (void) are
|
||||
marked with [-]\&. Additionally, return type [e] marks an error condition\&.
|
||||
When an interactive mode command results in an error, an error string
|
||||
explaining the condition is returned\&.
|
||||
.PP
|
||||
.SH "Real-time commands"
|
||||
It\&'s not possible to use all interactive mode commands to modify and
|
||||
control objects that belong to a connected chainsetup\&. Commands that
|
||||
do NOT support this are:
|
||||
.PP
|
||||
.RS
|
||||
cs-remove, cs-set-length, cs-set-length-samples, cs-toggle-loop,
|
||||
cs-set-param, cs-option,
|
||||
c-add, c-remove, c-rename, c-clear,
|
||||
ai-add, ai-remove, ai-attach, ai-forward, ai-rewind, ai-set-position,
|
||||
ai-set-position-samples,
|
||||
ao-add, ao-add-default, ao-remove, ao-attach, ao-forward, ao-rewind,
|
||||
ao-set-position, ao-set-position-samples\&.
|
||||
.RE
|
||||
|
||||
.PP
|
||||
If one of these commands is issued when a chainsetup is connected,
|
||||
ecasound will first stop and disconnect the chainsetup, process
|
||||
the command, and the reconnect\&.
|
||||
.PP
|
||||
In addition, most non-modifying (const) commands work with
|
||||
connected setups\&.
|
||||
.PP
|
||||
.SH "GENERAL"
|
||||
.IP "quit, q"
|
||||
Quit ecasound session\&. What this means in practice depends on the
|
||||
client implementation\&. In ecasound interactive mode, \&'quit\&' terminates
|
||||
the ecasound process\&. When sent over ecasound server connection (aka
|
||||
NetECI), \&'quit\&' terminates the active network connection, but does not
|
||||
terminate the ecasound server process\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "start, t"
|
||||
Processing is started (play)\&. Error string is return if any errors upon
|
||||
startup are encountered\&. \fI[e]\fP
|
||||
.IP
|
||||
.IP "stop, s"
|
||||
Stop processing\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "run"
|
||||
Like \&'start\&' but blocks until processing is finished\&. Error string
|
||||
is return if any errors upon startup, or during process, are
|
||||
encountered\&. \fI[e]\fP
|
||||
.IP
|
||||
.IP "debug \&'debug-level\&'"
|
||||
Set debug level to \&'debug-level\&'\&. Notice that client programs can
|
||||
reimplement the debug routines\&. \fI[-]\fP
|
||||
|
||||
.PP
|
||||
.IP "resource-file \&'path-to-file\&'"
|
||||
Overrides the global and user resource files\&. Does not affect
|
||||
already created objects\&. This command is equivalent to \&'-R\&' ecasound
|
||||
option (see ecasound (1) man page)\&.
|
||||
.PP
|
||||
.IP "-prefix:arg1,\&.\&.\&.,argN"
|
||||
Equivalent to issuing \&'cs-option -prefix:arg1,\&.\&.\&.,argN)\&. See documentation
|
||||
for \&'cs-option\&'\&.
|
||||
.PP
|
||||
.IP "help\&', \&'h\&'"
|
||||
Help! \fI[-]\fP
|
||||
.PP
|
||||
.SH "GLOBAL"
|
||||
|
||||
.IP
|
||||
.IP "engine-status"
|
||||
Returns a string describing the engine status (running, stopped,
|
||||
finished, error, not ready)\&. See also \fIcs-status\fP\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "engine-launch"
|
||||
Starts the real-time engine\&. Engine will execute the currently
|
||||
connected chainsetup (see \&'cs-connect)\&. This action does not yet
|
||||
start actual processing (see \fIstart\fP and \fIstop\fP)\&. When
|
||||
ecasound is used as a JACK client, issuing \fIengine-launch\fP
|
||||
makes ecasound an active JACK client (i\&.e\&. ecasound\&'s ports
|
||||
can be connected to other JACK clients)\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "engine-halt"
|
||||
Stops the engine\&. Does not disconnect the chainsetup that
|
||||
was running\&. See also \fIcs-disconnet\fP and \fIstop\fP\&. When
|
||||
ecasound is used as a JACK client, \fIengine-halt\fP will
|
||||
cause ecasound to become a deactivated client (all JACK
|
||||
connections are torn down)\&. \fI[-]\fP
|
||||
.PP
|
||||
.SH "CHAINSETUPS"
|
||||
Chainsetup is the central data object\&. All other objects (inputs,
|
||||
outputs, chains, etc) are connected to some chainsetup\&. There can be
|
||||
many chainsetups but only one can be connected\&. Similarly only
|
||||
one chainsetup can be selected\&. If not otherwise specified operations
|
||||
are done on the selected chainsetup\&. Some operations also require
|
||||
that selected chainsetup is not connected\&.
|
||||
.IP
|
||||
.IP "cs-add \&'name\&'"
|
||||
Adds a new chainsetup with name \&'name\&'\&. \&'name\&' is now
|
||||
the selected chainsetup\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-remove"
|
||||
Removes currently selected chainsetup\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-list"
|
||||
Returns a list of all chainsetups\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "cs-select \&'name\&'"
|
||||
Selects chainsetup \&'name\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-selected"
|
||||
Returns the name of currently selected chainsetup\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "cs-index-select \&'cs_index\&', cs-iselect \&'cs_index\&'"
|
||||
Selects a chainsetup based on a short index string\&. Chainsetup names
|
||||
can be rather long\&. This command can be used to avoid typing
|
||||
these long names\&. \&'cs_index\&' is an integer value, where \&'1\&' refers to
|
||||
the first audio input/output\&. You can use \&'cs-list\&' and \&'cs-status\&'
|
||||
to get a full list of currently available chainsetups\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-load \&'filename\&'"
|
||||
Adds a new chainsetup by loading it from file \&'filename\&'\&.
|
||||
\&'filename\&' is now the selected chainsetup\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-save"
|
||||
Saves the currently selected chainsetup to file\&. If chainsetup was loaded
|
||||
from a file, the saved version will replace the original\&. If it doesn\&'t
|
||||
have a default filename, it\&'s saved to "chainsetup_name\&.ecs"\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-save-as \&'filename\&'"
|
||||
Saves currently selected chainsetup to file \&'filename\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-edit"
|
||||
Currently selected chainsetup is saved to a temporary file\&. This
|
||||
file is loaded to an external editor (see ecasoundrc (5))\&. After
|
||||
editing, the chainsetup is loaded back to ecasound\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-is-valid"
|
||||
Whether currently selected chainsetup is valid (=can be connected)? \fI[i]\fP
|
||||
.PP
|
||||
.IP "cs-connect"
|
||||
Connect currently selected chainsetup to engine\&. When connecting,
|
||||
all resources (e\&.g\&. files, soundcard devices, external programs) needed
|
||||
to execute the chainsetup are reserved\&. Only one chainsetup can be connected
|
||||
at a time\&. Error string is returned if connection fails (for instance
|
||||
due to error in allocating the resources)\&. \fI[e]\fP
|
||||
.PP
|
||||
.IP "cs-disconnect"
|
||||
Disconnect currently connected chainsetup\&. This action will free
|
||||
all external resources needed by the chainsetup\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-connected"
|
||||
Returns the name of currently connected chainsetup\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "cs-rewind \&'time-in-seconds\&', rewind \&'time-in-seconds\&', rw \&'time-in-seconds\&'"
|
||||
Rewinds the current chainsetup position by \&'time-in-seconds\&' seconds\&.
|
||||
Position of all inputs and outputs attached to the selected chainsetup
|
||||
is also affected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-forward \&'time-in-seconds\&', forward \&'time-in-seconds\&', fw \&'ttime-in-seconds\&'"
|
||||
The current chainsetup position is forwarded by \&'time-in-seconds\&'
|
||||
seconds\&. Position of all inputs and outputs attached to the selected chainsetup
|
||||
is also affected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-set-position \&'time-in-seconds\&', cs-setpos \&'time-in-seconds\&', setpos \&'time-in-seconds\&', set-position \&'time-in-seconds\&'"
|
||||
Sets the chainsetup position to \&'time-in-seconds\&' seconds from the
|
||||
beginning\&. Position of all inputs and outputs attached to the selected
|
||||
chainsetup is also affected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-set-position-samples \&'time-in-samples\&'"
|
||||
Sets the chainsetup position to \&'time-in-samples\&' samples from the
|
||||
beginning\&. Position of all inputs and outputs attached to the selected
|
||||
chainsetup is also affected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-get-position, cs-getpos, getpos, get-position"
|
||||
Returns the current chainsetup position in seconds\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "cs-get-position-samples"
|
||||
Returns the current chainsetup position in samples\&. \fI[li]\fP
|
||||
.PP
|
||||
.IP "cs-get-length, get-length"
|
||||
Returns the chainsetup length in seconds (if known)\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "cs-get-length-samples, get-length-samples"
|
||||
Returns the chainsetup length in samples (if known)\&. \fI[li]\fP
|
||||
.PP
|
||||
.IP "cs-set-length \&'seconds\&'"
|
||||
Sets processing time in seconds (doesn\&'t have to be an integer value)\&.
|
||||
A special-case value of \&'-1\&' will set the chainsetup length
|
||||
according to the longest input object\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-set-length-samples \&'samples\&'"
|
||||
Sets processing time in samples\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-toggle-loop"
|
||||
Toggle looping\&. When processing is finished, engine will start
|
||||
again from the initial position\&. It\&'s not always possible to enable looping
|
||||
(for instance all inputs and outputs have infinite length and
|
||||
chainsetup length is not explicitly set with \&'cs-set-length\&')\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-set-param"
|
||||
Interpret general chainsetup parameters like for example
|
||||
"-b" (buffersize), "-n" (name), etc\&. See ecasound (1) for
|
||||
more info\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-set-audio-format \&'bits,channels,sample_rate\&'"
|
||||
Set the default sample parameters for currently selected chainsetup\&.
|
||||
For example cd-quality audio would be "16,2,44100"\&. This does the
|
||||
same as command-line argument "-f" (see ecasound (1))\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cs-status, status, st"
|
||||
Prints out status information about available chainsetup\&.
|
||||
Detailed information is printed out for connected (=available
|
||||
for running) nd selected (=available for editing) chainsetups\&.
|
||||
Other chainsetups are listed, but further details are
|
||||
suppressed\&. To get full details of a specific chainsetup,
|
||||
select it with \&'cs-select\&' or \&'cs-iselect\&', and then
|
||||
issue \&'cs-select\&'\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "cs-option \&'-prefix:arg1,\&.\&.\&.,argN\&'"
|
||||
One powerful feature of the interactive-mode is that it
|
||||
provides full access to ecasound\&'s command-line syntax\&.
|
||||
For instance, command "cs-option -efb:400,200" means that
|
||||
a bandpass filter is added to the currently selected
|
||||
chain, with initial parameters 400 (center frequency)
|
||||
and 200 (width in Hz)\&.
|
||||
.PP
|
||||
Note that session level options (such as setting debug level)
|
||||
can not be used with \&'cs-option\&' (i\&.e\&. only options that modify
|
||||
chainsetups)\&.
|
||||
.PP
|
||||
Note! Ecasound interactive mode implicitly interprets all strings
|
||||
beginning with a \&'-\&' as "cs-option string"\&.
|
||||
|
||||
.IP
|
||||
.SH "CHAINS"
|
||||
Chain is a simple signal flow abstraction\&. Every chain has one input
|
||||
and one output\&. All chain operators and their controllers are attached
|
||||
to chains\&. Chains can be muted, unmuted and be bypassed\&. If not
|
||||
otherwise stated, all operations are done to currently selected
|
||||
chainsetup\&.
|
||||
.IP
|
||||
.IP "c-add \&'cname1,\&.\&.\&.,cnameN\&'"
|
||||
Adds a set of chains\&. Added chains are automatically selected\&. Note
|
||||
that commas in chain names are not allowed\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-remove"
|
||||
Removes selected chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-list"
|
||||
Returns a list of all chains\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "c-select \&'cname1,\&.\&.\&.,cnameN\&'"
|
||||
Selects chains\&. Other chains are automatically deselected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-index-select \&'index1,\&.\&.\&.,indexN\&', c-iselect \&'index1,\&.\&.\&.,indexN\&'"
|
||||
Selects a set of chains based on the list of indixes\&. Each index is
|
||||
an integer value, where \&'1\&' refers to the first chain\&. You can use
|
||||
\&'c-list\&' and \&'c-status\&' to get a full list of currently available
|
||||
chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-select-all"
|
||||
Selects all chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-select-add \&'cname1,\&.\&.\&.,cnameN\&'"
|
||||
Selects more chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-deselect \&'cname1,\&.\&.\&.,cnameN\&'"
|
||||
Deselects chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-selected"
|
||||
Returns a list of selected chains\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "c-clear"
|
||||
Clear selected chains by removing all chain operators and controllers\&.
|
||||
Doesn\&'t change how chains are connected to inputs and outputs\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-rename \&'new_name\&'"
|
||||
Renames the selected chain\&. When using this command, exactly one chain must
|
||||
be selected\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-muting, c-mute"
|
||||
Toggle chain muting\&. When chain is muted, all data that goes through
|
||||
is muted\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-bypass"
|
||||
Toggle chain bypassing\&. When chain is bypassed, sample data is passed
|
||||
through unprocessed (all chain operators are disabled for the given
|
||||
chain)\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "c-status, cs"
|
||||
Print status info about all chains\&. \fI[s]\fP
|
||||
.PP
|
||||
.SH "AUDIO INPUT/OUTPUT OBJECTS"
|
||||
If not otherwise stated, all operations are done to currently selected
|
||||
object\&. All commands with \fIai-\fP prefix operate on audio inputs,
|
||||
while commands with \fIao-\fP operate on outputs\&.
|
||||
.IP
|
||||
.IP "ai-add \&'input_format_string\&'"
|
||||
Adds a new input object\&. See ecasound (1) man page for more info about
|
||||
the argument format (\&'-i\&' option)\&. Note on syntax: if any of
|
||||
the parameters (such as a filename) contains commas, the parameter
|
||||
should be enclosed in double-quotes\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ao-add \&'output_format_string\&'"
|
||||
Adds a new output object\&. See ecasound (1) man page for more info about
|
||||
the argument format (\&'-o\&' option)\&. If argument is omitted,
|
||||
a default output device is added (see ecasoundrc (5))\&. Note on syntax: if any
|
||||
of the parameters (such as a filename) contains commas, the parameter
|
||||
should be enclosed in double-quotes\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ao-add-default"
|
||||
Adds the default output device (see ecasoundrc (5))\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-describe, ao-describe"
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the input/output\&. See the Ecasound User\&'s Guide
|
||||
for more information about EOS\&. This command was introduced in
|
||||
ecasound 2\&.4\&.4\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "ai-select \&'aobject_name\&', ao-select \&'aobject_name\&'"
|
||||
Selects an audio object\&. \&'aobject_name\&' refers to the string
|
||||
used when creating the object (the first argument given to ai-add/ao-add)\&.
|
||||
Note that as a important difference to ai-add/ao-add, one should not
|
||||
enclose the object name in double quotes for ai-select/ao-select\&. In the
|
||||
case a chainsetup contains multiple inputs, or outputs, with
|
||||
identical name, \&'ai-select\&' and \&'ao-select\&' will select
|
||||
the first matching instance\&. In order to select a specific
|
||||
instance, the \&'ai-iselect\&' and \&'ao-iselect\&' commands need to
|
||||
be used\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-index-select \&'aobject_index\&', ai-iselect \&'aobject_index\&', ao-index-select \&'aobject_index\&', ao-iselect \&'aobject_index\&'"
|
||||
Select some audio object based on a short index string\&. Especially file
|
||||
names can be rather long\&. This command can be used to avoid typing
|
||||
these long names when selecting audio objects\&. \&'aobject_index\&' is
|
||||
an integer value, where \&'1\&' refers to the first audio input/output\&.
|
||||
You can use \&'ai-list\&' and \&'ao-list\&' to get a full list of currently
|
||||
available inputs/outputs\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-selected, ao-selected"
|
||||
Returns the name of the currently selected audio object\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "ai-attach, ao-attach"
|
||||
Attaches the currently selected audio object to all selected chains\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-remove, ao-remove"
|
||||
Removes the currently selected audio object from the chainsetup\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-forward \&'time_in_seconds\&', ai-fw \&'time_in_seconds\&', ao-forward \&'time_in_seconds\&', ao-fw \&'time_in_seconds\&'"
|
||||
Selected audio object is forwarded by \&'time-in-seconds\&' seconds\&.
|
||||
Time should be given as a floating point value (eg\&. 0\&.001 is the
|
||||
same as 1ms)\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-rewind \&'time_in_seconds\&', ai-rw \&'time_in_seconds\&', ao-rewind \&'time_in_seconds\&', ao-rw \&'time_in_seconds\&'"
|
||||
Selected audio object is rewinded by \&'time-in-seconds\&' seconds\&.
|
||||
Time should be given as a floating point value (eg\&. 0\&.001 is the
|
||||
same as 1ms)\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-setpos \&'time_in_seconds\&', ai-set-position \&'time_in_seconds\&', ao-setpos \&'time_in_seconds\&', ao-set-position \&'time_in_seconds\&'"
|
||||
Set audio object position to \&'time_in_seconds\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-set-position-samples \&'time_in_samples\&', ao-set-position-samples \&'time_in_samples\&'"
|
||||
Set audio object position to \&'time_in_samples\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "ai-getpos, ai-get-position, ao-getpos, ao-get-position"
|
||||
Returns the audio object position in seconds\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "ai-get-position-samples, ao-get-position-samples"
|
||||
Returns the audio object position in samples\&. \fI[li]\fP
|
||||
.PP
|
||||
.IP "ai-get-length, ao-get-length"
|
||||
Returns the audio object length in seconds\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "ai-get-length-samples, ao-get-length-samples"
|
||||
Returns the audio object length in samples\&. \fI[li]\fP
|
||||
.PP
|
||||
.IP "ai-get-format, ao-get-format"
|
||||
Returns the audio format of the selected audio input/output as a
|
||||
formatted string\&. See documentation for \&'-f\&' command-line option\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "ai-list, ao-list"
|
||||
Returns a list of all input/output objects\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "aio-register"
|
||||
Prints a list of registered audio object types\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "aio-status"
|
||||
Audio object status (index strings, position, length, etc)\&. \fI[s]\fP
|
||||
.PP
|
||||
.SH "CHAIN OPERATORS"
|
||||
Chain operators are used to process and analyze sample data\&.
|
||||
They are attached to chains\&. If not otherwise stated,
|
||||
currently selected chainsetup and chain are used\&. Also,
|
||||
\&'chainop_id\&' and \&'param_id\&' are used to select chain operators
|
||||
and their parameters\&. First valid value for these parameters
|
||||
is 1\&.
|
||||
.IP
|
||||
.IP "cop-add \&'cop_format_string\&'"
|
||||
Adds a new chain operator\&. In addition to normal chain operators,
|
||||
this commmand can also be used to add effect presets and various
|
||||
plugins\&. Note; it is not possible to add operators to multiple
|
||||
chains at once\&. In other words only one chain should be selected
|
||||
when issuing \&'cop-add\&'\&. See ecasound (1) man page for more info\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cop-describe"
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the chain operator\&. See the Ecasound User\&'s Guide
|
||||
for more information about EOS\&. This command was introduced in
|
||||
ecasound 2\&.4\&.4\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "cop-remove"
|
||||
Removes the selected chain operator\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cop-list"
|
||||
Returns a list of all chain operators attached to the currently
|
||||
selected chain\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "cop-select \&'param_id\&', cop-index-select \&'param_id\&', cop-iselect \&'param_id\&'"
|
||||
Selects a chain operator\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cop-selected"
|
||||
Returns the index number of currently selected chain operator\&. \fI[i]\fP
|
||||
.PP
|
||||
.IP "cop-set \&'chainop_id,param_id,value\&'"
|
||||
Changes the value of a single chain operator parameter\&. Unlike other
|
||||
chain operator commands, this can also be used during processing\&.
|
||||
See also \&'cop-get\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "cop-get \&'chainop_id,param_id\&'"
|
||||
Returns the current value of chain operator parameter identified by
|
||||
\&'chainop_id\&' and \&'param_id\&'\&. This command is a shorthand for
|
||||
\&'cop-select chainop_id ; copp-iselect param_id ; copp-get\&'\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "cop-status"
|
||||
Returns info about chain operator status\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "copp-list"
|
||||
Returns a list of selected chain operator\&'s parameters\&. \fI[S]\fP
|
||||
.PP
|
||||
.IP "copp-select \&'param_id\&', copp-index-select \&'param_id\&', copp-iselect \&'param_id\&'"
|
||||
Selects a chain operator parameter\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "copp-selected"
|
||||
Returns the index number of currently selected chain operator parameter\&. \fI[i]\fP
|
||||
.PP
|
||||
.IP "copp-set \&'value\&'"
|
||||
Sets the selected parameter value to \&'value\&'\&. \fI[-]\fP
|
||||
.PP
|
||||
.IP "copp-get"
|
||||
Returns the selected parameter value\&. See also \&'cop-get\&'\&. \fI[f]\fP
|
||||
.PP
|
||||
.IP "cop-register"
|
||||
Prints a list of registered chain operators\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "preset-register"
|
||||
Prints a list of registered effect presets\&. \fI[s]\fP
|
||||
.PP
|
||||
.IP "ladspa-register"
|
||||
Prints a list of registered LADSPA plugins\&. \fI[s]\fP
|
||||
.PP
|
||||
.SH "CONTROLLERS"
|
||||
Controllers are used to control individual chain operator parameters\&.
|
||||
They are attached to chains\&. If not otherwise stated, currently
|
||||
selected chainsetup and chains are used\&.
|
||||
.IP
|
||||
.IP "ctrl-add \&'copc_format_string\&'"
|
||||
Adds a new controller and attach it to currently selected chain
|
||||
operator\&. The argument syntax is either "-<id_string>:par1,\&.\&.\&.,parN"
|
||||
or just "<id_string>:par1,\&.\&.\&.,parN"\&. If parameter itself contains
|
||||
commas, the parameter should be enclosed in double-quotes\&.
|
||||
See ecasound (1) man page for more info\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "ctrl-describe"
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the controller\&. See the Ecasound User\&'s Guide
|
||||
for more information about EOS\&. This command was introduced in
|
||||
ecasound 2\&.4\&.4\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "ctrl-remove"
|
||||
Removes the selected controller\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "ctrl-list"
|
||||
Returns a list of all controllers attached to the currently
|
||||
selected chain\&. \fI[S]\fP
|
||||
.IP
|
||||
.IP "ctrl-select \&'param_id\&', ctrl-index-select \&'param_id\&', ctrl-iselect \&'param_id\&'"
|
||||
Selects a controller\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "ctrl-selected"
|
||||
Returns the index number of currently selected controller\&. \fI[i]\fP
|
||||
.IP
|
||||
.IP "ctrl-status"
|
||||
Returns info about controller status\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "ctrl-register"
|
||||
Prints a list of registered controllers\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "ctrl-get-target"
|
||||
Returns the index number of the chain operator that is
|
||||
connected to the selected controller\&. The returned index
|
||||
refers to the currently selected chain (see \&'cop-list\&')\&. \fI[i]\fP
|
||||
.IP
|
||||
.IP "ctrlp-list"
|
||||
Returns a list of all controller parameters\&. This command was introduced in
|
||||
ecasound 2\&.4\&.2\&. \fI[S]\fP
|
||||
.IP
|
||||
.IP "ctrlp-select"
|
||||
Selects a controller parameter\&. This command was introduced in
|
||||
ecasound 2\&.4\&.2\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "ctrlp-selected"
|
||||
Returns the index number of currently selected controller parameter\&. This command
|
||||
was introduced in ecasound 2\&.4\&.2\&. \fI[i]\fP
|
||||
.IP
|
||||
.IP "ctrlp-get"
|
||||
Returns the selected controller parameter value\&. This command was introduced in
|
||||
ecasound 2\&.4\&.2\&. \fI[f]\fP
|
||||
.IP
|
||||
.IP "ctrlp-set"
|
||||
Sets the selected controller parameter value to \&'value\&'\&. This command was introduced in
|
||||
ecasound 2\&.4\&.2\&. \fI[-]\fP
|
||||
.IP
|
||||
.SH "JACK CONNECTION MANAGEMENT"
|
||||
If Ecasound is compiled with support for JACK audio server,
|
||||
the following set of commands is provided for controlling connections
|
||||
between JACK ports\&.
|
||||
.IP
|
||||
.IP "jack-connect \&'src-port\&' \&'dest-port\&'"
|
||||
Make a connection between the two ports given as parameters\&. This command
|
||||
is similar to the \&'jack_connect\&' command line tool that is distributed
|
||||
with JACK package\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "jack-disconnect \&'src-port\&' \&'dest-port\&'"
|
||||
Disconnect the two ports given as parameters\&. This command is similar
|
||||
to the \&'jack_disconnect\&' command line tool that is distributed
|
||||
with JACK package\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "jack-list-connections"
|
||||
Returns a list of all JACK ports and a list of connections
|
||||
for each port\&. This command is similar to the \&'jack_lsp\&' command
|
||||
line tool (e\&.g\&. \&'jack_lsp -c\&') that is distributed with JACK package\&. \fI[s]\fP
|
||||
.IP
|
||||
.SH "INTERNAL COMMANDS"
|
||||
Internal commands are not directly aimed at normal use\&. They
|
||||
are primarily meant for use in scripting and frontends\&.
|
||||
.IP
|
||||
.IP "int-cmd-list"
|
||||
Returns a list of all registered interactive mode commands\&. \fI[S]\fP
|
||||
.IP
|
||||
.IP "int-log-history"
|
||||
Returns recent log messages sent by libecasound modules\&. This
|
||||
is a good tool for debugging ECI/EIAM scripts and applications\&. This
|
||||
command was introduced in ecasound 2\&.4\&.0\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "int-output-mode-wellformed"
|
||||
Select the well-format output format for log messages\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "int-set-float-to-string-precision"
|
||||
Sets precision used in float to text conversions\&. Note that
|
||||
this can be used to control the precision of float return values
|
||||
for ECI commands\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "int-set-log-history-length"
|
||||
Sets the log history length\&. Defaults to 0 items\&.
|
||||
This command was introduced in ecasound 2\&.4\&.0\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "int-cmd-version-string"
|
||||
Returns ecasound interactive mode parser version string\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "int-cmd-version-lib-current"
|
||||
Returns ecasound interactive mode library interface version (libtool)\&. \fI[i]\fP
|
||||
.IP
|
||||
.IP "int-cmd-version-lib-revision"
|
||||
Returns ecasound interactive mode library interface revision (libtool)\&. \fI[i]\fP
|
||||
.IP
|
||||
.IP "int-cmd-version-lib-age"
|
||||
Returns ecasound interactive mode library interface age (libtool)\&. \fI[i]\fP
|
||||
.IP
|
||||
.SH "OBJECT MAPS"
|
||||
Object maps are central repositories for commonly used object types\&.
|
||||
By querying the maps, applications can get a list of all registered
|
||||
object types and their properties\&.
|
||||
.IP
|
||||
.IP "map-cop-list"
|
||||
Prints a list of registered chain operators using
|
||||
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "map-preset-list"
|
||||
Prints a list of registered effect presets using
|
||||
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "map-ladspa-list"
|
||||
Prints a list of registered LADSPA plugins using
|
||||
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "map-ladspa-id-list"
|
||||
Prints a list of registered LADSPA plugins using
|
||||
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&.
|
||||
Numerical LADPSA plugin identifiers are used\&. \fI[s]\fP
|
||||
.IP
|
||||
.IP "map-ctrl-list"
|
||||
Prints a list of registered controllers using
|
||||
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
|
||||
.IP
|
||||
.SH "DUMP COMMANDS"
|
||||
The following dump commands are not meant for normal use\&.
|
||||
Their primary purpose is to provide an easy way to get
|
||||
internal state information from libecasound\&. All dump
|
||||
commands output a single line with syntax "key value"
|
||||
to the selected output stream (defaults to stdout)\&.
|
||||
.IP
|
||||
.IP "dump-target \&'filename\&'"
|
||||
Set target stream for dumping\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-status"
|
||||
Dumps engine status - \&'running\&', \&'stopped\&', \&'finished\&' or \&'notready\&'\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-position"
|
||||
Dumps the global position\&. Printed in seconds using a floating-point
|
||||
representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-length"
|
||||
Dumps the overall processing length\&. Printed in seconds using a floating-point
|
||||
representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-cs-status"
|
||||
Dumps status string for the currently selected chainsetup - \&'connected\&',
|
||||
\&'selected\&' or an empty string\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-c-selected"
|
||||
Dumps the name of currently selected chain\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ai-selected"
|
||||
Dumps label of currently selected audio input\&. If no input is
|
||||
selected, dumps an empty string\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ai-position"
|
||||
Dumps position of currently selected audio inputs\&. Printed in
|
||||
seconds, using a floating-point representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ai-length"
|
||||
Dumps length of currently selected audio input\&. Printed in seconds,
|
||||
using a floating-point representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ai-open-state"
|
||||
Dumps audio input state info\&. Either \&'open\&' or \&'closed\&'\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ao-selected"
|
||||
Dumps label of currently selected audio output\&. If no output is
|
||||
selected, dumps an empty string\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ao-position"
|
||||
Dumps position of currently selected audio outputs\&. Printed in
|
||||
seconds, using a floating-point representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ao-length"
|
||||
Dumps length of currently selected audio output\&. Printed in seconds,
|
||||
using a floating-point representation\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-ao-open-state"
|
||||
Dumps audio output state info\&. Either \&'open\&' or \&'closed\&'\&. \fI[-]\fP
|
||||
.IP
|
||||
.IP "dump-cop-value \&'chainop,param\&'"
|
||||
Dumps chain operator parameter value\&. \&'chainop\&' and \&'param\&' are
|
||||
operator and parameter index values (1\&.\&.\&.n)\&. \fI[-]\fP
|
||||
.IP
|
||||
.SH "OPERATOR DESCRIPTIONS"
|
||||
The \fImap-xxx-list\fP commands return a string containing all registered
|
||||
objects of the given type \fIxxx\fP\&. Each line of the output describes
|
||||
one registered type\&. The used syntax is:
|
||||
.IP
|
||||
\&'keyword,name,description,num_of_params,par1_def,par2_def,\&.\&.\&.\&'
|
||||
.IP
|
||||
\fIparX_def\fP describes one object parameter\&. This definition
|
||||
is present for all parameters of the described object type\&.
|
||||
The used syntax is:
|
||||
.IP
|
||||
\&'name,description,defaultvalue,upper_bound_flag,upper_bound,
|
||||
lower_bound_flag,lower_bound,toggled_flag,integer_flag,
|
||||
logarithmic_flag,output_flag\&'
|
||||
.IP
|
||||
For exact descriptions of these fields, please see
|
||||
the header file \fIecasound/libecasound/eca-operator\&.h\fP\&.
|
||||
.IP
|
||||
.SH "DEPRECATED COMMANDS"
|
||||
Use of following commands is deprecated\&. They still work in
|
||||
current version of Ecasound, but will be dropped in
|
||||
the future:
|
||||
.IP
|
||||
.RS
|
||||
ai-wave-edit, ao-wave-edit
|
||||
.RE
|
||||
|
||||
.IP
|
||||
.SH "SEE ALSO"
|
||||
ecasound (1), ecatools (1), ecasoundrc (5)
|
||||
.IP
|
||||
.SH "AUTHOR"
|
||||
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,775 @@
|
|||
<html><head>
|
||||
<title>ecasound-iam</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecasound-iam</h1>
|
||||
<h2>11.10.2009</h2>
|
||||
|
||||
<html><head>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1></h1>
|
||||
|
||||
<html><head>
|
||||
<title>ecasound-iam(1)</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecasound-iam(1)</h1>
|
||||
<h2> Multimedia software</h2>
|
||||
<h2>11.10.2009</h2>
|
||||
|
||||
|
||||
<p>
|
||||
<h2>NAME</h2>ecasound-iam - ecasound interactive mode
|
||||
<h2>SYNOPSIS</h2>
|
||||
<p>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<p>
|
||||
Ecasound library contains an interpreter module that understands
|
||||
a set of commands aimed at controlling various library services.
|
||||
This is called the ecasound interactive mode (EIAM). All programs
|
||||
linked to ecasound library can use this facility.
|
||||
<p>
|
||||
<h2>ECI API and return types</h2>
|
||||
A special case of interactive mode use is ecasound's control interface (ECI),
|
||||
which is a small library providing easy access to the interactive
|
||||
mode commands from outside of libecasound. When issuing inter commands using
|
||||
the control interface, it's possible that commands also return information.
|
||||
Currently supported return value types are: string [s], list of strings [S]
|
||||
(elements separated by commas; escaped if necessary), integer [i],
|
||||
long integer [li] and floating-point number [f]. These definitions are
|
||||
used throughout this document. Commands that return nothing (void) are
|
||||
marked with [-]. Additionally, return type [e] marks an error condition.
|
||||
When an interactive mode command results in an error, an error string
|
||||
explaining the condition is returned.
|
||||
<p>
|
||||
<h2>Real-time commands</h2>
|
||||
It's not possible to use all interactive mode commands to modify and
|
||||
control objects that belong to a connected chainsetup. Commands that
|
||||
do NOT support this are:
|
||||
<p>
|
||||
<blockquote>
|
||||
cs-remove, cs-set-length, cs-set-length-samples, cs-toggle-loop,
|
||||
cs-set-param, cs-option,
|
||||
c-add, c-remove, c-rename, c-clear,
|
||||
ai-add, ai-remove, ai-attach, ai-forward, ai-rewind, ai-set-position,
|
||||
ai-set-position-samples,
|
||||
ao-add, ao-add-default, ao-remove, ao-attach, ao-forward, ao-rewind,
|
||||
ao-set-position, ao-set-position-samples.
|
||||
</blockquote>
|
||||
<p>
|
||||
If one of these commands is issued when a chainsetup is connected,
|
||||
ecasound will first stop and disconnect the chainsetup, process
|
||||
the command, and the reconnect.
|
||||
<p>
|
||||
In addition, most non-modifying (const) commands work with
|
||||
connected setups.
|
||||
<p>
|
||||
<h2>GENERAL</h2>
|
||||
<dl>
|
||||
<p><dt><strong>quit, q</strong><dd>
|
||||
Quit ecasound session. What this means in practice depends on the
|
||||
client implementation. In ecasound interactive mode, 'quit' terminates
|
||||
the ecasound process. When sent over ecasound server connection (aka
|
||||
NetECI), 'quit' terminates the active network connection, but does not
|
||||
terminate the ecasound server process. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>start, t</strong><dd>
|
||||
Processing is started (play). Error string is return if any errors upon
|
||||
startup are encountered. <em>[e]</em>
|
||||
<p>
|
||||
<p><dt><strong>stop, s</strong><dd>
|
||||
Stop processing. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>run</strong><dd>
|
||||
Like 'start' but blocks until processing is finished. Error string
|
||||
is return if any errors upon startup, or during process, are
|
||||
encountered. <em>[e]</em>
|
||||
<p>
|
||||
<p><dt><strong>debug 'debug-level'</strong><dd>
|
||||
Set debug level to 'debug-level'. Notice that client programs can
|
||||
reimplement the debug routines. <em>[-]</em>
|
||||
</dl>
|
||||
<p>
|
||||
<p><dt><strong>resource-file 'path-to-file'</strong><dd>
|
||||
Overrides the global and user resource files. Does not affect
|
||||
already created objects. This command is equivalent to '-R' ecasound
|
||||
option (see ecasound (1) man page).
|
||||
<p>
|
||||
<p><dt><strong>-prefix:arg1,...,argN</strong><dd>
|
||||
Equivalent to issuing 'cs-option -prefix:arg1,...,argN). See documentation
|
||||
for 'cs-option'.
|
||||
<p>
|
||||
<p><dt><strong>help', 'h'</strong><dd>
|
||||
Help! <em>[-]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>GLOBAL</h2>
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>engine-status</strong><dd>
|
||||
Returns a string describing the engine status (running, stopped,
|
||||
finished, error, not ready). See also <em>cs-status</em>. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>engine-launch</strong><dd>
|
||||
Starts the real-time engine. Engine will execute the currently
|
||||
connected chainsetup (see 'cs-connect). This action does not yet
|
||||
start actual processing (see <em>start</em> and <em>stop</em>). When
|
||||
ecasound is used as a JACK client, issuing <em>engine-launch</em>
|
||||
makes ecasound an active JACK client (i.e. ecasound's ports
|
||||
can be connected to other JACK clients). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>engine-halt</strong><dd>
|
||||
Stops the engine. Does not disconnect the chainsetup that
|
||||
was running. See also <em>cs-disconnet</em> and <em>stop</em>. When
|
||||
ecasound is used as a JACK client, <em>engine-halt</em> will
|
||||
cause ecasound to become a deactivated client (all JACK
|
||||
connections are torn down). <em>[-]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>CHAINSETUPS</h2>
|
||||
Chainsetup is the central data object. All other objects (inputs,
|
||||
outputs, chains, etc) are connected to some chainsetup. There can be
|
||||
many chainsetups but only one can be connected. Similarly only
|
||||
one chainsetup can be selected. If not otherwise specified operations
|
||||
are done on the selected chainsetup. Some operations also require
|
||||
that selected chainsetup is not connected.
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>cs-add 'name'</strong><dd>
|
||||
Adds a new chainsetup with name 'name'. 'name' is now
|
||||
the selected chainsetup. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-remove</strong><dd>
|
||||
Removes currently selected chainsetup. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-list</strong><dd>
|
||||
Returns a list of all chainsetups. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-select 'name'</strong><dd>
|
||||
Selects chainsetup 'name'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-selected</strong><dd>
|
||||
Returns the name of currently selected chainsetup. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-index-select 'cs_index', cs-iselect 'cs_index'</strong><dd>
|
||||
Selects a chainsetup based on a short index string. Chainsetup names
|
||||
can be rather long. This command can be used to avoid typing
|
||||
these long names. 'cs_index' is an integer value, where '1' refers to
|
||||
the first audio input/output. You can use 'cs-list' and 'cs-status'
|
||||
to get a full list of currently available chainsetups. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-load 'filename'</strong><dd>
|
||||
Adds a new chainsetup by loading it from file 'filename'.
|
||||
'filename' is now the selected chainsetup. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-save</strong><dd>
|
||||
Saves the currently selected chainsetup to file. If chainsetup was loaded
|
||||
from a file, the saved version will replace the original. If it doesn't
|
||||
have a default filename, it's saved to "chainsetup_name.ecs". <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-save-as 'filename'</strong><dd>
|
||||
Saves currently selected chainsetup to file 'filename'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-edit</strong><dd>
|
||||
Currently selected chainsetup is saved to a temporary file. This
|
||||
file is loaded to an external editor (see ecasoundrc (5)). After
|
||||
editing, the chainsetup is loaded back to ecasound. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-is-valid</strong><dd>
|
||||
Whether currently selected chainsetup is valid (=can be connected)? <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-connect</strong><dd>
|
||||
Connect currently selected chainsetup to engine. When connecting,
|
||||
all resources (e.g. files, soundcard devices, external programs) needed
|
||||
to execute the chainsetup are reserved. Only one chainsetup can be connected
|
||||
at a time. Error string is returned if connection fails (for instance
|
||||
due to error in allocating the resources). <em>[e]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-disconnect</strong><dd>
|
||||
Disconnect currently connected chainsetup. This action will free
|
||||
all external resources needed by the chainsetup. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-connected</strong><dd>
|
||||
Returns the name of currently connected chainsetup. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-rewind 'time-in-seconds', rewind 'time-in-seconds', rw 'time-in-seconds'</strong><dd>
|
||||
Rewinds the current chainsetup position by 'time-in-seconds' seconds.
|
||||
Position of all inputs and outputs attached to the selected chainsetup
|
||||
is also affected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-forward 'time-in-seconds', forward 'time-in-seconds', fw 'ttime-in-seconds'</strong><dd>
|
||||
The current chainsetup position is forwarded by 'time-in-seconds'
|
||||
seconds. Position of all inputs and outputs attached to the selected chainsetup
|
||||
is also affected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-position 'time-in-seconds', cs-setpos 'time-in-seconds', setpos 'time-in-seconds', set-position 'time-in-seconds'</strong><dd>
|
||||
Sets the chainsetup position to 'time-in-seconds' seconds from the
|
||||
beginning. Position of all inputs and outputs attached to the selected
|
||||
chainsetup is also affected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-position-samples 'time-in-samples'</strong><dd>
|
||||
Sets the chainsetup position to 'time-in-samples' samples from the
|
||||
beginning. Position of all inputs and outputs attached to the selected
|
||||
chainsetup is also affected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-get-position, cs-getpos, getpos, get-position</strong><dd>
|
||||
Returns the current chainsetup position in seconds. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-get-position-samples</strong><dd>
|
||||
Returns the current chainsetup position in samples. <em>[li]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-get-length, get-length</strong><dd>
|
||||
Returns the chainsetup length in seconds (if known). <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-get-length-samples, get-length-samples</strong><dd>
|
||||
Returns the chainsetup length in samples (if known). <em>[li]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-length 'seconds'</strong><dd>
|
||||
Sets processing time in seconds (doesn't have to be an integer value).
|
||||
A special-case value of '-1' will set the chainsetup length
|
||||
according to the longest input object. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-length-samples 'samples'</strong><dd>
|
||||
Sets processing time in samples. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-toggle-loop</strong><dd>
|
||||
Toggle looping. When processing is finished, engine will start
|
||||
again from the initial position. It's not always possible to enable looping
|
||||
(for instance all inputs and outputs have infinite length and
|
||||
chainsetup length is not explicitly set with 'cs-set-length'). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-param</strong><dd>
|
||||
Interpret general chainsetup parameters like for example
|
||||
"-b" (buffersize), "-n" (name), etc. See ecasound (1) for
|
||||
more info. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-set-audio-format 'bits,channels,sample_rate'</strong><dd>
|
||||
Set the default sample parameters for currently selected chainsetup.
|
||||
For example cd-quality audio would be "16,2,44100". This does the
|
||||
same as command-line argument "-f" (see ecasound (1)). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-status, status, st</strong><dd>
|
||||
Prints out status information about available chainsetup.
|
||||
Detailed information is printed out for connected (=available
|
||||
for running) nd selected (=available for editing) chainsetups.
|
||||
Other chainsetups are listed, but further details are
|
||||
suppressed. To get full details of a specific chainsetup,
|
||||
select it with 'cs-select' or 'cs-iselect', and then
|
||||
issue 'cs-select'. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>cs-option '-prefix:arg1,...,argN'</strong><dd>
|
||||
One powerful feature of the interactive-mode is that it
|
||||
provides full access to ecasound's command-line syntax.
|
||||
For instance, command "cs-option -efb:400,200" means that
|
||||
a bandpass filter is added to the currently selected
|
||||
chain, with initial parameters 400 (center frequency)
|
||||
and 200 (width in Hz).
|
||||
<p>
|
||||
Note that session level options (such as setting debug level)
|
||||
can not be used with 'cs-option' (i.e. only options that modify
|
||||
chainsetups).
|
||||
<p>
|
||||
Note! Ecasound interactive mode implicitly interprets all strings
|
||||
beginning with a '-' as "cs-option string".
|
||||
</dl>
|
||||
<p>
|
||||
<h2>CHAINS</h2>
|
||||
Chain is a simple signal flow abstraction. Every chain has one input
|
||||
and one output. All chain operators and their controllers are attached
|
||||
to chains. Chains can be muted, unmuted and be bypassed. If not
|
||||
otherwise stated, all operations are done to currently selected
|
||||
chainsetup.
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>c-add 'cname1,...,cnameN'</strong><dd>
|
||||
Adds a set of chains. Added chains are automatically selected. Note
|
||||
that commas in chain names are not allowed. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-remove</strong><dd>
|
||||
Removes selected chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-list</strong><dd>
|
||||
Returns a list of all chains. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-select 'cname1,...,cnameN'</strong><dd>
|
||||
Selects chains. Other chains are automatically deselected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-index-select 'index1,...,indexN', c-iselect 'index1,...,indexN'</strong><dd>
|
||||
Selects a set of chains based on the list of indixes. Each index is
|
||||
an integer value, where '1' refers to the first chain. You can use
|
||||
'c-list' and 'c-status' to get a full list of currently available
|
||||
chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-select-all</strong><dd>
|
||||
Selects all chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-select-add 'cname1,...,cnameN'</strong><dd>
|
||||
Selects more chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-deselect 'cname1,...,cnameN'</strong><dd>
|
||||
Deselects chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-selected</strong><dd>
|
||||
Returns a list of selected chains. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-clear</strong><dd>
|
||||
Clear selected chains by removing all chain operators and controllers.
|
||||
Doesn't change how chains are connected to inputs and outputs. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-rename 'new_name'</strong><dd>
|
||||
Renames the selected chain. When using this command, exactly one chain must
|
||||
be selected. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-muting, c-mute</strong><dd>
|
||||
Toggle chain muting. When chain is muted, all data that goes through
|
||||
is muted. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-bypass</strong><dd>
|
||||
Toggle chain bypassing. When chain is bypassed, sample data is passed
|
||||
through unprocessed (all chain operators are disabled for the given
|
||||
chain). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>c-status, cs</strong><dd>
|
||||
Print status info about all chains. <em>[s]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>AUDIO INPUT/OUTPUT OBJECTS</h2>
|
||||
If not otherwise stated, all operations are done to currently selected
|
||||
object. All commands with <em>ai-</em> prefix operate on audio inputs,
|
||||
while commands with <em>ao-</em> operate on outputs.
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>ai-add 'input_format_string'</strong><dd>
|
||||
Adds a new input object. See ecasound (1) man page for more info about
|
||||
the argument format ('-i' option). Note on syntax: if any of
|
||||
the parameters (such as a filename) contains commas, the parameter
|
||||
should be enclosed in double-quotes. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ao-add 'output_format_string'</strong><dd>
|
||||
Adds a new output object. See ecasound (1) man page for more info about
|
||||
the argument format ('-o' option). If argument is omitted,
|
||||
a default output device is added (see ecasoundrc (5)). Note on syntax: if any
|
||||
of the parameters (such as a filename) contains commas, the parameter
|
||||
should be enclosed in double-quotes. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ao-add-default</strong><dd>
|
||||
Adds the default output device (see ecasoundrc (5)). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-describe, ao-describe</strong><dd>
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the input/output. See the Ecasound User's Guide
|
||||
for more information about EOS. This command was introduced in
|
||||
ecasound 2.4.4. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-select 'aobject_name', ao-select 'aobject_name'</strong><dd>
|
||||
Selects an audio object. 'aobject_name' refers to the string
|
||||
used when creating the object (the first argument given to ai-add/ao-add).
|
||||
Note that as a important difference to ai-add/ao-add, one should not
|
||||
enclose the object name in double quotes for ai-select/ao-select. In the
|
||||
case a chainsetup contains multiple inputs, or outputs, with
|
||||
identical name, 'ai-select' and 'ao-select' will select
|
||||
the first matching instance. In order to select a specific
|
||||
instance, the 'ai-iselect' and 'ao-iselect' commands need to
|
||||
be used. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-index-select 'aobject_index', ai-iselect 'aobject_index', ao-index-select 'aobject_index', ao-iselect 'aobject_index'</strong><dd>
|
||||
Select some audio object based on a short index string. Especially file
|
||||
names can be rather long. This command can be used to avoid typing
|
||||
these long names when selecting audio objects. 'aobject_index' is
|
||||
an integer value, where '1' refers to the first audio input/output.
|
||||
You can use 'ai-list' and 'ao-list' to get a full list of currently
|
||||
available inputs/outputs. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-selected, ao-selected</strong><dd>
|
||||
Returns the name of the currently selected audio object. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-attach, ao-attach</strong><dd>
|
||||
Attaches the currently selected audio object to all selected chains. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-remove, ao-remove</strong><dd>
|
||||
Removes the currently selected audio object from the chainsetup. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-forward 'time_in_seconds', ai-fw 'time_in_seconds', ao-forward 'time_in_seconds', ao-fw 'time_in_seconds'</strong><dd>
|
||||
Selected audio object is forwarded by 'time-in-seconds' seconds.
|
||||
Time should be given as a floating point value (eg. 0.001 is the
|
||||
same as 1ms). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-rewind 'time_in_seconds', ai-rw 'time_in_seconds', ao-rewind 'time_in_seconds', ao-rw 'time_in_seconds'</strong><dd>
|
||||
Selected audio object is rewinded by 'time-in-seconds' seconds.
|
||||
Time should be given as a floating point value (eg. 0.001 is the
|
||||
same as 1ms). <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-setpos 'time_in_seconds', ai-set-position 'time_in_seconds', ao-setpos 'time_in_seconds', ao-set-position 'time_in_seconds'</strong><dd>
|
||||
Set audio object position to 'time_in_seconds'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-set-position-samples 'time_in_samples', ao-set-position-samples 'time_in_samples'</strong><dd>
|
||||
Set audio object position to 'time_in_samples'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-getpos, ai-get-position, ao-getpos, ao-get-position</strong><dd>
|
||||
Returns the audio object position in seconds. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-get-position-samples, ao-get-position-samples</strong><dd>
|
||||
Returns the audio object position in samples. <em>[li]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-get-length, ao-get-length</strong><dd>
|
||||
Returns the audio object length in seconds. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-get-length-samples, ao-get-length-samples</strong><dd>
|
||||
Returns the audio object length in samples. <em>[li]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-get-format, ao-get-format</strong><dd>
|
||||
Returns the audio format of the selected audio input/output as a
|
||||
formatted string. See documentation for '-f' command-line option. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ai-list, ao-list</strong><dd>
|
||||
Returns a list of all input/output objects. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>aio-register</strong><dd>
|
||||
Prints a list of registered audio object types. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>aio-status</strong><dd>
|
||||
Audio object status (index strings, position, length, etc). <em>[s]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>CHAIN OPERATORS</h2>
|
||||
Chain operators are used to process and analyze sample data.
|
||||
They are attached to chains. If not otherwise stated,
|
||||
currently selected chainsetup and chain are used. Also,
|
||||
'chainop_id' and 'param_id' are used to select chain operators
|
||||
and their parameters. First valid value for these parameters
|
||||
is 1.
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>cop-add 'cop_format_string'</strong><dd>
|
||||
Adds a new chain operator. In addition to normal chain operators,
|
||||
this commmand can also be used to add effect presets and various
|
||||
plugins. Note; it is not possible to add operators to multiple
|
||||
chains at once. In other words only one chain should be selected
|
||||
when issuing 'cop-add'. See ecasound (1) man page for more info. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-describe</strong><dd>
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the chain operator. See the Ecasound User's Guide
|
||||
for more information about EOS. This command was introduced in
|
||||
ecasound 2.4.4. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-remove</strong><dd>
|
||||
Removes the selected chain operator. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-list</strong><dd>
|
||||
Returns a list of all chain operators attached to the currently
|
||||
selected chain. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-select 'param_id', cop-index-select 'param_id', cop-iselect 'param_id'</strong><dd>
|
||||
Selects a chain operator. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-selected</strong><dd>
|
||||
Returns the index number of currently selected chain operator. <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-set 'chainop_id,param_id,value'</strong><dd>
|
||||
Changes the value of a single chain operator parameter. Unlike other
|
||||
chain operator commands, this can also be used during processing.
|
||||
See also 'cop-get'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-get 'chainop_id,param_id'</strong><dd>
|
||||
Returns the current value of chain operator parameter identified by
|
||||
'chainop_id' and 'param_id'. This command is a shorthand for
|
||||
'cop-select chainop_id ; copp-iselect param_id ; copp-get'. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-status</strong><dd>
|
||||
Returns info about chain operator status. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>copp-list</strong><dd>
|
||||
Returns a list of selected chain operator's parameters. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>copp-select 'param_id', copp-index-select 'param_id', copp-iselect 'param_id'</strong><dd>
|
||||
Selects a chain operator parameter. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>copp-selected</strong><dd>
|
||||
Returns the index number of currently selected chain operator parameter. <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>copp-set 'value'</strong><dd>
|
||||
Sets the selected parameter value to 'value'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>copp-get</strong><dd>
|
||||
Returns the selected parameter value. See also 'cop-get'. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>cop-register</strong><dd>
|
||||
Prints a list of registered chain operators. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>preset-register</strong><dd>
|
||||
Prints a list of registered effect presets. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ladspa-register</strong><dd>
|
||||
Prints a list of registered LADSPA plugins. <em>[s]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>CONTROLLERS</h2>
|
||||
Controllers are used to control individual chain operator parameters.
|
||||
They are attached to chains. If not otherwise stated, currently
|
||||
selected chainsetup and chains are used.
|
||||
<p>
|
||||
<p><dt><strong>ctrl-add 'copc_format_string'</strong><dd>
|
||||
Adds a new controller and attach it to currently selected chain
|
||||
operator. The argument syntax is either "-<id_string>:par1,...,parN"
|
||||
or just "<id_string>:par1,...,parN". If parameter itself contains
|
||||
commas, the parameter should be enclosed in double-quotes.
|
||||
See ecasound (1) man page for more info. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-describe</strong><dd>
|
||||
Returns a Ecasound Option Syntax (EOS) compliant string
|
||||
describing the controller. See the Ecasound User's Guide
|
||||
for more information about EOS. This command was introduced in
|
||||
ecasound 2.4.4. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-remove</strong><dd>
|
||||
Removes the selected controller. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-list</strong><dd>
|
||||
Returns a list of all controllers attached to the currently
|
||||
selected chain. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-select 'param_id', ctrl-index-select 'param_id', ctrl-iselect 'param_id'</strong><dd>
|
||||
Selects a controller. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-selected</strong><dd>
|
||||
Returns the index number of currently selected controller. <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-status</strong><dd>
|
||||
Returns info about controller status. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-register</strong><dd>
|
||||
Prints a list of registered controllers. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrl-get-target</strong><dd>
|
||||
Returns the index number of the chain operator that is
|
||||
connected to the selected controller. The returned index
|
||||
refers to the currently selected chain (see 'cop-list'). <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrlp-list</strong><dd>
|
||||
Returns a list of all controller parameters. This command was introduced in
|
||||
ecasound 2.4.2. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrlp-select</strong><dd>
|
||||
Selects a controller parameter. This command was introduced in
|
||||
ecasound 2.4.2. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrlp-selected</strong><dd>
|
||||
Returns the index number of currently selected controller parameter. This command
|
||||
was introduced in ecasound 2.4.2. <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrlp-get</strong><dd>
|
||||
Returns the selected controller parameter value. This command was introduced in
|
||||
ecasound 2.4.2. <em>[f]</em>
|
||||
<p>
|
||||
<p><dt><strong>ctrlp-set</strong><dd>
|
||||
Sets the selected controller parameter value to 'value'. This command was introduced in
|
||||
ecasound 2.4.2. <em>[-]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>JACK CONNECTION MANAGEMENT</h2>
|
||||
If Ecasound is compiled with support for <a href="http://jackaudio.org/">JACK audio server</a>,
|
||||
the following set of commands is provided for controlling connections
|
||||
between JACK ports.
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>jack-connect 'src-port' 'dest-port'</strong><dd>
|
||||
Make a connection between the two ports given as parameters. This command
|
||||
is similar to the 'jack_connect' command line tool that is distributed
|
||||
with JACK package. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>jack-disconnect 'src-port' 'dest-port'</strong><dd>
|
||||
Disconnect the two ports given as parameters. This command is similar
|
||||
to the 'jack_disconnect' command line tool that is distributed
|
||||
with JACK package. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>jack-list-connections</strong><dd>
|
||||
Returns a list of all JACK ports and a list of connections
|
||||
for each port. This command is similar to the 'jack_lsp' command
|
||||
line tool (e.g. 'jack_lsp -c') that is distributed with JACK package. <em>[s]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>INTERNAL COMMANDS</h2>
|
||||
Internal commands are not directly aimed at normal use. They
|
||||
are primarily meant for use in scripting and frontends.
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>int-cmd-list</strong><dd>
|
||||
Returns a list of all registered interactive mode commands. <em>[S]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-log-history</strong><dd>
|
||||
Returns recent log messages sent by libecasound modules. This
|
||||
is a good tool for debugging ECI/EIAM scripts and applications. This
|
||||
command was introduced in ecasound 2.4.0. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-output-mode-wellformed</strong><dd>
|
||||
Select the well-format output format for log messages. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-set-float-to-string-precision</strong><dd>
|
||||
Sets precision used in float to text conversions. Note that
|
||||
this can be used to control the precision of float return values
|
||||
for ECI commands. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-set-log-history-length</strong><dd>
|
||||
Sets the log history length. Defaults to 0 items.
|
||||
This command was introduced in ecasound 2.4.0. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-cmd-version-string</strong><dd>
|
||||
Returns ecasound interactive mode parser version string. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-cmd-version-lib-current</strong><dd>
|
||||
Returns ecasound interactive mode library interface version (libtool). <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-cmd-version-lib-revision</strong><dd>
|
||||
Returns ecasound interactive mode library interface revision (libtool). <em>[i]</em>
|
||||
<p>
|
||||
<p><dt><strong>int-cmd-version-lib-age</strong><dd>
|
||||
Returns ecasound interactive mode library interface age (libtool). <em>[i]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>OBJECT MAPS</h2>
|
||||
Object maps are central repositories for commonly used object types.
|
||||
By querying the maps, applications can get a list of all registered
|
||||
object types and their properties.
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>map-cop-list</strong><dd>
|
||||
Prints a list of registered chain operators using
|
||||
the format specified in section <em>OPERATOR DESCRIPTIONS</em>. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>map-preset-list</strong><dd>
|
||||
Prints a list of registered effect presets using
|
||||
the format specified in section <em>OPERATOR DESCRIPTIONS</em>. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>map-ladspa-list</strong><dd>
|
||||
Prints a list of registered LADSPA plugins using
|
||||
the format specified in section <em>OPERATOR DESCRIPTIONS</em>. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>map-ladspa-id-list</strong><dd>
|
||||
Prints a list of registered LADSPA plugins using
|
||||
the format specified in section <em>OPERATOR DESCRIPTIONS</em>.
|
||||
Numerical LADPSA plugin identifiers are used. <em>[s]</em>
|
||||
<p>
|
||||
<p><dt><strong>map-ctrl-list</strong><dd>
|
||||
Prints a list of registered controllers using
|
||||
the format specified in section <em>OPERATOR DESCRIPTIONS</em>. <em>[s]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>DUMP COMMANDS</h2>
|
||||
The following dump commands are not meant for normal use.
|
||||
Their primary purpose is to provide an easy way to get
|
||||
internal state information from libecasound. All dump
|
||||
commands output a single line with syntax "key value"
|
||||
to the selected output stream (defaults to stdout).
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>dump-target 'filename'</strong><dd>
|
||||
Set target stream for dumping. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-status</strong><dd>
|
||||
Dumps engine status - 'running', 'stopped', 'finished' or 'notready'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-position</strong><dd>
|
||||
Dumps the global position. Printed in seconds using a floating-point
|
||||
representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-length</strong><dd>
|
||||
Dumps the overall processing length. Printed in seconds using a floating-point
|
||||
representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-cs-status</strong><dd>
|
||||
Dumps status string for the currently selected chainsetup - 'connected',
|
||||
'selected' or an empty string. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-c-selected</strong><dd>
|
||||
Dumps the name of currently selected chain. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ai-selected</strong><dd>
|
||||
Dumps label of currently selected audio input. If no input is
|
||||
selected, dumps an empty string. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ai-position</strong><dd>
|
||||
Dumps position of currently selected audio inputs. Printed in
|
||||
seconds, using a floating-point representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ai-length</strong><dd>
|
||||
Dumps length of currently selected audio input. Printed in seconds,
|
||||
using a floating-point representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ai-open-state</strong><dd>
|
||||
Dumps audio input state info. Either 'open' or 'closed'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ao-selected</strong><dd>
|
||||
Dumps label of currently selected audio output. If no output is
|
||||
selected, dumps an empty string. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ao-position</strong><dd>
|
||||
Dumps position of currently selected audio outputs. Printed in
|
||||
seconds, using a floating-point representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ao-length</strong><dd>
|
||||
Dumps length of currently selected audio output. Printed in seconds,
|
||||
using a floating-point representation. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-ao-open-state</strong><dd>
|
||||
Dumps audio output state info. Either 'open' or 'closed'. <em>[-]</em>
|
||||
<p>
|
||||
<p><dt><strong>dump-cop-value 'chainop,param'</strong><dd>
|
||||
Dumps chain operator parameter value. 'chainop' and 'param' are
|
||||
operator and parameter index values (1...n). <em>[-]</em>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>OPERATOR DESCRIPTIONS</h2>
|
||||
The <em>map-xxx-list</em> commands return a string containing all registered
|
||||
objects of the given type <em>xxx</em>. Each line of the output describes
|
||||
one registered type. The used syntax is:
|
||||
<p>
|
||||
'keyword,name,description,num_of_params,par1_def,par2_def,...'
|
||||
<p>
|
||||
<em>parX_def</em> describes one object parameter. This definition
|
||||
is present for all parameters of the described object type.
|
||||
The used syntax is:
|
||||
<p>
|
||||
'name,description,defaultvalue,upper_bound_flag,upper_bound,
|
||||
lower_bound_flag,lower_bound,toggled_flag,integer_flag,
|
||||
logarithmic_flag,output_flag'
|
||||
<p>
|
||||
For exact descriptions of these fields, please see
|
||||
the header file <em>ecasound/libecasound/eca-operator.h</em>.
|
||||
<p>
|
||||
<h2>DEPRECATED COMMANDS</h2>
|
||||
Use of following commands is deprecated. They still work in
|
||||
current version of Ecasound, but will be dropped in
|
||||
the future:
|
||||
<p>
|
||||
<blockquote>
|
||||
ai-wave-edit, ao-wave-edit
|
||||
</blockquote>
|
||||
<p>
|
||||
<h2>SEE ALSO</h2>
|
||||
ecasound (1), ecatools (1), ecasoundrc (5)
|
||||
<p>
|
||||
<h2>AUTHOR</h2>
|
||||
Kai Vehmanen, <<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>>
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,226 @@
|
|||
.TH "ecasoundrc" "5" "22\&.03\&.2009" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecasoundrc \- ecasound rcfile
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
{prefix}/share/ecasound/ecasoundrc (for instance \&'/usr/local/share/ecasound/ecasoundrc\&')
|
||||
$HOME/\&.ecasound/ecasoundrc
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
\fBecasoundrc\fP is the main configuration file for ecasound\&.
|
||||
Any user-specific modification should be done to
|
||||
$HOME/\&.ecasound/ecasoundrc, not to the global resource file\&. Ecasound
|
||||
also allows to disable the normal policy and only read from a specific
|
||||
resource file (see ecasound (1) and documentation for the \fB-R\fP option)\&.
|
||||
.PP
|
||||
The format is quite simple\&. One line consists of
|
||||
a configuration variable and its value\&. Variable and value
|
||||
are separated with either \&'=\&' or \&' \&'\&. Lines beginning with a
|
||||
"#" are ignored (comment lines)\&.
|
||||
.PP
|
||||
.SH "VARIABLES"
|
||||
|
||||
.PP
|
||||
.IP "midi-device"
|
||||
MIDI-device\&. If the device name is given in \fIrawmidi,/dev/midi*\fP
|
||||
format, OSS/Linux or OSS/Lite drivers are used\&.
|
||||
Device \fIrawmidi,/dev/snd/midiCxDy\fP opens an ALSA raw-MIDI
|
||||
device with card number \&'x\&' and device number \&'y\&'\&.
|
||||
See ecasound (1) man page (the \&'-Md option) for more info\&.
|
||||
Defaults to \fIrawmidi,/dev/midi\fP\&.
|
||||
.IP
|
||||
.IP "default-output"
|
||||
Output device to use by default\&. If a chainsetup with zero
|
||||
outputs, but with one or more inputs, is connected, a default output
|
||||
is added and all the chains are connected to it\&. If the special-case
|
||||
value \&'autodetect\&' is specified, ecasound will try to auto-detect
|
||||
a suitable device (JACK -> ALSA -> OSS -> rtnull)\&.
|
||||
Defaults to \fIautodetect\fP\&.
|
||||
.IP
|
||||
.IP "default-audio-format"
|
||||
Default values for sample format, channel count, sampling rate
|
||||
and channel interleaving\&. Syntax is the same as used by
|
||||
ecasound\&'s \fI-f\fP option (see ecasound (1))\&.
|
||||
Defaults to \fIs16_le,2,44100,i\fP\&.
|
||||
.IP
|
||||
.IP "default-to-precise-sample-rates"
|
||||
Whether to ignore sample rate differences (and possibly avoid
|
||||
resampling)\&. Currently only affects OSS-devices\&. Defaults to \fIfalse\fP\&.
|
||||
.IP
|
||||
.IP "default-mix-mode"
|
||||
If \fIdefault-mix-mode\fP is \fIsum\fP, engine will mix multiple channels into
|
||||
one output channel by summing all input channels\&. In mode \fIavg\fP,
|
||||
mixing is done by taking the average of all input channels\&. The
|
||||
\fIavg\fP mode is safe from clipping, while \fIsum\fP is closer
|
||||
to the way analog mixers work\&. Defaults to \fIavg\fP\&.
|
||||
.IP
|
||||
.IP "bmode-defaults-nonrt"
|
||||
Selects the default parameters to use with buffering
|
||||
mode \&'nonrt\&' (other modes are \&'rt\&' and \&'rtlowlatency)\&.
|
||||
Parameters are given as a comma-separated tuple of values:
|
||||
1) buffersize (number,-b), 2) raised priority (true/false,-r),
|
||||
3) sched_priority (number,-r:X), 4) double buffering
|
||||
(true/false,-z:db), 5) db-bufsize (number,-z:db,X), and
|
||||
6) max intbuf (true/false,-z:intbuf)\&. Defaults to
|
||||
\fI1024,false,50,false,100000,true\fP\&.
|
||||
.IP
|
||||
.IP "bmode-defaults-rt"
|
||||
See \&'bmode-defaults-nonrt\&'\&. Defaults to
|
||||
\fI1024,true,50,true,100000,true\fP\&.
|
||||
.IP
|
||||
.IP "bmode-defaults-rtlowlatency"
|
||||
See \&'bmode-defaults-nonrt\&'\&. Defaults to
|
||||
\fI256,true,50,true,100000,false\fP\&.
|
||||
.IP
|
||||
.IP "resource-directory"
|
||||
Directory for global ecasound configuration files\&.
|
||||
Defaults to \fI{prefix-dir}/share/ecasound\fP\&.
|
||||
Note! User-specific resource files can be be stored
|
||||
to \&'$(HOME)/\&.ecasound/\&'\&. For instance you can
|
||||
add your own presets definitions to
|
||||
\&'$(HOME)/\&.ecasound/effect_presets\&'\&.
|
||||
.IP
|
||||
.IP "resource-file-genosc-envelopes"
|
||||
Configuration file for generic oscillators\&. Is located in the
|
||||
resource directory\&. Defaults to \fIgeneric_oscillators\fP\&.
|
||||
.IP
|
||||
.IP "resource-file-effect-presets"
|
||||
Configuration file for effect presets\&. Is located in the
|
||||
resource directory\&. Defaults to \fIeffect_presets\fP\&.
|
||||
.IP
|
||||
.IP "ladspa-plugin-directory"
|
||||
Directory containing LADSPA effect plugins\&. Defaults to \fI{prefix-dir}/lib/ladspa\fP\&.
|
||||
If environment variable \fILADSPA_PATH\fP exists, directories
|
||||
specified in it are automatically searched for plugins\&.
|
||||
Note! To match the syntax of the \fILADSPA_PATH\fP environment
|
||||
variable, \&'ladspa-plugin-directory\&' can contain multiple
|
||||
directories, separated by \&':\&' characters\&.
|
||||
.IP
|
||||
.IP "ext-cmd-text-editor"
|
||||
If \fIext-cmd-text-editor-use-getenv\fP is \fIfalse\fP or "EDITOR"
|
||||
is null, value of this field is used\&.
|
||||
.IP
|
||||
.IP "ext-cmd-text-editor-use-getenv"
|
||||
Should ecasound try to query environment variable "EDITOR"\&.
|
||||
Defaults to \fItrue\fP\&.
|
||||
.IP
|
||||
.IP "ext-cmd-mp3-input"
|
||||
Command for starting mp3 input\&. Ecasound expects to read signed,
|
||||
16bit, little-endian stereo audio samples from its standard
|
||||
input\&. Ecsound will query other audio format parameters by parsing
|
||||
the mp3 file header\&. Before execution, %f is replaced with
|
||||
path to the input mp3\&. If exists, "%o" is replaced with he
|
||||
start offset in mp3 frames\&. Double-quotes and backslash-espacing
|
||||
can be used to include white-space to individual parameters\&.
|
||||
By default, \fImpg123\fP is launched\&.
|
||||
.IP
|
||||
.IP "ext-cmd-mp3-output"
|
||||
Command for starting mp3 output\&. Ecasound will write stereo,
|
||||
signed, 16bit, little-endian samples to standard output\&. Sample
|
||||
rate is configurable\&. Before execution, %f is replaced with
|
||||
path to the output mp3, %S with sample rate in kHz, and
|
||||
%B with encoding bitrate in kbps\&. Double-quotes and
|
||||
backslash-espacing can be used to include white-space to
|
||||
individual parameters\&. By default Ecasound will try to
|
||||
launch \fIlame\fP\&. As a special exception (added to Ecasound
|
||||
2\&.7\&.0), if the output program is "lame" and options
|
||||
include "--big-endian", Ecasound will detect this and output
|
||||
big-endian samples\&.
|
||||
.IP
|
||||
.IP "ext-cmd-ogg-input"
|
||||
Command for starting Ogg Vorbis input\&. Ecasound expects that audio samples
|
||||
are written to standard output\&. It should be noted that
|
||||
Ecasound is not able to query the audio format parameters from
|
||||
ogg files, so these need to be set manually by the user\&.
|
||||
Before execution, %f is replaced with path to the input ogg\&.
|
||||
Double-quotes and backslash-espacing can be used to include white-space
|
||||
to individual parameters\&. By default Ecasound will try to
|
||||
launch (ogg123)\&.
|
||||
.IP
|
||||
.IP "ext-cmd-ogg-output"
|
||||
Command for starting Ogg Vorbis output\&. Ecasound will write
|
||||
samples in little-endian format to standard output\&. Other
|
||||
audio parameters are configurable\&. Before execution, %f is
|
||||
replaced with path to the output ogg, %c, %s and %b with matching audio
|
||||
format parameters, and %B with encoding bitrate in kbps\&.
|
||||
Double-quotes and backslash-espacing can be used to include white-space to
|
||||
individual parameters\&. By default Ecasound will try to
|
||||
launch (oggenc)\&.
|
||||
.IP
|
||||
.IP "ext-cmd-mikmod"
|
||||
Command for starting mikmod input\&. Ecasound expects that
|
||||
signed, 16bit, stereo audio samples are written to standard
|
||||
output\&. Before execution, %f is replaced with
|
||||
file path, and %s with selected sample rate\&. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters\&. By default Ecasound will try to launch
|
||||
\fImikmod\fP\&.
|
||||
.IP
|
||||
.IP "ext-cmd-timidity"
|
||||
Command for starting timidity++ input\&. Ecasound expects that
|
||||
signed, 16bit, stereo audio samples are written to standard
|
||||
output\&. Before execution, %f is replaced with file path, and
|
||||
%s with sample rate\&. Double-quotes and backslash-espacing can
|
||||
be used to include white-space to individual parameters\&.
|
||||
By default Ecasound will try to launch \fItimidity\fP\&.
|
||||
.IP
|
||||
.IP "ext-cmd-flac-input"
|
||||
Command for starting FLAC input\&. Ecasound expects that audio samples
|
||||
are written to standard output\&. It should be noted that
|
||||
Ecasound is not able to query the audio format parameters from
|
||||
FLAC files, so these need to be set manually by the user\&.
|
||||
Before execution, %f is replaced with path to the input FLAC
|
||||
file\&. Double-quotes and backslash-espacing can be used to include
|
||||
white-space to individual parameters\&. By default Ecasound will
|
||||
try to launch (flac)\&.
|
||||
.IP
|
||||
.IP "ext-cmd-flac-output"
|
||||
Command for starting FLAC output\&. Ecasound will write
|
||||
samples to standard output\&. All audio parameters are
|
||||
configurable\&. Before execution, %f is replaced with path to
|
||||
the output flac, %c, %b and %s with matching audio
|
||||
format parameters, %I with either \&'signed\&' or \&'unsigned\&', and
|
||||
%E with either \&'little\&' or \&'big\&'\&. Double-quotes and backslash-espacing
|
||||
can be used to include white-space to individual parameters\&. By default
|
||||
Ecasound will try to launch (flac)\&.
|
||||
.IP
|
||||
.IP "ext-cmd-aac-input"
|
||||
Command for starting AAC input\&. Ecasound expects that signed,
|
||||
16bit, stereo, big-endian audio samplesare written to standard
|
||||
output\&. It should be noted that Ecasound is not able to query
|
||||
the input sample rate, so this needs to be set manually by the user\&.
|
||||
Before execution, %f is replaced with path to the input AAC
|
||||
file\&. Note! FAAC must be compiled with MP4 support\&. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters\&. By default Ecasound will try to
|
||||
laucnh \fIfaad\fP\&.
|
||||
.IP
|
||||
.IP "ext-cmd-aac-output"
|
||||
Command for starting AAC output\&. Ecasound will write big-endian
|
||||
audio samples to standard output\&. All other audio parameters are
|
||||
configurable\&. Before execution, %f is replaced with path to
|
||||
the output AAC file, %c, %b and %s with matching audio format
|
||||
parameters\&. Note! FAAC must be compiled with MP4 support\&. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters\&. By default Ecasound will try to launch
|
||||
\fIfaac\fP\&.
|
||||
.IP
|
||||
.SH "DEPRECATED"
|
||||
|
||||
.PP
|
||||
.IP "ext-cmd-wave-editor"
|
||||
|
||||
.IP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecatools (1), ecasound-iam (1)
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,252 @@
|
|||
<html><head>
|
||||
<title>ecasoundrc</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecasoundrc</h1>
|
||||
<h2>22.03.2009</h2>
|
||||
|
||||
<html><head>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1></h1>
|
||||
|
||||
<html><head>
|
||||
<title>ecasoundrc(5)</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecasoundrc(5)</h1>
|
||||
<h2> Multimedia software</h2>
|
||||
<h2>22.03.2009</h2>
|
||||
|
||||
|
||||
<p>
|
||||
<h2>NAME</h2>ecasoundrc - ecasound rcfile
|
||||
<p>
|
||||
<h2>SYNOPSIS</h2>
|
||||
{prefix}/share/ecasound/ecasoundrc (for instance '/usr/local/share/ecasound/ecasoundrc')
|
||||
$HOME/.ecasound/ecasoundrc
|
||||
<p>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<p>
|
||||
<strong>ecasoundrc</strong> is the main configuration file for ecasound.
|
||||
Any user-specific modification should be done to
|
||||
$HOME/.ecasound/ecasoundrc, not to the global resource file. Ecasound
|
||||
also allows to disable the normal policy and only read from a specific
|
||||
resource file (see ecasound (1) and documentation for the <strong>-R</strong> option).
|
||||
<p>
|
||||
The format is quite simple. One line consists of
|
||||
a configuration variable and its value. Variable and value
|
||||
are separated with either '=' or ' '. Lines beginning with a
|
||||
"#" are ignored (comment lines).
|
||||
<p>
|
||||
<h2>VARIABLES</h2>
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>midi-device</strong><dd>
|
||||
MIDI-device. If the device name is given in <em>rawmidi,/dev/midi*</em>
|
||||
format, OSS/Linux or OSS/Lite drivers are used.
|
||||
Device <em>rawmidi,/dev/snd/midiCxDy</em> opens an ALSA raw-MIDI
|
||||
device with card number 'x' and device number 'y'.
|
||||
See ecasound (1) man page (the '-Md option) for more info.
|
||||
Defaults to <em>rawmidi,/dev/midi</em>.
|
||||
<p>
|
||||
<p><dt><strong>default-output</strong><dd>
|
||||
Output device to use by default. If a chainsetup with zero
|
||||
outputs, but with one or more inputs, is connected, a default output
|
||||
is added and all the chains are connected to it. If the special-case
|
||||
value 'autodetect' is specified, ecasound will try to auto-detect
|
||||
a suitable device (JACK -> ALSA -> OSS -> rtnull).
|
||||
Defaults to <em>autodetect</em>.
|
||||
<p>
|
||||
<p><dt><strong>default-audio-format</strong><dd>
|
||||
Default values for sample format, channel count, sampling rate
|
||||
and channel interleaving. Syntax is the same as used by
|
||||
ecasound's <em>-f</em> option (see ecasound (1)).
|
||||
Defaults to <em>s16_le,2,44100,i</em>.
|
||||
<p>
|
||||
<p><dt><strong>default-to-precise-sample-rates</strong><dd>
|
||||
Whether to ignore sample rate differences (and possibly avoid
|
||||
resampling). Currently only affects OSS-devices. Defaults to <em>false</em>.
|
||||
<p>
|
||||
<p><dt><strong>default-mix-mode</strong><dd>
|
||||
If <em>default-mix-mode</em> is <em>sum</em>, engine will mix multiple channels into
|
||||
one output channel by summing all input channels. In mode <em>avg</em>,
|
||||
mixing is done by taking the average of all input channels. The
|
||||
<em>avg</em> mode is safe from clipping, while <em>sum</em> is closer
|
||||
to the way analog mixers work. Defaults to <em>avg</em>.
|
||||
<p>
|
||||
<p><dt><strong>bmode-defaults-nonrt</strong><dd>
|
||||
Selects the default parameters to use with buffering
|
||||
mode 'nonrt' (other modes are 'rt' and 'rtlowlatency).
|
||||
Parameters are given as a comma-separated tuple of values:
|
||||
1) buffersize (number,-b), 2) raised priority (true/false,-r),
|
||||
3) sched_priority (number,-r:X), 4) double buffering
|
||||
(true/false,-z:db), 5) db-bufsize (number,-z:db,X), and
|
||||
6) max intbuf (true/false,-z:intbuf). Defaults to
|
||||
<em>1024,false,50,false,100000,true</em>.
|
||||
<p>
|
||||
<p><dt><strong>bmode-defaults-rt</strong><dd>
|
||||
See 'bmode-defaults-nonrt'. Defaults to
|
||||
<em>1024,true,50,true,100000,true</em>.
|
||||
<p>
|
||||
<p><dt><strong>bmode-defaults-rtlowlatency</strong><dd>
|
||||
See 'bmode-defaults-nonrt'. Defaults to
|
||||
<em>256,true,50,true,100000,false</em>.
|
||||
<p>
|
||||
<p><dt><strong>resource-directory</strong><dd>
|
||||
Directory for global ecasound configuration files.
|
||||
Defaults to <em>{prefix-dir}/share/ecasound</em>.
|
||||
Note! User-specific resource files can be be stored
|
||||
to '$(HOME)/.ecasound/'. For instance you can
|
||||
add your own presets definitions to
|
||||
'$(HOME)/.ecasound/effect_presets'.
|
||||
<p>
|
||||
<p><dt><strong>resource-file-genosc-envelopes</strong><dd>
|
||||
Configuration file for generic oscillators. Is located in the
|
||||
resource directory. Defaults to <em>generic_oscillators</em>.
|
||||
<p>
|
||||
<p><dt><strong>resource-file-effect-presets</strong><dd>
|
||||
Configuration file for effect presets. Is located in the
|
||||
resource directory. Defaults to <em>effect_presets</em>.
|
||||
<p>
|
||||
<p><dt><strong>ladspa-plugin-directory</strong><dd>
|
||||
Directory containing LADSPA effect plugins. Defaults to <em>{prefix-dir}/lib/ladspa</em>.
|
||||
If environment variable <em>LADSPA_PATH</em> exists, directories
|
||||
specified in it are automatically searched for plugins.
|
||||
Note! To match the syntax of the <em>LADSPA_PATH</em> environment
|
||||
variable, 'ladspa-plugin-directory' can contain multiple
|
||||
directories, separated by ':' characters.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-text-editor</strong><dd>
|
||||
If <em>ext-cmd-text-editor-use-getenv</em> is <em>false</em> or "EDITOR"
|
||||
is null, value of this field is used.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-text-editor-use-getenv</strong><dd>
|
||||
Should ecasound try to query environment variable "EDITOR".
|
||||
Defaults to <em>true</em>.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-mp3-input</strong><dd>
|
||||
Command for starting mp3 input. Ecasound expects to read signed,
|
||||
16bit, little-endian stereo audio samples from its standard
|
||||
input. Ecsound will query other audio format parameters by parsing
|
||||
the mp3 file header. Before execution, %f is replaced with
|
||||
path to the input mp3. If exists, "%o" is replaced with he
|
||||
start offset in mp3 frames. Double-quotes and backslash-espacing
|
||||
can be used to include white-space to individual parameters.
|
||||
By default, <em>mpg123</em> is launched.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-mp3-output</strong><dd>
|
||||
Command for starting mp3 output. Ecasound will write stereo,
|
||||
signed, 16bit, little-endian samples to standard output. Sample
|
||||
rate is configurable. Before execution, %f is replaced with
|
||||
path to the output mp3, %S with sample rate in kHz, and
|
||||
%B with encoding bitrate in kbps. Double-quotes and
|
||||
backslash-espacing can be used to include white-space to
|
||||
individual parameters. By default Ecasound will try to
|
||||
launch <em>lame</em>. As a special exception (added to Ecasound
|
||||
2.7.0), if the output program is "lame" and options
|
||||
include "--big-endian", Ecasound will detect this and output
|
||||
big-endian samples.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-ogg-input</strong><dd>
|
||||
Command for starting Ogg Vorbis input. Ecasound expects that audio samples
|
||||
are written to standard output. It should be noted that
|
||||
Ecasound is not able to query the audio format parameters from
|
||||
ogg files, so these need to be set manually by the user.
|
||||
Before execution, %f is replaced with path to the input ogg.
|
||||
Double-quotes and backslash-espacing can be used to include white-space
|
||||
to individual parameters. By default Ecasound will try to
|
||||
launch (ogg123).
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-ogg-output</strong><dd>
|
||||
Command for starting Ogg Vorbis output. Ecasound will write
|
||||
samples in little-endian format to standard output. Other
|
||||
audio parameters are configurable. Before execution, %f is
|
||||
replaced with path to the output ogg, %c, %s and %b with matching audio
|
||||
format parameters, and %B with encoding bitrate in kbps.
|
||||
Double-quotes and backslash-espacing can be used to include white-space to
|
||||
individual parameters. By default Ecasound will try to
|
||||
launch (oggenc).
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-mikmod</strong><dd>
|
||||
Command for starting mikmod input. Ecasound expects that
|
||||
signed, 16bit, stereo audio samples are written to standard
|
||||
output. Before execution, %f is replaced with
|
||||
file path, and %s with selected sample rate. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters. By default Ecasound will try to launch
|
||||
<em>mikmod</em>.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-timidity</strong><dd>
|
||||
Command for starting timidity++ input. Ecasound expects that
|
||||
signed, 16bit, stereo audio samples are written to standard
|
||||
output. Before execution, %f is replaced with file path, and
|
||||
%s with sample rate. Double-quotes and backslash-espacing can
|
||||
be used to include white-space to individual parameters.
|
||||
By default Ecasound will try to launch <em>timidity</em>.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-flac-input</strong><dd>
|
||||
Command for starting FLAC input. Ecasound expects that audio samples
|
||||
are written to standard output. It should be noted that
|
||||
Ecasound is not able to query the audio format parameters from
|
||||
FLAC files, so these need to be set manually by the user.
|
||||
Before execution, %f is replaced with path to the input FLAC
|
||||
file. Double-quotes and backslash-espacing can be used to include
|
||||
white-space to individual parameters. By default Ecasound will
|
||||
try to launch (flac).
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-flac-output</strong><dd>
|
||||
Command for starting FLAC output. Ecasound will write
|
||||
samples to standard output. All audio parameters are
|
||||
configurable. Before execution, %f is replaced with path to
|
||||
the output flac, %c, %b and %s with matching audio
|
||||
format parameters, %I with either 'signed' or 'unsigned', and
|
||||
%E with either 'little' or 'big'. Double-quotes and backslash-espacing
|
||||
can be used to include white-space to individual parameters. By default
|
||||
Ecasound will try to launch (flac).
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-aac-input</strong><dd>
|
||||
Command for starting AAC input. Ecasound expects that signed,
|
||||
16bit, stereo, big-endian audio samplesare written to standard
|
||||
output. It should be noted that Ecasound is not able to query
|
||||
the input sample rate, so this needs to be set manually by the user.
|
||||
Before execution, %f is replaced with path to the input AAC
|
||||
file. Note! FAAC must be compiled with MP4 support. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters. By default Ecasound will try to
|
||||
laucnh <em>faad</em>.
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-aac-output</strong><dd>
|
||||
Command for starting AAC output. Ecasound will write big-endian
|
||||
audio samples to standard output. All other audio parameters are
|
||||
configurable. Before execution, %f is replaced with path to
|
||||
the output AAC file, %c, %b and %s with matching audio format
|
||||
parameters. Note! FAAC must be compiled with MP4 support. Double-quotes
|
||||
and backslash-espacing can be used to include white-space to
|
||||
individual parameters. By default Ecasound will try to launch
|
||||
<em>faac</em>.
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>DEPRECATED</h2>
|
||||
<p>
|
||||
<dl>
|
||||
<p>
|
||||
<p><dt><strong>ext-cmd-wave-editor</strong><dd>
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<h2>SEE ALSO</h2>
|
||||
<p>
|
||||
ecasound (1), ecatools (1), ecasound-iam (1)
|
||||
<p>
|
||||
<h2>AUTHOR</h2>
|
||||
<p>
|
||||
Kai Vehmanen, <<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>>
|
|
@ -0,0 +1,220 @@
|
|||
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
|
||||
|
||||
.PP
|
||||
.SH "NAME"
|
||||
ecatools \- audio processing utils based on ecasound
|
||||
.PP
|
||||
.SH "SYNOPSIS"
|
||||
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecamonitor\fP [host][:port]
|
||||
.PP
|
||||
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
|
||||
.PP
|
||||
\fBecasignalview\fP [ options ] [ input ] [ output ]
|
||||
.PP
|
||||
.SH "DESCRIPTION"
|
||||
|
||||
.PP
|
||||
Ecatools are simple command line utils for audio file processing\&.
|
||||
Each tool is designed to perform one specific operation\&. Most of
|
||||
the tools also support batch processing\&.
|
||||
.PP
|
||||
\fBECACONVERT\fP
|
||||
.PP
|
||||
A tool for converting a set of files to a common target format\&.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is \fI\&.ext\fP\&.
|
||||
.PP
|
||||
\fBECAFIXDC\fP
|
||||
.PP
|
||||
A simple command-line tool for fixing DC-offset\&.
|
||||
.PP
|
||||
\fBECALENGTH\fP
|
||||
.PP
|
||||
See the separate ecalength(1) man page\&.
|
||||
.PP
|
||||
\fBECAMONITOR\fP
|
||||
.PP
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session\&. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things\&.
|
||||
.PP
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868"\&.
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo\&.mynetwork\&.com" or
|
||||
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
|
||||
.PP
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the \fI--daemon\fP option\&. Ecamonitor is
|
||||
implemented in Python using the NetECI API\&.
|
||||
.PP
|
||||
\fBECANORMALIZE\fP
|
||||
.PP
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution\&. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file\&.
|
||||
.PP
|
||||
\fBECAPLAY\fP
|
||||
.PP
|
||||
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library\&.
|
||||
.PP
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism\&. In playlist mode, files can be added to the playlist
|
||||
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
|
||||
to play all tracks on the playlist\&. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
|
||||
Playlist can be flushed with \fI-f\fP and its contents listed
|
||||
with \fI-l\fP option\&.
|
||||
.PP
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
|
||||
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
|
||||
environment variable or with the \fI-o:output_device\fP command-line
|
||||
option\&.
|
||||
.PP
|
||||
Playback can be stopped at any time with Ctrl-C\&. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one\&. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit\&.
|
||||
.PP
|
||||
.IP "-d:debuglevel"
|
||||
Set libecasound debug level\&. See ecasound(1)\&.
|
||||
.IP
|
||||
.IP "-f"
|
||||
Flush the playlist contents\&. See also
|
||||
options \fI-l, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-h"
|
||||
Print usage information and exit\&.
|
||||
.IP
|
||||
.IP "-k:number"
|
||||
Skip \&'number\&' of files\&.
|
||||
.IP
|
||||
.IP "-l"
|
||||
List the current playlist contents to stdout\&. See also
|
||||
options \fI-f, -p and -q\fP\&.
|
||||
.IP
|
||||
.IP "-o:output_device"
|
||||
Use \&'output_device\&' instead of the default output device
|
||||
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page)\&.
|
||||
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
|
||||
variable (more info below)\&.
|
||||
.IP
|
||||
.IP "-p"
|
||||
Play tracks in the playlist (in looped mode)\&. See also
|
||||
options \fI-f, -l and -q\fP\&.
|
||||
.IP
|
||||
.IP "-q"
|
||||
Queue new tracks to the playlist\&. All filenames given on
|
||||
the command-line will be added to the the playlist\&. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist\&. See also options \fI-f, -l
|
||||
and -p\fP\&.
|
||||
.IP
|
||||
\fBECASIGNALVIEW\fP
|
||||
.PP
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics\&. It accepts the following options:
|
||||
.PP
|
||||
.IP "input"
|
||||
The first option not starting with a \&'-\&' is interpreted
|
||||
as an input string\&. This can be a device or a filename\&. All formats
|
||||
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
|
||||
.IP
|
||||
.IP "output"
|
||||
Similarly to input, second option not starting with a \&'-\&'
|
||||
is interpreted as output\&. Defaults to \&'null\&'\&.
|
||||
.IP
|
||||
.IP "-b:buffersize"
|
||||
Buffersize in sample frames\&. Defaults to 128\&.
|
||||
.IP
|
||||
.IP "-c"
|
||||
Enable cumulative mode\&. Counters are not reseted after refresh\&.
|
||||
\fI*deprecated*\fP
|
||||
.IP
|
||||
.IP "-d"
|
||||
Enable debug mode\&.
|
||||
.IP
|
||||
.IP "-f:format_string"
|
||||
Specify default audio format\&. See ecasound(1) for details\&.
|
||||
.IP
|
||||
.IP "-r:rate_msec"
|
||||
Specify screen refresh rate in milliseconds\&.
|
||||
.IP
|
||||
.IP "-I"
|
||||
Use linear scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-L"
|
||||
Use logarithmic scale for showing audio sample amplitude\&.
|
||||
.IP
|
||||
.IP "-G, -B, -M*, -r, -z"
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details\&.
|
||||
.IP
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
.PP
|
||||
.IP "spacebar"
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count)\&.
|
||||
.IP
|
||||
.IP "q or Q or Esc"
|
||||
Quit ecasignalview\&.
|
||||
.IP
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i\&.e\&.
|
||||
from another console: "killall -v -HUP ecasignalview")\&.
|
||||
.PP
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
|
||||
-> Documentation\&'\&')\&.
|
||||
.PP
|
||||
.SH "ENVIRONMENT"
|
||||
|
||||
.PP
|
||||
\fIECASOUND\fP
|
||||
Path to the ecasound executable\&. Used by many ecatools\&.
|
||||
.PP
|
||||
\fIECAPLAY_OUTPUT_DEVICE\fP
|
||||
Device ecaplay should use for audio output\&. Same syntax
|
||||
as for ecaplay/ecasound "-o" option\&.
|
||||
.PP
|
||||
.SH "FILES"
|
||||
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecasoundrc\fP
|
||||
The default ecasound resource file\&. See ecasoundrc(5)
|
||||
for details\&.
|
||||
.PP
|
||||
\fI~/\&.ecasound/ecaplay_queue\fP
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path)\&.
|
||||
.PP
|
||||
.SH "SEE ALSO"
|
||||
|
||||
.PP
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
.PP
|
||||
.SH "AUTHOR"
|
||||
|
||||
.PP
|
||||
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>
|
|
@ -0,0 +1,248 @@
|
|||
<html><head>
|
||||
<title>ecatools</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecatools</h1>
|
||||
<h2>12.11.2005</h2>
|
||||
|
||||
<html><head>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1></h1>
|
||||
|
||||
<html><head>
|
||||
<title>ecatools(1)</title>
|
||||
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
|
||||
</head>
|
||||
<body>
|
||||
<hr>
|
||||
<h1>ecatools(1)</h1>
|
||||
<h2> Multimedia software</h2>
|
||||
<h2>12.11.2005</h2>
|
||||
|
||||
|
||||
<p>
|
||||
<h2>NAME</h2>ecatools - audio processing utils based on ecasound
|
||||
<p>
|
||||
<h2>SYNOPSIS</h2>
|
||||
<strong>ecaconvert</strong> .extension file1 [ file2 ... fileN ]
|
||||
<p>
|
||||
<strong>ecafixdc</strong> file1 [ file2 ... fileN ]
|
||||
<p>
|
||||
<strong>ecalength</strong> file1 [ file2 ... fileN ]
|
||||
<p>
|
||||
<strong>ecamonitor</strong> [host][:port]
|
||||
<p>
|
||||
<strong>ecanormalize</strong> file1 [ file2 ... fileN ]
|
||||
<p>
|
||||
<strong>ecaplay</strong> [-dfhklopq] [ file1 file2 ... fileN ]
|
||||
<p>
|
||||
<strong>ecasignalview</strong> [ options ] [ input ] [ output ]
|
||||
<p>
|
||||
<h2>DESCRIPTION</h2>
|
||||
<p>
|
||||
Ecatools are simple command line utils for audio file processing.
|
||||
Each tool is designed to perform one specific operation. Most of
|
||||
the tools also support batch processing.
|
||||
<p>
|
||||
<strong>ECACONVERT</strong>
|
||||
<p>
|
||||
A tool for converting a set of files to a common target format.
|
||||
This target format is given as the first command line
|
||||
argument, and its syntax is <em>.ext</em>.
|
||||
<p>
|
||||
<strong>ECAFIXDC</strong>
|
||||
<p>
|
||||
A simple command-line tool for fixing DC-offset.
|
||||
<p>
|
||||
<strong>ECALENGTH</strong>
|
||||
<p>
|
||||
See the separate ecalength(1) man page.
|
||||
<p>
|
||||
<strong>ECAMONITOR</strong>
|
||||
<p>
|
||||
Ecamonitor is a util program that can be used
|
||||
to monitor an active ecasound session. Ecamonitor
|
||||
is able to show information about the current
|
||||
chainsetup such as list of inputs, outputs,
|
||||
current position, effects, the engine status
|
||||
and numerous other things.
|
||||
<p>
|
||||
By default ecamonitor will try to connect
|
||||
to IP4 address "localhost", to port "2868".
|
||||
A different address can be specified when
|
||||
starting ecamonitor, for example
|
||||
"ecamonitor foo.mynetwork.com" or
|
||||
"ecamonitor foo.mynetwork.com:4500".
|
||||
<p>
|
||||
To enable inbound connections, ecasound has to be
|
||||
started with the <em>--daemon</em> option. Ecamonitor is
|
||||
implemented in Python using the NetECI API.
|
||||
<p>
|
||||
<strong>ECANORMALIZE</strong>
|
||||
<p>
|
||||
Ecanormalize is a command-line tool for normalizing audio
|
||||
files to utilize the full available sample resolution. Ecanormalize
|
||||
first finds out how much the input file can be amplified without
|
||||
clipping and if there is room for increase, a static gain will
|
||||
be applied to the file.
|
||||
<p>
|
||||
<strong>ECAPLAY</strong>
|
||||
<p>
|
||||
Ecaplay is a command-line tool for playing audio files. Ecaplay
|
||||
uses the libecasound engine and is thus able to handle all audio formats
|
||||
supported by the library.
|
||||
<p>
|
||||
Files can be selected for playback either by specifying the
|
||||
filenames on the command-line, or by using the playlist
|
||||
mechanism. In playlist mode, files can be added to the playlist
|
||||
using the <em>-q</em> option. The <em>-p</em> option can then be used
|
||||
to play all tracks on the playlist. Ecaplay will repeat the
|
||||
playlist tracks until explicitly stopped (with double Ctrl-C).
|
||||
Playlist can be flushed with <em>-f</em> and its contents listed
|
||||
with <em>-l</em> option.
|
||||
<p>
|
||||
If not otherwise specified, ecaplay will use the audio output device
|
||||
specified in <em>~/.ecasound/ecasoundrc</em> for playback. A different
|
||||
output device can be selected with <em>ECAPLAY_OUTPUT_DEVICE</em> shell
|
||||
environment variable or with the <em>-o:output_device</em> command-line
|
||||
option.
|
||||
<p>
|
||||
Playback can be stopped at any time with Ctrl-C. If multiple
|
||||
files are played, first Ctrl-C will stop the current file and move
|
||||
on to play the next one. Issuing Ctrl-C twice (within one second),
|
||||
will cause ecaplay to exit.
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>-d:debuglevel</strong><dd>
|
||||
Set libecasound debug level. See ecasound(1).
|
||||
<p>
|
||||
<p><dt><strong>-f</strong><dd>
|
||||
Flush the playlist contents. See also
|
||||
options <em>-l, -p and -q</em>.
|
||||
<p>
|
||||
<p><dt><strong>-h</strong><dd>
|
||||
Print usage information and exit.
|
||||
<p>
|
||||
<p><dt><strong>-k:number</strong><dd>
|
||||
Skip 'number' of files.
|
||||
<p>
|
||||
<p><dt><strong>-l</strong><dd>
|
||||
List the current playlist contents to stdout. See also
|
||||
options <em>-f, -p and -q</em>.
|
||||
<p>
|
||||
<p><dt><strong>-o:output_device</strong><dd>
|
||||
Use 'output_device' instead of the default output device
|
||||
(as specified in <em>~/.ecasound/ecasoundrc</em>). Syntax is same
|
||||
as used by "-o" ecasound option (see ecasound(1) man page).
|
||||
This option overrides the <em>ECAPLAY_OUTPUT_DEVICE</em> environment
|
||||
variable (more info below).
|
||||
<p>
|
||||
<p><dt><strong>-p</strong><dd>
|
||||
Play tracks in the playlist (in looped mode). See also
|
||||
options <em>-f, -l and -q</em>.
|
||||
<p>
|
||||
<p><dt><strong>-q</strong><dd>
|
||||
Queue new tracks to the playlist. All filenames given on
|
||||
the command-line will be added to the the playlist. It is
|
||||
possible to queue new tracks while another instance of
|
||||
ecaplay is using the playlist. See also options <em>-f, -l
|
||||
and -p</em>.
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
<strong>ECASIGNALVIEW</strong>
|
||||
<p>
|
||||
Ecasignalview is meant for monitoring signal amplitude and peak
|
||||
statistics. It accepts the following options:
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>input</strong><dd>
|
||||
The first option not starting with a '-' is interpreted
|
||||
as an input string. This can be a device or a filename. All formats
|
||||
supported by libecasound are accepted. Defaults to '/dev/dsp'.
|
||||
<p>
|
||||
<p><dt><strong>output</strong><dd>
|
||||
Similarly to input, second option not starting with a '-'
|
||||
is interpreted as output. Defaults to 'null'.
|
||||
<p>
|
||||
<p><dt><strong>-b:buffersize</strong><dd>
|
||||
Buffersize in sample frames. Defaults to 128.
|
||||
<p>
|
||||
<p><dt><strong>-c</strong><dd>
|
||||
Enable cumulative mode. Counters are not reseted after refresh.
|
||||
<em>*deprecated*</em>
|
||||
<p>
|
||||
<p><dt><strong>-d</strong><dd>
|
||||
Enable debug mode.
|
||||
<p>
|
||||
<p><dt><strong>-f:format_string</strong><dd>
|
||||
Specify default audio format. See ecasound(1) for details.
|
||||
<p>
|
||||
<p><dt><strong>-r:rate_msec</strong><dd>
|
||||
Specify screen refresh rate in milliseconds.
|
||||
<p>
|
||||
<p><dt><strong>-I</strong><dd>
|
||||
Use linear scale for showing audio sample amplitude.
|
||||
<p>
|
||||
<p><dt><strong>-L</strong><dd>
|
||||
Use logarithmic scale for showing audio sample amplitude.
|
||||
<p>
|
||||
<p><dt><strong>-G, -B, -M*, -r, -z</strong><dd>
|
||||
Ecasound options use to modify the engine behaviour, see
|
||||
ecasound(1) manpage for details.
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
When ecasignalview is running, the following keyboard
|
||||
commands can be used to control the operation (requires
|
||||
system support for UNIX terminal interface control):
|
||||
<p>
|
||||
<dl>
|
||||
<p><dt><strong>spacebar</strong><dd>
|
||||
Reset statistics (max-peak, avg-amplitude and clipped
|
||||
samples count).
|
||||
<p>
|
||||
<p><dt><strong>q or Q or Esc</strong><dd>
|
||||
Quit ecasignalview.
|
||||
<p>
|
||||
</dl>
|
||||
<p>
|
||||
It is also possible to reset the max-peak and clipped-samples
|
||||
counters by sending a SIGHUP signal to the process (i.e.
|
||||
from another console: "killall -v -HUP ecasignalview").
|
||||
<p>
|
||||
More complete documentation for ecasignalview can be found
|
||||
from "Ecasound User's Guide" (see ''http://www.eca.cx/ecasound
|
||||
-> Documentation'').
|
||||
<p>
|
||||
<h2>ENVIRONMENT</h2>
|
||||
<p>
|
||||
<em>ECASOUND</em>
|
||||
Path to the ecasound executable. Used by many ecatools.
|
||||
<p>
|
||||
<em>ECAPLAY_OUTPUT_DEVICE</em>
|
||||
Device ecaplay should use for audio output. Same syntax
|
||||
as for ecaplay/ecasound "-o" option.
|
||||
<p>
|
||||
<h2>FILES</h2>
|
||||
<p>
|
||||
<em>~/.ecasound/ecasoundrc</em>
|
||||
The default ecasound resource file. See ecasoundrc(5)
|
||||
for details.
|
||||
<p>
|
||||
<em>~/.ecasound/ecaplay_queue</em>
|
||||
File used to store the ecaplay playlist (one track per
|
||||
line with full path).
|
||||
<p>
|
||||
<h2>SEE ALSO</h2>
|
||||
<p>
|
||||
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
|
||||
<p>
|
||||
<h2>AUTHOR</h2>
|
||||
<p>
|
||||
Kai Vehmanen, <<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>>
|
|
@ -0,0 +1,435 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# Documentation/programmers_guide/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/programmers_guide/Makefile.am
|
||||
# Description: Ecasound documentation - programmer's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = .
|
||||
top_srcdir = ../..
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
subdir = Documentation/programmers_guide
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
EXTRA_DIST = ecasound_programmers_guide.txt \
|
||||
eci_doc.latex
|
||||
|
||||
DISTCLEANFILES = \
|
||||
ecasound_programmers_guide.html \
|
||||
eci_doc.log \
|
||||
eci_doc.aux \
|
||||
eci_doc.toc \
|
||||
eci_doc.dvi \
|
||||
eci_doc.ps \
|
||||
ecasound_eci_doc.pdf \
|
||||
html_ecidoc/eci_doc.html \
|
||||
html_ecidoc/eci_doc.haux \
|
||||
html_ecidoc/eci_doc.htoc
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
|
||||
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
|
||||
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
|
||||
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
|
||||
mkdir -p html_ecidoc
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
|
||||
eci_doc.dvi: $(srcdir)/eci_doc.latex
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
|
||||
rm -fv html_ecidoc/*
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,50 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/programmers_guide/Makefile.am
|
||||
# Description: Ecasound documentation - programmer's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
EXTRA_DIST = ecasound_programmers_guide.txt \
|
||||
eci_doc.latex
|
||||
|
||||
DISTCLEANFILES = \
|
||||
ecasound_programmers_guide.html \
|
||||
eci_doc.log \
|
||||
eci_doc.aux \
|
||||
eci_doc.toc \
|
||||
eci_doc.dvi \
|
||||
eci_doc.ps \
|
||||
ecasound_eci_doc.pdf \
|
||||
html_ecidoc/eci_doc.html \
|
||||
html_ecidoc/eci_doc.haux \
|
||||
html_ecidoc/eci_doc.htoc
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
|
||||
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
|
||||
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
|
||||
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
|
||||
mkdir -p html_ecidoc
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
|
||||
eci_doc.dvi: $(srcdir)/eci_doc.latex
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
|
||||
rm -fv html_ecidoc/*
|
|
@ -0,0 +1,435 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/programmers_guide/Makefile.am
|
||||
# Description: Ecasound documentation - programmer's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = Documentation/programmers_guide
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
EXTRA_DIST = ecasound_programmers_guide.txt \
|
||||
eci_doc.latex
|
||||
|
||||
DISTCLEANFILES = \
|
||||
ecasound_programmers_guide.html \
|
||||
eci_doc.log \
|
||||
eci_doc.aux \
|
||||
eci_doc.toc \
|
||||
eci_doc.dvi \
|
||||
eci_doc.ps \
|
||||
ecasound_eci_doc.pdf \
|
||||
html_ecidoc/eci_doc.html \
|
||||
html_ecidoc/eci_doc.haux \
|
||||
html_ecidoc/eci_doc.htoc
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
|
||||
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
|
||||
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
latex $(srcdir)/eci_doc.latex
|
||||
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
|
||||
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
|
||||
mkdir -p html_ecidoc
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
|
||||
|
||||
eci_doc.dvi: $(srcdir)/eci_doc.latex
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
|
||||
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
|
||||
rm -fv html_ecidoc/*
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,714 @@
|
|||
\documentclass{article}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{ae}
|
||||
|
||||
%\usepackage{html}
|
||||
%\bodytext{link="#662a00" vlink="#666655" bgcolor="#ffffff"}
|
||||
|
||||
\title{Ecasound Control Interface Guide}
|
||||
\author{Kai Vehmanen, Brad Bowman, Tony Leake, Jan Weil, Mario Lang}
|
||||
\date{03062006}
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\tableofcontents
|
||||
\clearpage
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
% ----------------------------------------------------------------------
|
||||
\section{Introduction}
|
||||
The idea behind the Ecasound Control Interface (ECI) is to take a subset of
|
||||
functionality provided by libecasound, provide a simple API for it, and
|
||||
port it to various languages. At the moment, implementations of the
|
||||
ECI API are available for C, C++, elisp, Python and Ruby. These all
|
||||
come by default with the Ecasound package. Additional implementations,
|
||||
for example for Perl and PHP, are distributed independently.
|
||||
|
||||
ECI is heavily based on Ecasound's interactive mode (EIAM), and the
|
||||
services it provides. See \texttt{ecasound-iam(1) manual page} for
|
||||
a detailed EIAM documentation.
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
% ----------------------------------------------------------------------
|
||||
\section{Document history}
|
||||
\begin{itemize}
|
||||
\item 04.06.2006 - Added more information to the ``Tips for debugging'' section.
|
||||
\item 21.03.2005 - Updated the ``Tips for debugging'' section.
|
||||
\item 25.09.2004 - Updated the ``Return values'' section based on feedback
|
||||
from Adam Linson.
|
||||
\item 02.05.2004 - ``Emacs'' section added (written by Mario Lang).
|
||||
\item 28.11.2003 - ``Ruby'' section added (written by Jan Weil).
|
||||
Updated the introduction.
|
||||
\item 26.11.2003 - Fix filename for the alternative Python API (eci.py).
|
||||
\item 18.11.2003 - Typo fixes. Updated documentation to reflect the new
|
||||
naming convention (ecasound refers to the binary,
|
||||
Ecasound refers to the whole package).
|
||||
\item 26.10.2002 - Changed the C++ linking example.
|
||||
\item 24.10.2002 - Added ``Notes Concerning Standalone ECI Implementations''
|
||||
section. Added compilation examples.
|
||||
\item 06.10.2002 - Added ``Application development'' section.
|
||||
\item 05.10.2002 - Changed the libecasoundc link path.
|
||||
\item 29.09.2002 - ``PHP'' section added (written by Tony Leake).
|
||||
\item 25.04.2002 - Changed headers path from ``<ecasoundc/file.h>'' to
|
||||
``<file.h>'' and added library version number to
|
||||
link instructions.
|
||||
\item 21.10.2001 - Added this history section. Minor changes to
|
||||
ECI examples.
|
||||
\end{itemize}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
% ----------------------------------------------------------------------
|
||||
\section{General}
|
||||
ECI doesn't provide any routines that directly manipulate audio or
|
||||
Ecasound objects. What it does provide is an easy and generic way
|
||||
to issue EIAM (Ecasound Inter-Active Mode) commands, access the
|
||||
command return-values and perform error handling.
|
||||
|
||||
This approach has two benefits. First, it is possible to keep the API
|
||||
small, and thus make it easier to port ECI to new languages. Secondly,
|
||||
it's possible to keep ECI relatively stable. Ecasound itself is a large,
|
||||
developing library. New features are added all the time, and from time
|
||||
to time, older parts of the library will get rewritten to better suit
|
||||
new uses. Now for application developers wanting to take advantage of
|
||||
libecasound, these constant changes are very annoying, especially if
|
||||
your specific app doesn't need the latest new features. In these
|
||||
cases, ECI is the best platform for application development.
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{What's it good for?}
|
||||
|
||||
Specific tasks ECI is aimed at:
|
||||
|
||||
\begin{itemize}
|
||||
\item 1. automating (scripting in its traditional sense)
|
||||
\item 2. frontends (generic / specialized)
|
||||
\item 3. sound services to other apps
|
||||
\end{itemize}
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Services and behaviour}
|
||||
|
||||
Here is a list of services provided by all ECI implementations:
|
||||
|
||||
\subsubsection{Actions}
|
||||
\begin{description}
|
||||
\item[command(string)]
|
||||
Issue an EIAM command.
|
||||
|
||||
\item[command\_float\_arg(string, float)]
|
||||
Issue an EIAM command. This function can be used instead of
|
||||
\emph{command(string)}, if the command in question requires exactly one
|
||||
numerical parameter. This way it's possible to avoid the extra
|
||||
string -> float conversion, which would lead to lost precision.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Return values}
|
||||
Each EIAM command has exactly one return value type. After a command
|
||||
has been issued, only one last\_type() functions returns a non-empty
|
||||
value. For example, last\_float() only returns a valid value if
|
||||
\emph{last\_type() == 'f'} holds true. Not all EIAM commands return
|
||||
a value (return type is void).
|
||||
|
||||
\begin{description}
|
||||
\item[last\_string()]
|
||||
Returns the last string return value.
|
||||
|
||||
\item[last\_string\_list()]
|
||||
Returns the last collection of strings (one or more strings).
|
||||
|
||||
\item[last\_float()]
|
||||
Returns the last floating-point return value. Note! last\_float()
|
||||
doesn't refer to the C/C++ type 'float'. In most implementations,
|
||||
floats are 64bit values (doubles in C/C++).
|
||||
|
||||
\item[last\_integer()]
|
||||
Returns the last integer return value. This function is also
|
||||
used to return boolean values, where non-zero means 'true'
|
||||
and zero 'false'.
|
||||
|
||||
\item[last\_long\_integer()]
|
||||
Returns the last long integer return value. Long integers are
|
||||
used to pass values like 'length\_in\_samples' and 'length\_in\_bytes'.
|
||||
It's implementation specific whether there's any real difference
|
||||
between integers and long integers.
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Errors}
|
||||
\begin{description}
|
||||
\item[error()]
|
||||
Returns true (!= 0) if error has occured during the execution
|
||||
of last EIAM command. Otherwise returns false (= 0).
|
||||
|
||||
\item[last\_error()]
|
||||
Returns a string describing the last error. If the last EIAM command
|
||||
was executed succesfully, last\_error() returns an empty string.
|
||||
|
||||
\end{description}
|
||||
|
||||
\subsubsection{Other}
|
||||
\begin{description}
|
||||
\item[initialize()]
|
||||
Reserve resources.
|
||||
|
||||
\item[cleanup()]
|
||||
Free all reserved resources.
|
||||
\end{description}
|
||||
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Porting to new environments}
|
||||
Porting ECI to new languages should be easy. All there is to do is
|
||||
to implement the services listed in the previous section to the target
|
||||
language. In most cases it's to easiest to use the C++ or C ECI
|
||||
as the underlying implementation to build upon.
|
||||
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
% ----------------------------------------------------------------------
|
||||
\section{Implementations}
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{General}
|
||||
|
||||
\subsubsection{Overview}
|
||||
This section contains overview of how ECI is implemented in the
|
||||
discussed language (eg. as a single class, set of classes, set of
|
||||
routines, etc).
|
||||
|
||||
\subsubsection{Usage}
|
||||
A quick tutorial to get you started.
|
||||
|
||||
\subsubsection{Example}
|
||||
Implementation of the following:
|
||||
\begin{enumerate}
|
||||
\item Setup ECI to read audio from file, apply a 100Hz lowpass filter, and
|
||||
send it to the soundcard (/dev/dsp).
|
||||
\item Every second, check the current position. If the stream has
|
||||
been running for over 15 seconds, exit immediately. Also,
|
||||
every second, increase the lowpass filter's cutoff frequency
|
||||
by 500Hz.
|
||||
\item Stop the stream (if not already finished) and disconnect the
|
||||
chainsetup. Print chain operator status info.
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Notes Concerning Standalone ECI Implementations}
|
||||
|
||||
The C implementation of ECI is not directly linked against the main
|
||||
Ecasound libraries. Instead, the ecasound executable is launched
|
||||
on the background and command pipes are used to communicate with it.
|
||||
|
||||
The launched ecasound executable can be selected by using the
|
||||
\emph{ECASOUND} environment variable. If it is not defined,
|
||||
the C ECI implementation will try to launch ``ecasound'' (ie.
|
||||
has to be somewhere in PATH).
|
||||
|
||||
In addition to the C implementation, this also affects all
|
||||
ECI implementations that are based on the C version. Currently
|
||||
this includes at least the Perl, PHP and Python ECI modules.
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{C++}
|
||||
\subsubsection{Overview}
|
||||
C++ implementation is based around the ECA\_CONTROL\_INTERFACE class.
|
||||
STL vector is used for representing collections of objects
|
||||
(last\_string\_list()).
|
||||
|
||||
\subsubsection{Usage}
|
||||
\begin{enumerate}
|
||||
\item \#include <eca-control-interface.h>
|
||||
\item create an instance of the ECA\_CONTROL\_INTERFACE class
|
||||
and use its member functions
|
||||
\item link you app agains libecasoundc (-lecasoundc)
|
||||
\item compilation example: \emph{c++ -o ecidoc\_example ecidoc\_example.cpp `libecasoundc-config --cflags --libs`}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
double cutoff_inc = 500.0;
|
||||
|
||||
ECA_CONTROL_INTERFACE e;
|
||||
e.command("cs-add play_chainsetup");
|
||||
e.command("c-add 1st_chain");
|
||||
e.command("ai-add some_file.wav");
|
||||
e.command("ao-add /dev/dsp");
|
||||
e.command("cop-add -efl:100");
|
||||
e.command("cop-select 1");
|
||||
e.command("copp-select 1");
|
||||
e.command("cs-connect");
|
||||
e.command("start");
|
||||
while(1) {
|
||||
sleep(1);
|
||||
e.command("engine-status");
|
||||
if (e.last_string() != "running") break;
|
||||
e.command("get-position");
|
||||
double curpos = e.last_float();
|
||||
if (curpos > 15.0) break;
|
||||
e.command("copp-get");
|
||||
double next_cutoff = cutoff_inc + e.last_float();
|
||||
e.command_float_arg("copp-set", next_cutoff);
|
||||
}
|
||||
|
||||
e.command("stop");
|
||||
e.command("cs-disconnect");
|
||||
e.command("cop-status");
|
||||
cerr << "Chain operator status: " << e.last_string() << endl;
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{C}
|
||||
\subsubsection{Overview}
|
||||
All C ECI functions are prefixed with "eci\_". When returning string
|
||||
values, a const pointer to a null-terminated char array (const char*)
|
||||
is returned. It's important to keep in mind that these are "borrowed"
|
||||
references. If you need to later use the data, you must copy
|
||||
it to application's own buffers.
|
||||
|
||||
Returning a list of strings is implemented using two functions:
|
||||
\emph{eci\_last\_string\_list\_count()} returns the number of strings
|
||||
available, and \emph{eci\_last\_string\_list\_item(int n)} returns a
|
||||
pointer (const char*) to the string at index \emph{n}.
|
||||
|
||||
\emph{Note!} As of Ecasound 2.0.1, the C ECI implementation also
|
||||
provides reentrant access to the ECI API. These
|
||||
alternative routines are marked with '\_r' postfix.
|
||||
|
||||
\subsubsection{Usage}
|
||||
|
||||
\begin{enumerate}
|
||||
\item \#include <ecasoundc.h>
|
||||
\item use the eci\_* routines
|
||||
\item link your app against libecasoundc (-lecasoundc)
|
||||
\item compilation example: \emph{gcc -o ecidoc\_example ecidoc\_example.c `libecasoundc-config --cflags --libs`}
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <ecasoundc.h>
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
double cutoff_inc = 500.0;
|
||||
|
||||
eci_init();
|
||||
eci_command("cs-add play_chainsetup");
|
||||
eci_command("c-add 1st_chain");
|
||||
eci_command("ai-add some_file.wav");
|
||||
eci_command("ao-add /dev/dsp");
|
||||
eci_command("cop-add -efl:100");
|
||||
eci_command("cop-select 1");
|
||||
eci_command("copp-select 1");
|
||||
eci_command("cs-connect");
|
||||
eci_command("start");
|
||||
|
||||
while(1) {
|
||||
double curpos, next_cutoff;
|
||||
|
||||
sleep(1);
|
||||
eci_command("engine-status");
|
||||
if (strcmp(eci_last_string(), "running") != 0) break;
|
||||
eci_command("get-position");
|
||||
curpos = eci_last_float();
|
||||
if (curpos > 15.0) break;
|
||||
eci_command("copp-get");
|
||||
next_cutoff = cutoff_inc + eci_last_float();
|
||||
eci_command_float_arg("copp-set", next_cutoff);
|
||||
}
|
||||
|
||||
eci_command("stop");
|
||||
eci_command("cs-disconnect");
|
||||
eci_command("cop-status");
|
||||
printf("Chain operator status: %s", eci_last_string());
|
||||
eci_cleanup();
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Emacs}
|
||||
\subsubsection{Overview}
|
||||
The Ecasound package comes with an 'Ecasound' library for Emacs included.
|
||||
ecasound.el is a implementation of the ECI API for Emacs, as well
|
||||
as an interactive interface to Ecasound sessions implemented
|
||||
on top of that. Simply use "M-x ecasound RET" to fire up an
|
||||
interactive Ecasound session.
|
||||
|
||||
All Emacs Lisp ECI functions are prefixed with ``eci\-''.
|
||||
'ecasound.el' is implemented in a high level manner which means
|
||||
that you won't find most of the commands known from libecasoundc like
|
||||
last\_string, last\_float, etc.
|
||||
Instead of that every call to function "eci-command", which accepts all
|
||||
the well known IAM commands, returns ecasound's response in an appropriate type
|
||||
automatically.
|
||||
If an error occurs, e. g. there's a typo in a command or a file is not found,
|
||||
the function returns ``nil''. In all other cases, either an automatically
|
||||
converted Lisp value is returned, or ``t'' in the case where there was no
|
||||
particular value returned.
|
||||
|
||||
Additionally, most of the available IAM commands have their own Emacs Lisp
|
||||
function including documentation and possibly a parameter list. All these
|
||||
functions are interactive, so you can use them in ecasound-iam-mode simply
|
||||
by invoking them via M-x or by pressing an assigned key combination.
|
||||
Emacs will prompt you for the required parameters, providing completion
|
||||
wherever possible.
|
||||
|
||||
As a convention, "eci-command" and its variants do take a buffer or process
|
||||
as an optional last argument. If this is ``nil'', the current
|
||||
buffer is assumed to be the ecasound session refered to by this call.
|
||||
This makes it possible to use several ECI sessions concurrently, dispatching
|
||||
on the buffer or process in use.
|
||||
|
||||
\subsubsection{Usage}
|
||||
\begin{enumerate}
|
||||
\item make ecasound.el available in your ``load-path''
|
||||
\item (require 'ecasound)
|
||||
\item create a buffer with an associated Ecasound session (``eci-init'')
|
||||
\item use ``eci\-'' functions with the new buffer
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
(require 'ecasound)
|
||||
|
||||
(defun example (file &optional cutoff-increment session)
|
||||
(unless cutoff-increment (setq cutoff-increment 500.0))
|
||||
(with-current-buffer (or session (eci-init))
|
||||
(eci-cs-add "play_chainsetup")
|
||||
(eci-c-add "1st_chain")
|
||||
(eci-ai-add file)
|
||||
(eci-ao-add "/dev/dsp")
|
||||
(eci-cop-add "-efl:100")
|
||||
(eci-cop-select 1)
|
||||
(eci-copp-select 1)
|
||||
(eci-cs-connect)
|
||||
(eci-start)
|
||||
(sit-for 1)
|
||||
(while (and (string= (eci-engine-status) "running")
|
||||
(<= (eci-get-position) 15))
|
||||
(eci-copp-set (+ cutoff-increment (eci-copp-get)))
|
||||
(sit-for 1))
|
||||
(eci-command "stop")
|
||||
(when (eci-cs-disconnect)
|
||||
(destructuring-bind
|
||||
((cop n1 (copp n2 val)))
|
||||
(cdr (assoc "1st_chain" (eci-cop-status)))
|
||||
(message "%s %s is now %f" cop copp val)))))
|
||||
\end{verbatim}
|
||||
|
||||
NOTE: function ``eci-cop-status'' is actually a very high level function
|
||||
which already converts the returned information to a nested list
|
||||
structure.
|
||||
|
||||
For more complex examples of the Emacs Lisp ECI implementation, see function
|
||||
``eci-example'', ``ecasound-normalize'' and ``ecasound-signalview'' in
|
||||
ecasound.el.
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Python}
|
||||
\subsubsection{Overview}
|
||||
Python implementation is based around the ECA\_CONTROL\_INTERFACE class.
|
||||
Lists are used for representing collections of objects.
|
||||
|
||||
Note! Eric S. Tiedemann has written an alternative Python interface
|
||||
to ECI. You'll find this interface included in the main
|
||||
Ecasound packege, in ``pyecasound/eci.py''. To use this instead
|
||||
of the standard interface, just 'import eci' and you're set! :)
|
||||
|
||||
\subsubsection{Usage}
|
||||
|
||||
\begin{enumerate}
|
||||
\item import pyeca
|
||||
\item create an instance of the ECA\_CONTROL\_INTERFACE class
|
||||
and use its member functions
|
||||
\item python 'yourapp.py' and that's it :)
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
|
||||
#!/usr/local/bin/python
|
||||
import time
|
||||
from pyeca import *
|
||||
e = ECA_CONTROL_INTERFACE()
|
||||
e.command("cs-add play_chainsetup")
|
||||
e.command("c-add 1st_chain")
|
||||
e.command("ai-add some_file.wav")
|
||||
e.command("ao-add /dev/dsp")
|
||||
e.command("cop-add -efl:100")
|
||||
e.command("cop-select 1")
|
||||
e.command("copp-select 1")
|
||||
e.command("cs-connect")
|
||||
e.command("start")
|
||||
cutoff_inc = 500.0
|
||||
while 1:
|
||||
time.sleep(1)
|
||||
e.command("engine-status")
|
||||
if e.last_string() != "running": break
|
||||
e.command("get-position")
|
||||
curpos = e.last_float()
|
||||
if curpos > 15: break
|
||||
e.command("copp-get")
|
||||
next_cutoff = cutoff_inc + e.last_float()
|
||||
e.command_float_arg("copp-set", next_cutoff)
|
||||
e.command("stop")
|
||||
e.command("cs-disconnect")
|
||||
e.command("cop-status")
|
||||
print "Chain operator status: ", e.last_string()
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Perl}
|
||||
\subsubsection{Overview}
|
||||
Audio::Ecasound provides perl bindings to the Ecasound
|
||||
control interface of the Ecasound program. You can use
|
||||
perl to automate or interact with Ecasound so you don't
|
||||
have to turn you back on the adoring masses packed into
|
||||
Wembly Stadium.
|
||||
|
||||
Audio::Ecasound was written by Brad Bowman. At the moment this module
|
||||
is not distributed with Ecasound. To get the latest version, check the
|
||||
following \texttt{CPAN link}.
|
||||
|
||||
\subsubsection{Usage}
|
||||
See the below example. For more info, here's another
|
||||
\texttt{CPAN link}.
|
||||
|
||||
\subsubsection{Example}
|
||||
use Audio::Ecasound qw(:simple);
|
||||
|
||||
\begin{verbatim}
|
||||
|
||||
eci("cs-add play_chainsetup");
|
||||
eci("c-add 1st_chain");
|
||||
eci("ai-add some_file.wav");
|
||||
eci("ao-add /dev/dsp");
|
||||
# multiple \n separated commands
|
||||
eci("cop-add -efl:100
|
||||
# with comments
|
||||
cop-select 1
|
||||
copp-select 1
|
||||
cs-connect");
|
||||
eci("start");
|
||||
my $cutoff_inc = 500.0;
|
||||
while (1) {
|
||||
sleep(1);
|
||||
last if eci("engine-status") ne "running";
|
||||
my $curpos = eci("get-position");
|
||||
last if $curpos > 15;
|
||||
my $next_cutoff = $cutoff_inc + eci("copp-get");
|
||||
# Optional float argument
|
||||
eci("copp-set", $next_cutoff);
|
||||
}
|
||||
eci("stop");
|
||||
eci("cs-disconnect");
|
||||
print "Chain operator status: ", eci("cop-status");
|
||||
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{PHP}
|
||||
\subsubsection{Overview}
|
||||
This PHP extension provides bindings to the Ecasound
|
||||
control interface. It is useful both for scripting Ecasound
|
||||
and for writing graphical audio applications with PHP Gtk.
|
||||
|
||||
The PHP Ecasound extension was written by Tony Leake. At the moment this module
|
||||
is not distributed with Ecasound. The latest version and example scripts, are
|
||||
available from \texttt{http://www.webwise-data.co.uk/php\_audio/php\_audio\_extension.html}.
|
||||
|
||||
\subsubsection{Usage}
|
||||
\begin{enumerate}
|
||||
\item Obtain and build the Ecasound PHP extension
|
||||
\item Initialise Ecasound, eci\_int();
|
||||
\item Issue EAM commands eg, eci\_command("cs-add my\_chain\_setup");
|
||||
\item Free resources, eci\_cleanup();
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
|
||||
Implementation of the following:
|
||||
|
||||
1. Setup ECI to read audio from file, apply a 100Hz lowpass filter,
|
||||
and send it to the soundcard (/dev/dsp).
|
||||
2. Every second, check the current position. If the stream has been
|
||||
running for over 15 seconds, exit immediately. Also, every second,
|
||||
increase the lowpass filter's cutoff frequency by 500Hz.
|
||||
3. Stop the stream (if not already finished) and disconnect the chainsetup.
|
||||
Print chain operator status info
|
||||
|
||||
<?php
|
||||
|
||||
$cutoff_inc = 500.0;
|
||||
$curpos=0;
|
||||
$next_cutoff=0;
|
||||
|
||||
eci_init();
|
||||
eci_command("cs-add play_chainsetup");
|
||||
eci_command("c-add 1st_chain");
|
||||
eci_command("ai-add /tmp/somefile.wav");
|
||||
eci_command("ao-add /dev/dsp");
|
||||
eci_command("cop-add -efl:10");
|
||||
eci_command("cop-select 1");
|
||||
eci_command("copp-select 1");
|
||||
eci_command("cs-connect");
|
||||
eci_command("start");
|
||||
|
||||
while(1) {
|
||||
|
||||
sleep(1);
|
||||
|
||||
eci_command("engine-status");
|
||||
if (eci_last_string() !="running"){
|
||||
break;
|
||||
}
|
||||
|
||||
eci_command("get-position");
|
||||
$curpos = eci_last_float();
|
||||
if ($curpos > 15.0){
|
||||
break;
|
||||
}
|
||||
|
||||
eci_command("copp-get");
|
||||
$next_cutoff = $cutoff_inc + eci_last_float();
|
||||
eci_command_float_arg("copp-set",$next_cutoff);
|
||||
}
|
||||
|
||||
eci_command("stop");
|
||||
eci_command("cs-disconnect");
|
||||
eci_command("cop-status");
|
||||
|
||||
printf("Chain operator status: %s", eci_last_string());
|
||||
|
||||
eci_cleanup();
|
||||
?>
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Ruby}
|
||||
\subsubsection{Overview}
|
||||
The Ecasound package comes with an 'Ecasound' module for Ruby included.
|
||||
If ruby is detected during the installation process it is installed
|
||||
automatically (assuming you are installing ecasound from source code).
|
||||
The module contains the class definition of a native ecasound control interface
|
||||
called "ControlInterface".
|
||||
|
||||
'Ecasound::ControlInterface' is implemented in a high level manner which means
|
||||
that you won't find most of the commands known from libecasoundc like
|
||||
last\_string, last\_float, etc.
|
||||
Instead of that every call to the instance method "command", which accepts all
|
||||
the well known IAM commands, returns ecasound's response in an appropriate type
|
||||
automatically.
|
||||
If an error occurs, e. g. there's a typo in a command or a file is not found,
|
||||
an exception of type EcasoundError is raised.
|
||||
|
||||
\subsubsection{Usage}
|
||||
\begin{enumerate}
|
||||
\item require 'ecasound'
|
||||
\item create an instance of Ecasound::ControlInterface
|
||||
\item use it's command method to send IAM commands to ecasound
|
||||
\item catch an EcasoundError if necessary
|
||||
\end{enumerate}
|
||||
|
||||
\subsubsection{Example}
|
||||
\begin{verbatim}
|
||||
#!/usr/bin/env ruby
|
||||
require "ecasound"
|
||||
|
||||
SOME_FILE = "path/to/file.wav"
|
||||
|
||||
e = Ecasound::ControlInterface.new()
|
||||
e.command("cs-add play_chainsetup")
|
||||
e.command("c-add 1st_chain")
|
||||
e.command("ai-add #{SOME_FILE}")
|
||||
e.command("ao-add /dev/dsp")
|
||||
e.command("cop-add -efl:100")
|
||||
e.command("cop-select 1")
|
||||
e.command("copp-select 1")
|
||||
e.command("cs-connect")
|
||||
e.command("start")
|
||||
|
||||
cutoff_inc = 500.0
|
||||
|
||||
loop do
|
||||
sleep(1)
|
||||
break if e.command("engine-status") != "running"
|
||||
break if e.command("get-position") > 15
|
||||
e.command("copp-set #{cutoff_inc + e.command('copp-get')}")
|
||||
end
|
||||
|
||||
e.command("stop")
|
||||
e.command("cs-disconnect")
|
||||
|
||||
$stdout << "Chain operator status: " + e.command("cop-status") + "\n"
|
||||
\end{verbatim}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
% ----------------------------------------------------------------------
|
||||
\section{Application development}
|
||||
|
||||
% ----------------------------------------------------------------------
|
||||
\subsection{Tips for debugging}
|
||||
|
||||
Here's a few tips what to do if the ECI app you have developed
|
||||
is not working correctly.
|
||||
|
||||
\begin{enumerate}
|
||||
\item Check your Ecasound installation. Try to run the ``ecasound''
|
||||
console user-interface and verify that the basic functionality
|
||||
is working (ie. something like ``ecasound -i foo.wav -o
|
||||
/dev/dsp''.
|
||||
|
||||
\item If developing in C or C++, check that your application
|
||||
is correcly linked: ``ldd /path/to/myapp''. All the libraries
|
||||
should be properly found.
|
||||
|
||||
\item Check error conditions. You should remember to check
|
||||
for errors in your ECI apps using the eci\_error() and
|
||||
eci\_last\_error() functions. Especially when intializing
|
||||
ECI for the first time and after important commands
|
||||
like ``cs-connect'', you should always check for errors.
|
||||
|
||||
\item Use the ECASOUND\_LOGFILE environment variable to write all
|
||||
engine output to a separate logfile. See ecasound(1) manpage
|
||||
for details on how to use this mechanism. Requires Ecasound
|
||||
version 2.4.5 or newer.
|
||||
|
||||
\item Utilize the ``int-log-history'' ECI command added to
|
||||
version 2.4.0 of Ecasound. Recent messages from the
|
||||
engine can help to track down the problem. Before use, you
|
||||
need to first set the history length to a non-zero value with
|
||||
``int-set-log-history-length''.
|
||||
|
||||
\item Launch Ecasound in interactive mode (``ecasound -c''),
|
||||
and issue the commands your ECI application is using,
|
||||
manually one-by-one and see what happens. If something
|
||||
goes wrong, increase Ecasound's debug level (for instance
|
||||
``-ddd'') and re-run the test.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
\end{document}
|
|
@ -0,0 +1,432 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# Documentation/users_guide/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/users_guide/Makefile.am
|
||||
# Description: Ecasound documentation - user's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
srcdir = .
|
||||
top_srcdir = ../..
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
subdir = Documentation/users_guide
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
EXTRA_DIST = users_guide.latex
|
||||
DISTCLEANFILES = \
|
||||
users_guide.log \
|
||||
users_guide.aux \
|
||||
users_guide.out \
|
||||
users_guide.dvi \
|
||||
users_guide.toc \
|
||||
users_guide.ps \
|
||||
ecasound_users_guide.pdf \
|
||||
html_uguide/users_guide.html \
|
||||
html_uguide/users_guide.haux \
|
||||
html_uguide/users_guide.htoc
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/users_guide/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/users_guide/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_users_guide.pdf
|
||||
|
||||
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
users_guide.dvi: $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
dvips -Ppdf -o users_guide.ps users_guide.dvi
|
||||
ps2pdf users_guide.ps ecasound_users_guide.pdf
|
||||
mkdir -p html_uguide
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
|
||||
ecasound_users_guide.pdf: users_guide.dvi
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_users_guide.pdf
|
||||
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
|
||||
rm -fv html_uguide/*
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,50 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/users_guide/Makefile.am
|
||||
# Description: Ecasound documentation - user's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
|
||||
EXTRA_DIST = users_guide.latex
|
||||
|
||||
DISTCLEANFILES = \
|
||||
users_guide.log \
|
||||
users_guide.aux \
|
||||
users_guide.out \
|
||||
users_guide.dvi \
|
||||
users_guide.toc \
|
||||
users_guide.ps \
|
||||
ecasound_users_guide.pdf \
|
||||
html_uguide/users_guide.html \
|
||||
html_uguide/users_guide.haux \
|
||||
html_uguide/users_guide.htoc
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_users_guide.pdf
|
||||
|
||||
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
users_guide.dvi: $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
dvips -Ppdf -o users_guide.ps users_guide.dvi
|
||||
ps2pdf users_guide.ps ecasound_users_guide.pdf
|
||||
mkdir -p html_uguide
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
|
||||
ecasound_users_guide.pdf: users_guide.dvi
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_users_guide.pdf
|
||||
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
|
||||
rm -fv html_uguide/*
|
||||
|
|
@ -0,0 +1,432 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Documentation/users_guide/Makefile.am
|
||||
# Description: Ecasound documentation - user's guide
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
# ---------------------------------------------------------------------
|
||||
# Files going into distribution:
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ../..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = Documentation/users_guide
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
EXTRA_DIST = users_guide.latex
|
||||
DISTCLEANFILES = \
|
||||
users_guide.log \
|
||||
users_guide.aux \
|
||||
users_guide.out \
|
||||
users_guide.dvi \
|
||||
users_guide.toc \
|
||||
users_guide.ps \
|
||||
ecasound_users_guide.pdf \
|
||||
html_uguide/users_guide.html \
|
||||
html_uguide/users_guide.haux \
|
||||
html_uguide/users_guide.htoc
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/users_guide/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Documentation/users_guide/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile
|
||||
installdirs:
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-libtool
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
|
||||
distclean distclean-generic distclean-libtool distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-data install-data-am install-exec install-exec-am \
|
||||
install-info install-info-am install-man install-strip \
|
||||
installcheck installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic \
|
||||
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
|
||||
uninstall-info-am
|
||||
|
||||
|
||||
all:
|
||||
|
||||
docs: ecasound_users_guide.pdf
|
||||
|
||||
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
|
||||
|
||||
# note: to create the table of contents (which spans multiple pages), and
|
||||
# re-calculate the page numbers after the page offset generated by table
|
||||
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
|
||||
|
||||
users_guide.dvi: $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
latex $(srcdir)/users_guide.latex
|
||||
dvips -Ppdf -o users_guide.ps users_guide.dvi
|
||||
ps2pdf users_guide.ps ecasound_users_guide.pdf
|
||||
mkdir -p html_uguide
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
|
||||
|
||||
ecasound_users_guide.pdf: users_guide.dvi
|
||||
|
||||
clean-docs:
|
||||
rm -fv ecasound_users_guide.pdf
|
||||
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
|
||||
rm -fv html_uguide/*
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,279 @@
|
|||
=======================================================================
|
||||
*** Ecasound - INSTALL ***
|
||||
=======================================================================
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It also creates the file `config.h' in the top-level source directory.
|
||||
This file contains system-dependent definitions. Finally, it creates
|
||||
a shell script `config.status' that you can run in the future to
|
||||
recreate the current configuration, a file `config.cache' that saves
|
||||
the results of its tests to speed up reconfiguring, and a file
|
||||
`config.log' containing compiler output (useful mainly for debugging
|
||||
`configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
4. If you have not specified an alternative install prefix with --prefix
|
||||
option, make sure that you have `/usr/local/lib´ in your
|
||||
`/etc/ld.so.conf' and then run `/sbin/ldconfig´ (as root).
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Ecasound specific options
|
||||
=========================
|
||||
|
||||
`--enable-all-static'
|
||||
Build static binaries that are not linked against any
|
||||
shared libraries. Disabled by default. Note! This is
|
||||
an experimental option and may not work in all
|
||||
circumstances.
|
||||
|
||||
`--enable-debug'
|
||||
Disables optimizations and other things preventing
|
||||
efficient debugging. Created executables and libraries
|
||||
have a "_debug" suffix. Disabled by default.
|
||||
|
||||
`--enable-experimental'
|
||||
Turns on some suspicious features. Not recommended.
|
||||
Disabled by default.
|
||||
|
||||
`--enable-python-force-site-packages'
|
||||
Force install of python modules into site-packages
|
||||
directory even when it doesn't exist. Disabled by
|
||||
default.
|
||||
|
||||
`--enable-sys-readline'
|
||||
If installed, link to system's default libreadline.
|
||||
Disabled by default.
|
||||
|
||||
`--disable-alsa'
|
||||
Don't compile support for ALSA-drivers (otherwise
|
||||
links to libasound). By default ALSA support is
|
||||
enabled if all the necessary header and library
|
||||
files are found.
|
||||
|
||||
`--disable-arts'
|
||||
Don't compile aRts client support. See http://www.arts-project.org
|
||||
for more info about aRts. By default aRts support is
|
||||
enabled if all the necessary header and library
|
||||
files are found.
|
||||
|
||||
`--disable-audiofile'
|
||||
Don't link to libaudiofile. By default libaudiofile support is
|
||||
enabled if all the necessary header and library
|
||||
files are found.
|
||||
|
||||
`--disable-dbc'
|
||||
Don't check design-by-contract assertions. Enabled by default.
|
||||
|
||||
`--disable-effects'
|
||||
Build ecasound without effect and controller components.
|
||||
Enabled by default.
|
||||
|
||||
`--disable-jack'
|
||||
Don't compile JACK client support. See
|
||||
http://jackit.sf.net for more info about JACK.
|
||||
By default JACK support is enabled if all the
|
||||
necessary header and library files are found.
|
||||
|
||||
`--disable-libsamplerate'
|
||||
Don't compile libsamplerate support. See
|
||||
http://www.mega-nerd.com/SRC for more info about
|
||||
libsamplerate. By default libsamplerate support is
|
||||
enabled if all the necessary header and library files
|
||||
are found.
|
||||
|
||||
`--disable-ncurses'
|
||||
Don't link against ncurses (known bug: even if this is
|
||||
specified, you're still required to have a working
|
||||
ncurses/termcap installation to compile). Enabled
|
||||
by default.
|
||||
|
||||
`--disable-oss'
|
||||
Don't compile support for OSS-drivers. Enabled by
|
||||
default.
|
||||
|
||||
`--disable-osstrigger'
|
||||
Disable the use of OSS trigger functions. Enabled
|
||||
by default.
|
||||
|
||||
`--disable-sndfile'
|
||||
Don't link to libsndfile. By default libsndfile support is
|
||||
enabled if all the necessary header and library
|
||||
files are found.
|
||||
|
||||
`--disable-largefile'
|
||||
Explicitly disable large file (>2GB) support.
|
||||
|
||||
`--with-jack=JACK_PREFIX'
|
||||
Enable JACK support and compile against JACK installed
|
||||
in 'JACK_PREFIX'.
|
||||
|
||||
`--with-libsamplerate=LIBSAMPLERATE_PREFIX'
|
||||
Enable libsamplerate support and compile against libsamplerate
|
||||
installed in 'LIBSAMPLERATE_PREFIX'.
|
||||
|
||||
`--enable-pyecasound={c,python,none}'
|
||||
Enable pyecasound and select which implementation to use.
|
||||
Default value based on target platform.
|
||||
|
||||
`--with-python-includes=DIR'
|
||||
Python include files are located in 'DIR'.
|
||||
|
||||
`--with-python-modules=DIR'
|
||||
Python modules should be installed to 'DIR'.
|
||||
|
||||
`--enable-rubyecasound={yes,no}'
|
||||
Enable rubyecasound. Defaults to yes if Ruby interpreter
|
||||
is found on the system.
|
||||
|
||||
`--with-extra-cppflags=ARG´
|
||||
Pass extra options to preprocessor (cpp). This option should
|
||||
be used to add non-standard header paths to the search path.
|
||||
|
||||
`--with-extra-libs=ARG´
|
||||
Pass extra options to linked (ld). This option should
|
||||
be used to add non-standard library paths to the search
|
||||
path, as well as additional libraries to link against.
|
||||
|
||||
Supported automake/autoconf features
|
||||
====================================
|
||||
|
||||
Ecasound uses the autotools (automake, automake and libtool)
|
||||
build system framework. Standard practises (see below for
|
||||
references) are followed where applicable.
|
||||
|
||||
Some features offered by the autotools do not work without
|
||||
explicit support from the package. Following is a short list of
|
||||
features that Ecasound _does_ support. If you encounter any
|
||||
problems in using these features with Ecasound, please report
|
||||
them as bugs.
|
||||
|
||||
1. Building Ecasound in a directory separate from the source
|
||||
directory.
|
||||
Example: "mkdir objdir ; cd objdir ; ../configure ; make"
|
||||
|
||||
2. 'uninstall' make target
|
||||
You should be able to uninstall Ecasound by running "make uninstall".
|
||||
Note that if you override any make variable when running "make install",
|
||||
you should specify the same variables also when running "make uninstall".
|
||||
Reference: Automake manual (see below)
|
||||
|
||||
3. 'DESTDIR' make variable for staging installs
|
||||
Reference: http://sources.redhat.com/automake/automake.html#Install
|
||||
|
||||
4. 'prefix', 'datadir', pkgdatadir' make variables
|
||||
You should be able to override any of the make variables
|
||||
on the make command-line. But remember to always override
|
||||
the same variables when you switch between make targets (see
|
||||
notes on (2)).
|
||||
Example: make prefix=/tmp/ecasound-foobar install
|
||||
|
||||
5. Overriding CPPFLAGS, CFLAGS, CXXFLAGS, etc variables.
|
||||
It is possible to override these parameters both before
|
||||
running the configure script (specify new values as
|
||||
environment variables), or at make time (specify new
|
||||
values on the make command-line). Note that these
|
||||
mechanisms are exclusive to each other.
|
||||
|
||||
To specify extra preprocessing and compile flags that are
|
||||
applied when building libecasound components, but not when
|
||||
building the test programs run by 'configure' script, one can
|
||||
use the environment variables ECA_S_EXTRA_CPPFLAGS and
|
||||
ECA_S_EXTRA_CFLAGS (define before running 'configure').
|
||||
|
||||
General references:
|
||||
|
||||
o Automake manual
|
||||
http://sources.redhat.com/automake/automake.html
|
||||
|
||||
o Autoconf manual
|
||||
http://www.gnu.org/software/autoconf/manual/
|
||||
|
||||
o GNU Coding Standards
|
||||
http://www.gnu.org/prep/standards/
|
||||
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
|
@ -0,0 +1,726 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Makefile.am
|
||||
# Description: Ecasound multitrack audio processing tool
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = .
|
||||
top_srcdir = .
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = .
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(srcdir)/ecasound.spec.in $(top_srcdir)/configure AUTHORS \
|
||||
COPYING INSTALL NEWS TODO compile config.guess config.sub \
|
||||
depcomp install-sh ltmain.sh missing
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno configure.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = ecasound.spec
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
|
||||
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
RELEASE = 1
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
ecasound.spec: $(top_builddir)/config.status $(srcdir)/ecasound.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkdir_p) $(distdir)/. $(distdir)/libecasound $(distdir)/libecasoundc
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-local
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||
check-am clean clean-generic clean-libtool clean-local \
|
||||
clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
|
||||
distclean distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-recursive distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am \
|
||||
install-data-local install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-recursive \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool \
|
||||
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am uninstall-local
|
||||
|
||||
|
||||
docs:
|
||||
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
install-data-local: ecasoundrc
|
||||
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
|
||||
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
|
||||
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
|
||||
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasound.el \
|
||||
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
|
||||
|
||||
ecasoundrc: ecasoundrc.in Makefile.am
|
||||
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
|
||||
-e "s%[@]prefix[@]%$(prefix)%" \
|
||||
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
|
||||
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
|
||||
|
||||
clean-local:
|
||||
rm -fv ecasoundrc
|
||||
|
||||
dist-hook: docs
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,43 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Makefile.am
|
||||
# Description: Ecasound multitrack audio processing tool
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
|
||||
|
||||
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
|
||||
PACKAGE = @PACKAGE@
|
||||
VERSION = @VERSION@
|
||||
RELEASE = 1
|
||||
|
||||
docs:
|
||||
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
install-data-local: ecasoundrc
|
||||
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
|
||||
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
|
||||
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
|
||||
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasound.el \
|
||||
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
|
||||
|
||||
ecasoundrc: ecasoundrc.in Makefile.am
|
||||
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
|
||||
-e "s%[@]prefix[@]%$(prefix)%" \
|
||||
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
|
||||
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
|
||||
|
||||
clean-local:
|
||||
rm -fv ecasoundrc
|
||||
|
||||
dist-hook: docs
|
|
@ -0,0 +1,726 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/Makefile.am
|
||||
# Description: Ecasound multitrack audio processing tool
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
|
||||
$(srcdir)/ecasound.spec.in $(top_srcdir)/configure AUTHORS \
|
||||
COPYING INSTALL NEWS TODO compile config.guess config.sub \
|
||||
depcomp install-sh ltmain.sh missing
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno configure.status.lineno
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = config.h
|
||||
CONFIG_CLEAN_FILES = ecasound.spec
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
|
||||
html-recursive info-recursive install-data-recursive \
|
||||
install-exec-recursive install-info-recursive \
|
||||
install-recursive installcheck-recursive installdirs-recursive \
|
||||
pdf-recursive ps-recursive uninstall-info-recursive \
|
||||
uninstall-recursive
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
DIST_ARCHIVES = $(distdir).tar.gz
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
|
||||
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
RELEASE = 1
|
||||
all: config.h
|
||||
$(MAKE) $(AM_MAKEFLAGS) all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
am--refresh:
|
||||
@:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
|
||||
cd $(srcdir) && $(AUTOMAKE) --foreign \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
echo ' $(SHELL) ./config.status'; \
|
||||
$(SHELL) ./config.status;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.h: stamp-h1
|
||||
@if test ! -f $@; then \
|
||||
rm -f stamp-h1; \
|
||||
$(MAKE) stamp-h1; \
|
||||
else :; fi
|
||||
|
||||
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
|
||||
@rm -f stamp-h1
|
||||
cd $(top_builddir) && $(SHELL) ./config.status config.h
|
||||
$(srcdir)/config.h.in: $(am__configure_deps)
|
||||
cd $(top_srcdir) && $(AUTOHEADER)
|
||||
rm -f stamp-h1
|
||||
touch $@
|
||||
|
||||
distclean-hdr:
|
||||
-rm -f config.h stamp-h1
|
||||
ecasound.spec: $(top_builddir)/config.status $(srcdir)/ecasound.spec.in
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
# This directory's subdirectories are mostly independent; you can cd
|
||||
# into them and run `make' without going through this Makefile.
|
||||
# To change the values of `make' variables: instead of editing Makefiles,
|
||||
# (1) if the variable is set in `config.status', edit `config.status'
|
||||
# (which will cause the Makefiles to be regenerated when you run `make');
|
||||
# (2) otherwise, pass the desired values on the `make' command line.
|
||||
$(RECURSIVE_TARGETS):
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@failcom='exit 1'; \
|
||||
for f in x $$MAKEFLAGS; do \
|
||||
case $$f in \
|
||||
*=* | --[!k]*);; \
|
||||
*k*) failcom='fail=yes';; \
|
||||
esac; \
|
||||
done; \
|
||||
dot_seen=no; \
|
||||
case "$@" in \
|
||||
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
|
||||
*) list='$(SUBDIRS)' ;; \
|
||||
esac; \
|
||||
rev=''; for subdir in $$list; do \
|
||||
if test "$$subdir" = "."; then :; else \
|
||||
rev="$$subdir $$rev"; \
|
||||
fi; \
|
||||
done; \
|
||||
rev="$$rev ."; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
for subdir in $$rev; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| eval $$failcom; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
|
||||
include_option=--etags-include; \
|
||||
empty_fix=.; \
|
||||
else \
|
||||
include_option=--include; \
|
||||
empty_fix=; \
|
||||
fi; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test ! -f $$subdir/TAGS || \
|
||||
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
|
||||
fi; \
|
||||
done; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
$(mkdir_p) $(distdir)/. $(distdir)/libecasound $(distdir)/libecasoundc
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d "$(distdir)/$$subdir" \
|
||||
|| $(mkdir_p) "$(distdir)/$$subdir" \
|
||||
|| exit 1; \
|
||||
distdir=`$(am__cd) $(distdir) && pwd`; \
|
||||
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$$top_distdir" \
|
||||
distdir="$$distdir/$$subdir" \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" distdir="$(distdir)" \
|
||||
dist-hook
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-tarZ: distdir
|
||||
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-shar: distdir
|
||||
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist-zip: distdir
|
||||
-rm -f $(distdir).zip
|
||||
zip -rq $(distdir).zip $(distdir)
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
case '$(DIST_ARCHIVES)' in \
|
||||
*.tar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
|
||||
*.tar.bz2*) \
|
||||
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
|
||||
*.tar.Z*) \
|
||||
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
|
||||
*.shar.gz*) \
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
|
||||
*.zip*) \
|
||||
unzip $(distdir).zip ;;\
|
||||
esac
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/_build
|
||||
mkdir $(distdir)/_inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/_build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist \
|
||||
&& rm -rf $(DIST_ARCHIVES) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@(echo "$(distdir) archives ready for distribution: "; \
|
||||
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
|
||||
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
|
||||
distuninstallcheck:
|
||||
@cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
@if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile config.h
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic distclean-hdr \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-recursive
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am: install-data-local
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf $(top_srcdir)/autom4te.cache
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am uninstall-local
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
|
||||
check-am clean clean-generic clean-libtool clean-local \
|
||||
clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
|
||||
dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
|
||||
distclean distclean-generic distclean-hdr distclean-libtool \
|
||||
distclean-recursive distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am html html-am info info-am \
|
||||
install install-am install-data install-data-am \
|
||||
install-data-local install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs installdirs-am maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-recursive \
|
||||
mostlyclean mostlyclean-generic mostlyclean-libtool \
|
||||
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am uninstall-local
|
||||
|
||||
|
||||
docs:
|
||||
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
|
||||
|
||||
install-data-local: ecasoundrc
|
||||
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
|
||||
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
|
||||
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
|
||||
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
|
||||
|
||||
uninstall-local:
|
||||
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasound.el \
|
||||
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
|
||||
$(DESTDIR)$(pkgdatadir)/ecasoundrc
|
||||
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
|
||||
|
||||
ecasoundrc: ecasoundrc.in Makefile.am
|
||||
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
|
||||
-e "s%[@]prefix[@]%$(prefix)%" \
|
||||
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
|
||||
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
|
||||
|
||||
clean-local:
|
||||
rm -fv ecasoundrc
|
||||
|
||||
dist-hook: docs
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,323 @@
|
|||
=======================================================================
|
||||
*** Ecasound - README (author/maintainer: Kai Vehmanen) ***
|
||||
=======================================================================
|
||||
-----------------------------------------------------------------------
|
||||
What is it?
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Ecasound is a software package designed for multitrack audio
|
||||
processing. It can be used for simple tasks like audio playback,
|
||||
recording and format conversions, as well as for multitrack effect
|
||||
processing, mixing, recording and signal recycling. Ecasound supports
|
||||
a wide range of audio inputs, outputs and effect algorithms.
|
||||
Effects and audio objects can be combined in various ways, and their
|
||||
parameters can be controlled by operator objects like oscillators
|
||||
and MIDI-CCs. A versatile console mode user-interface is included
|
||||
in the package.
|
||||
|
||||
Primary platform for running Ecasound is Linux. Ecasound also
|
||||
works on many UNIX-derived systems such as FreeBSD and Solaris.
|
||||
Limited support for Windows is available through Cygwin.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
How do you... (author: Kai Vehmanen)
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
... spell the name?
|
||||
|
||||
I haven't been very consistent with this, but at least in principle,
|
||||
when capitalized, the name refers to the whole package. When in lower
|
||||
case, it refers to the console mode application which happens to have
|
||||
the same name.
|
||||
|
||||
"Ecasound" = the whole package
|
||||
"ecasound" = the console mode client application (binary)
|
||||
|
||||
... pronounce the name?
|
||||
|
||||
Any way you want! :) Personally I say something to the effect of
|
||||
"eck-uh-sound". Start from "megasound", and omit pronouncing the
|
||||
'm' at the start, and replace 'g' with a sharper 'k' sound, like
|
||||
in the word "car".
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Story behind Ecasound (author: Kai Vehmanen)
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
I started developing Ecasound because I needed an application to
|
||||
record, process and mix my own music. The first versions of Ecasound
|
||||
ran under IBM OS/2. I used those versions for finalizing my analog
|
||||
4-track recordings.
|
||||
|
||||
The analog 4-track - Tascam 414 - was a nice tool, but it
|
||||
had its limits. So eventually I started looking for PC software
|
||||
that supported multitrack recording. The first programs I used were
|
||||
for Windows. I still used the OS/2 version of Ecasound for effects
|
||||
processing and finalizing my mixes. Although I'm not fanatical
|
||||
about operating systems, I did prefer (and still do) to use Linux
|
||||
for my computing needs. I also hate rebooting between multiple
|
||||
systems all the time, so it was time to do a port.
|
||||
|
||||
When I ported Ecasound to Linux, a lot of functionality was rewritten
|
||||
from scratch. During this work I also added multitrack capabilities
|
||||
to Ecasound. It took quite a lot of effort to put it all back
|
||||
together, but in the end I reached the point where I could do
|
||||
all the audio processing tasks on Linux. As an additional benefit
|
||||
I now had source code for - and thus control over - all tools I used
|
||||
for audio processing.
|
||||
|
||||
Nowadays I still use Ecasound for my music projects. This is also
|
||||
the primary motivation for continuing the development work. There is
|
||||
always something to improve.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Requirements
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
To run Ecasound, you need...:
|
||||
|
||||
- Operating system that provides standard POSIX/SUS interfaces. Ecasound
|
||||
has been reported to run succefully on various combinations of GNU/Linux
|
||||
(starting from Linux 2.2+ and glibc 2.1+), FreeBSD 4.x+, Solaris 2.6+,
|
||||
Mac OS X 10.3+ and Win32/Cygwin 1.3.20+.
|
||||
|
||||
Optional when running Ecasound:
|
||||
|
||||
- for real-time audio input/output: ALSA, JACK or OSS runtime
|
||||
- for mp3 support: mpg123 (input) and lame (output) packages
|
||||
- for Ogg Vorbis support, the vorbis-tools package (ogg123 and oggenc)
|
||||
- for .aac/.m4a/.mp4 file support, the FAAC/FAAD2 tools
|
||||
- for .flac support, the FLAC package
|
||||
- note: since ecasound 2.4.5, libsndfile is the preferred
|
||||
way for reading and writing FLAC files
|
||||
- for MIDI .mid file input: Timidity++
|
||||
- for tracker module support: MikMod package
|
||||
- for aRts (legacy KDE) support: the aRts server suntime
|
||||
|
||||
To compile Ecasound, you also need...:
|
||||
|
||||
- POSIX/SUS development environment, compatible with
|
||||
'The Single UNIX Specification, Version 2' (UNIX98):
|
||||
- http://www.unix.org/version2/
|
||||
- http://www.opengroup.org/onlinepubs/007908799/index.html
|
||||
Ecasound requires the following feature groups:
|
||||
- "Realtime":
|
||||
http://www.opengroup.org/onlinepubs/007908799/xsh/realtime.html
|
||||
- "Realtime Threads":
|
||||
http://www.opengroup.org/onlinepubs/007908799/xsh/feature.html#tag_000_005_003
|
||||
- Standard C++ build environment (with support for STL and
|
||||
exceptions); tested with egcs 1.1.2, gcc versions 2.91.66,
|
||||
2.95.X, 3.0-3.4, 4.0-4.3, and Sun Workshop 6 C5.2 C++.
|
||||
- GNU make
|
||||
- http://www.gnu.org/software/make/
|
||||
|
||||
Optional when compiling Ecasound:
|
||||
|
||||
- for extented file format support (aiff, snd, w64 and so forth):
|
||||
- libaudiofile (SGI audio file library) runtime, and/or
|
||||
- libsndfile
|
||||
- for higher quality resampling: libsamplerate
|
||||
- for pyecasound, the Python devel package
|
||||
- for curses support, the ncurses devel package
|
||||
- for LADSPA support, the LADSPA SDK package
|
||||
- for ALSA support, the ALSA devel package
|
||||
- for JACK support, the JACK devel package
|
||||
- for aRts support, the aRts C-API devel package
|
||||
- for inner loop optimizations (performance improvements),
|
||||
the liboil package
|
||||
- for Open Sound Control (OSC) support, liblo package
|
||||
|
||||
Additional packages needed, when building Ecasound from a clean
|
||||
version control checkout:
|
||||
|
||||
- automake
|
||||
- http://www.gnu.org/software/automake/
|
||||
- autoconf 2.50+
|
||||
- http://www.gnu.org/software/autoconf/
|
||||
- libtool
|
||||
- http://www.gnu.org/software/libtool/
|
||||
- pkg-config
|
||||
- http://pkg-config.freedesktop.org/wiki/
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Installing
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
You should first try installing Ecasound from a binary package (files
|
||||
in rpm, dpkg, etc format -- depends on your system). On some systems
|
||||
Ecasound is part of the distribution and can be installed easily with
|
||||
tools such as apt-get, yum and others. This is probably the easiest and
|
||||
most straightforward way to install Ecasound.
|
||||
|
||||
If you need to compile Ecasound, the file 'INSTALL' contains detailed
|
||||
instructions on how to do this.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Documentation
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Ecasound documentation is updated whenever new features are added
|
||||
or existing features are modified. Some things are not documented
|
||||
in great detail, but on the other hand, documentation is kept
|
||||
up-to-date. So in short, correctness over volume. The primary
|
||||
documentation sources are:
|
||||
|
||||
- Ecasound User's Guide
|
||||
- Ecasound Programmer's Guide
|
||||
- Ecasound Control Interface Guide
|
||||
- manual pages
|
||||
- ecasound(1)
|
||||
- ecatools(1): ecaplay(1), ecaconvert(1), ...
|
||||
- ecasound-iam(1)
|
||||
- ecasoundrc(5)
|
||||
- misc HTML-formatted docs (Documentation/*.html)
|
||||
- command line help
|
||||
- ecasound --help
|
||||
|
||||
Probably the best place to start is the examples section of
|
||||
Ecasound's HTML-documentation (Documentation/examples.html).
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Mailing lists
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
- ecasound-list at lists dot sourceforge dot net:
|
||||
|
||||
A general discussion forum for developers and users of Ecasound and
|
||||
related tools. Announcements of new versions, bug warnings, etc will be
|
||||
posted to this list. If you have problems compiling, installing or
|
||||
using Ecasound, this is a good place to ask for help. Reports of
|
||||
working software/hardware combinations are also welcome. You can
|
||||
browse the message archives at http://eca.cx/ecasound-list/
|
||||
|
||||
You can join the lists using the following web front-end:
|
||||
http://eca.cx/ecasound/mlists.php
|
||||
|
||||
- linux-audio-announce at lists.linuxaudio.org
|
||||
|
||||
Announcements of Ecasound releases will, in addition to
|
||||
ecasound-list, be sent to the linux-audio-announce list. See the
|
||||
list home page at http://www.linuxdj.com/audio/lad/subscribelaa.php
|
||||
for more information.
|
||||
|
||||
You can also subscribe to Ecasound releases at http://freshmeat.net .
|
||||
All Ecasound releases will be announced at Freshmeat.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Reporting bugs
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
See the 'BUGS' files.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Web sites
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Ecasound home site
|
||||
- http://eca.cx/ecasound
|
||||
|
||||
Download releases
|
||||
- http://ecasound.seul.org/download/ (primary site)
|
||||
- http://ecawave.sf.net/download/ (mirror)
|
||||
- http://eca.cx/download/ (mirror)
|
||||
|
||||
Eca projects portal (links, apps based on Ecasound, etc)
|
||||
- http://eca.cx
|
||||
- http://ecasound.seul.org (US mirror)
|
||||
- http://ecasound.sourceforge.net (another US mirror)
|
||||
|
||||
Examples of real-life Ecasound usage
|
||||
- http://eca.cx/ecasound_users.html
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
About free open-source software (FOSS) development
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
You should keep in mind that FOSS [1] development process differs
|
||||
greatly from closed commercial development. Active participation,
|
||||
both from developers and users, is what pushes a FOSS project forward.
|
||||
|
||||
Every succesful FOSS project has an active userbase behind it. This
|
||||
means that your comments, ideas and bug reports are extremely
|
||||
important. If something does not work, or some feature is missing,
|
||||
be active. Either try to fix the problem yourself, or report it
|
||||
on the ecasound-list mailing list.
|
||||
|
||||
[1] Although Ecasound is free software (http://www.gnu.org), it also
|
||||
fits the definition of open-source software (http://www.opensource.org/).
|
||||
Although the two initiatives have different goals, they also share
|
||||
a lot in common. The term FOSS is used to refer to both of them,
|
||||
while still acknowledging the difference between the two.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
How stable is stable?
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Although publically released versions are called stable, this is not
|
||||
a guarantee of any kind. Before releases, a small set of test cases is
|
||||
run to verify that all basic features are working. The developers
|
||||
also use the very latest versions themselves, so hopefully at least
|
||||
all obvious bugs are found before stable releases are made. But
|
||||
otherwise no guarantees are given.
|
||||
|
||||
On the other hand, as Ecasound is free software, you have the
|
||||
possibility to review the code yourself, perform tests, and fix any
|
||||
bugs you might find, or get someone to fix them for you. In the end
|
||||
you have the control.
|
||||
|
||||
The more people there are participate in Ecasound development, testing
|
||||
and related discussions, the better Ecasound will become!
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Authors
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
See the file 'AUTHORS'.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Thanks to
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
DotCX (www.nic.cx)
|
||||
For providing 'eca.cx' domain free of charge 2000-2004.
|
||||
SEUL (www.seul.org)
|
||||
For hosting Ecasound CVS, ftp, and http services since 1999.
|
||||
SourceForge.net
|
||||
For hosting Ecasound, Ecawave and Ecamegapedal ftp and
|
||||
http mirror sites since 1999.
|
||||
Wakkanet Oy (www.wakkanet.fi)
|
||||
For various hosting services 1999-2004.
|
||||
|
||||
Linux-audio-dev community
|
||||
Always a great source of inspiration! Special thanks
|
||||
to Paul Davis, who has kept on pushing Linux audio
|
||||
forward all these years.
|
||||
|
||||
Endersz, Viktor
|
||||
For sending me the adv.compressor source code!
|
||||
Phillips, Dave
|
||||
The 'Linux Sound & MIDI' website was the reason
|
||||
why I initially got interested in Linux audio!
|
||||
|
||||
And of course, to all the contributors (see the file 'AUTHORS')
|
||||
and to users who have given feedback, ideas and helped with testing!
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Licensing/distribution policy
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Copyright (C) 1997-2010 Kai Vehmanen and others (see the file
|
||||
'AUTHORS' for full list of copyright holders).
|
||||
|
||||
Ecasound is freely distributable according to the terms of the
|
||||
GNU General Public License (see the file 'COPYING.GPL').
|
||||
|
||||
This program is distributed without any warranty. See the file
|
||||
'COPYING.GPL' for details.
|
||||
|
||||
As an exception to the above, the C, C++ and python implementations
|
||||
of the Ecasound Control Interface (ECI) are licensed under the LGPL
|
||||
(see the file 'COPYING.LGPL'). This allows writing ECI applications
|
||||
that are not licensed under GPL.
|
||||
|
||||
=======================================================================
|
|
@ -0,0 +1,23 @@
|
|||
-----------------------------------------------------------------------
|
||||
*** Ecasound - To do list / Plans ***
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Ecasound bug tracker at sourceforge.net
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
The Ecasound bug tracker at sourceforge.net is also used to track
|
||||
feature requests:
|
||||
|
||||
- https://sourceforge.net/tracker/?group_id=4605&atid=104605
|
||||
|
||||
This same tracker is used for both longstanding bugs, as well as
|
||||
for keeping tracking of feature/improvement requests. It replaces
|
||||
the old Ecasound Development Item practise (items marked with 'edi-x'
|
||||
tags) that was used during years 2002-08.
|
||||
|
||||
Active development areas
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
Probably the best way to follow active development is to
|
||||
subscribe to the ecasound-list mailing list (see the "Mailing
|
||||
lists" section in README).
|
|
@ -0,0 +1,219 @@
|
|||
dnl ---
|
||||
dnl acinclude.m4 for ecasound
|
||||
dnl last modified: 20050816-13
|
||||
dnl ---
|
||||
|
||||
## ------------------------------------------------------------------------
|
||||
## Check for JACK support
|
||||
##
|
||||
## defines: ECA_AM_COMPILE_JACK, ECA_S_JACK_LIBS, ECA_S_JACK_INCLUDES,
|
||||
## ECA_COMPILE_JACK, ECA_JACK_TRANSPORT_API
|
||||
## ------------------------------------------------------------------------
|
||||
|
||||
AC_DEFUN([AC_CHECK_JACK],
|
||||
[
|
||||
AC_CHECK_HEADER(jack/jack.h,jack_support=yes,jack_support=no)
|
||||
|
||||
AC_ARG_WITH(jack,
|
||||
[ --with-jack=DIR Compile against JACK installed in DIR],
|
||||
[
|
||||
ECA_S_JACK_LIBS="-L${withval}/lib"
|
||||
ECA_S_JACK_INCLUDES="-I${withval}/include"
|
||||
jack_support=yes
|
||||
])
|
||||
|
||||
AC_ARG_ENABLE(jack,
|
||||
[ --enable-jack Enable JACK support (default=yes, if found)],
|
||||
[
|
||||
case "$enableval" in
|
||||
y | yes)
|
||||
AC_MSG_RESULT(yes)
|
||||
jack_support=yes
|
||||
;;
|
||||
|
||||
n | no)
|
||||
AC_MSG_RESULT(no)
|
||||
jack_support=no
|
||||
;;
|
||||
|
||||
*)
|
||||
AC_MSG_ERROR([Invalid parameter value for --enable-jack: $enableval])
|
||||
;;
|
||||
esac
|
||||
])
|
||||
|
||||
AM_CONDITIONAL(ECA_AM_COMPILE_JACK, test x$jack_support = xyes)
|
||||
|
||||
if test x$jack_support = xyes; then
|
||||
AC_DEFINE([ECA_COMPILE_JACK], 1, [enable JACK support])
|
||||
ECA_S_JACK_LIBS="${ECA_S_JACK_LIBS} -ljack"
|
||||
case "$host" in
|
||||
*darwin*)
|
||||
AM_LDFLAGS="$AM_LDFLAGS -framework CoreAudio"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
AC_LANG_C
|
||||
old_cppflags=$CPPFLAGS
|
||||
old_ldflags=$LDFLAGS
|
||||
old_INCLUDES=$INCLUDES
|
||||
CPPFLAGS="$CPPFLAGS $ECA_S_JACK_INCLUDES"
|
||||
LDFLAGS="$LDFLAGS $ECA_S_JACK_LIBS"
|
||||
INCLUDES="--host=a.out-i386-linux"
|
||||
|
||||
AC_TRY_LINK(
|
||||
[ #include <jack/transport.h> ],
|
||||
[
|
||||
jack_position_t t;
|
||||
int *a = (void*)&jack_transport_query;
|
||||
int *b = (void*)&jack_transport_start;
|
||||
int *c = (void*)&jack_transport_stop;
|
||||
int *d = (void*)&jack_transport_locate;
|
||||
t.frame = 0;
|
||||
t.valid = 0;
|
||||
return 0;
|
||||
],
|
||||
[ ECA_JACK_TRANSPORT_API="3" ],
|
||||
[ ECA_JACK_TRANSPORT_API="2" ]
|
||||
)
|
||||
|
||||
AC_TRY_LINK(
|
||||
[ #include <jack/transport.h> ],
|
||||
[
|
||||
jack_transport_info_t t;
|
||||
t.state = 0;
|
||||
return 0;
|
||||
],
|
||||
[ ECA_JACK_TRANSPORT_API="1" ],
|
||||
[ true ]
|
||||
)
|
||||
|
||||
CPPFLAGS="$old_cppflags"
|
||||
LDFLAGS="$old_ldflags"
|
||||
INCLUDES="$old_INCLUDES"
|
||||
|
||||
echo "Using JACK transport API version:" ${ECA_JACK_TRANSPORT_API}
|
||||
AC_DEFINE_UNQUOTED([ECA_JACK_TRANSPORT_API], ${ECA_JACK_TRANSPORT_API}, [version of JACK transport API to use])
|
||||
|
||||
AC_SUBST(ECA_S_JACK_LIBS)
|
||||
AC_SUBST(ECA_S_JACK_INCLUDES)
|
||||
])
|
||||
|
||||
## ------------------------------------------------------------------------
|
||||
## Check for LFS (now deprecated, v3 is only a stub that doesn't
|
||||
## peform any checks)
|
||||
##
|
||||
## version: 3
|
||||
##
|
||||
## refs:
|
||||
## - http://www.gnu.org/software/libtool/manual/libc/Feature-Test-Macros.html
|
||||
## - http://www.suse.de/~aj/linux_lfs.html
|
||||
## - http://en.wikipedia.org/wiki/Large_file_support
|
||||
##
|
||||
## modifies: AM_CXXFLAGS, AM_CFLAGS
|
||||
## defines: enable_largefile
|
||||
## ------------------------------------------------------------------------
|
||||
##
|
||||
|
||||
AC_DEFUN([AC_CHECK_LARGEFILE],
|
||||
[
|
||||
echo "checking for largefile support (>2GB files)..."
|
||||
|
||||
dnl note: this is only for backwards compatibility
|
||||
AC_ARG_WITH(largefile,
|
||||
[ --with-largefile deprecated option, now used by default], [])
|
||||
|
||||
AC_SYS_LARGEFILE
|
||||
if test x$ac_cv_sys_file_offset_bits = x64 ; then
|
||||
dnl note: Just to be sure that the define is there even
|
||||
dnl if config.h is not included in right order w.r.t.
|
||||
dnl the system headers.
|
||||
AM_CXXFLAGS="$AM_CXXFLAGS -D_FILE_OFFSET_BITS=64"
|
||||
AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64"
|
||||
|
||||
enable_largefile=yes
|
||||
fi
|
||||
|
||||
dnl old checks
|
||||
dnl ----------
|
||||
dnl [ if test "x$withval" = "xyes" ; then
|
||||
dnl enable_largefile="yes"
|
||||
dnl fi
|
||||
dnl ]
|
||||
dnl if test "x$enable_largefile" = "xyes"; then
|
||||
dnl dnl AC_DEFINE(_FILE_OFFSET_BITS, 64)
|
||||
dnl dnl AC_DEFINE(_LARGEFILE_SOURCE)
|
||||
dnl AM_CXXFLAGS="$AM_CXXFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
||||
dnl AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
|
||||
dnl AC_MSG_RESULT(yes.)
|
||||
dnl else
|
||||
dnl AC_MSG_RESULT(no.)
|
||||
dnl fi
|
||||
|
||||
])
|
||||
|
||||
## ------------------------------------------------------------------------
|
||||
## Check whether namespaces are supported.
|
||||
##
|
||||
## version: 3
|
||||
##
|
||||
## defines: ECA_USE_CXX_STD_NAMESPACE
|
||||
## ------------------------------------------------------------------------
|
||||
##
|
||||
AC_DEFUN([AC_CHECK_CXX_NAMESPACE_SUPPORT],
|
||||
[
|
||||
AC_MSG_CHECKING(if C++ compiler supports namespaces)
|
||||
AC_LANG_CPLUSPLUS
|
||||
old_cxx_flags=$CXXFLAGS
|
||||
CXXFLAGS="-fno-exceptions $CXXFLAGS" # hack around gcc3.x feature
|
||||
AC_TRY_RUN(
|
||||
[
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
using std::string;
|
||||
|
||||
int main(void)
|
||||
{
|
||||
string s ("foo");
|
||||
std::vector<string> v;
|
||||
return(0);
|
||||
}
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(yes.)
|
||||
AC_DEFINE([ECA_USE_CXX_STD_NAMESPACE], 1, [use C++ std namespace])
|
||||
],
|
||||
[
|
||||
AC_MSG_RESULT(no.)
|
||||
AC_MSG_WARN([C++ compiler has problems with namespaces. Build process can fail because of this.])
|
||||
]
|
||||
,
|
||||
[
|
||||
AC_MSG_RESULT(no.)
|
||||
]
|
||||
)
|
||||
CXXFLAGS=$old_cxx_flags
|
||||
])
|
||||
|
||||
## ------------------------------------------------------------------------
|
||||
## Find a file (or one of more files in a list of dirs)
|
||||
##
|
||||
## version: 1
|
||||
## ------------------------------------------------------------------------
|
||||
##
|
||||
AC_DEFUN([AC_FIND_FILE],
|
||||
[
|
||||
$3=NO
|
||||
for i in $2;
|
||||
do
|
||||
for j in $1;
|
||||
do
|
||||
if test -r "$i/$j"; then
|
||||
$3=$i
|
||||
break 2
|
||||
fi
|
||||
done
|
||||
done
|
||||
])
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,142 @@
|
|||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand `-c -o'.
|
||||
|
||||
scriptversion=2005-05-14.22
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# This file is maintained in Automake, please report
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand `-c -o'.
|
||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file `INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
eat=
|
||||
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||
# So we strip `-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
ofile=$2
|
||||
;;
|
||||
*)
|
||||
set x "$@" -o "$2"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
*.c)
|
||||
cfile=$1
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no `-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# `.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
# FIXME: race condition here if user kills between mkdir and trap.
|
||||
trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
|
||||
# Run the compile.
|
||||
"$@"
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
exit $ret
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,270 @@
|
|||
/* config.h. Generated from config.h.in by configure. */
|
||||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* disable all use of shared libs */
|
||||
/* #undef ECA_ALL_STATIC */
|
||||
|
||||
/* enable ALSA support */
|
||||
#define ECA_COMPILE_ALSA 1
|
||||
|
||||
/* enable aRts support */
|
||||
/* #undef ECA_COMPILE_ARTS */
|
||||
|
||||
/* enable libaudiofile support */
|
||||
#define ECA_COMPILE_AUDIOFILE 1
|
||||
|
||||
/* enable JACK support */
|
||||
/* #undef ECA_COMPILE_JACK */
|
||||
|
||||
/* enable OSS audio input/output */
|
||||
#define ECA_COMPILE_OSS 1
|
||||
|
||||
/* enable libsamplerate support */
|
||||
#define ECA_COMPILE_SAMPLERATE 1
|
||||
|
||||
/* enable libsndfile support */
|
||||
#define ECA_COMPILE_SNDFILE 1
|
||||
|
||||
/* debugging mode build */
|
||||
/* #undef ECA_DEBUG_MODE */
|
||||
|
||||
/* disable all effects */
|
||||
/* #undef ECA_DISABLE_EFFECTS */
|
||||
|
||||
/* disable use of OSS trigger API */
|
||||
/* #undef ECA_DISABLE_OSS_TRIGGER */
|
||||
|
||||
/* enable experimental features */
|
||||
/* #undef ECA_FEELING_EXPERIMENTAL */
|
||||
|
||||
/* version of JACK transport API to use */
|
||||
#define ECA_JACK_TRANSPORT_API 2
|
||||
|
||||
/* enable ecasound curses console interface */
|
||||
#define ECA_PLATFORM_CURSES 1
|
||||
|
||||
/* Ecasound configure script prefix */
|
||||
#define ECA_PREFIX "/usr/local"
|
||||
|
||||
/* use ncurses.h for curses interface */
|
||||
/* #undef ECA_USE_CURSES_H */
|
||||
|
||||
/* use C++ std namespace */
|
||||
#define ECA_USE_CXX_STD_NAMESPACE 1
|
||||
|
||||
/* Use liblo for OSC support */
|
||||
/* #undef ECA_USE_LIBLO */
|
||||
|
||||
/* Use liboil */
|
||||
/* #undef ECA_USE_LIBOIL */
|
||||
|
||||
/* use curses.h for curses interface */
|
||||
#define ECA_USE_NCURSES_H 1
|
||||
|
||||
/* ncurses headers are installed in ncurses subdir <ncurses/ncurses.h> */
|
||||
/* #undef ECA_USE_NCURSES_NCURSES_H */
|
||||
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#define HAVE_DLFCN_H 1
|
||||
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#define HAVE_ERRNO_H 1
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#define HAVE_EXECINFO_H 1
|
||||
|
||||
/* Define to 1 if you have the `execvp' function. */
|
||||
#define HAVE_EXECVP 1
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#define HAVE_FCNTL_H 1
|
||||
|
||||
/* Define to 1 if you have the <features.h> header file. */
|
||||
#define HAVE_FEATURES_H 1
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#define HAVE_GETPAGESIZE 1
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#define HAVE_GETTIMEOFDAY 1
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <ladspa.h> header file. */
|
||||
/* #undef HAVE_LADSPA_H */
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#define HAVE_LOCALE_H 1
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#define HAVE_MEMORY_H 1
|
||||
|
||||
/* Define to 1 if you have the `mlockall' function. */
|
||||
#define HAVE_MLOCKALL 1
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#define HAVE_MMAP 1
|
||||
|
||||
/* Define to 1 if you have the `munlockall' function. */
|
||||
#define HAVE_MUNLOCKALL 1
|
||||
|
||||
/* Define to 1 if you have the `nanosleep' function. */
|
||||
#define HAVE_NANOSLEEP 1
|
||||
|
||||
/* Define to 1 if you have the `pause' function. */
|
||||
#define HAVE_PAUSE 1
|
||||
|
||||
/* Define to 1 if you have the `posix_memalign' function. */
|
||||
#define HAVE_POSIX_MEMALIGN 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_getschedparam' function. */
|
||||
#define HAVE_PTHREAD_GETSCHEDPARAM 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_kill' function. */
|
||||
#define HAVE_PTHREAD_KILL 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_mutexattr_init' function. */
|
||||
#define HAVE_PTHREAD_MUTEXATTR_INIT 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_self' function. */
|
||||
#define HAVE_PTHREAD_SELF 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_setschedparam' function. */
|
||||
#define HAVE_PTHREAD_SETSCHEDPARAM 1
|
||||
|
||||
/* Define to 1 if you have the `pthread_sigmask' function. */
|
||||
#define HAVE_PTHREAD_SIGMASK 1
|
||||
|
||||
/* Define to 1 if you have the <regex.h> header file. */
|
||||
#define HAVE_REGEX_H 1
|
||||
|
||||
/* Define to 1 if you have the `sched_getparam' function. */
|
||||
#define HAVE_SCHED_GETPARAM 1
|
||||
|
||||
/* Define to 1 if you have the `sched_getscheduler' function. */
|
||||
#define HAVE_SCHED_GETSCHEDULER 1
|
||||
|
||||
/* Define to 1 if you have the `sched_get_priority_max' function. */
|
||||
#define HAVE_SCHED_GET_PRIORITY_MAX 1
|
||||
|
||||
/* Define to 1 if you have the <sched.h> header file. */
|
||||
#define HAVE_SCHED_H 1
|
||||
|
||||
/* Define to 1 if you have the `sched_setscheduler' function. */
|
||||
#define HAVE_SCHED_SETSCHEDULER 1
|
||||
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#define HAVE_SETLOCALE 1
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#define HAVE_SIGNAL_H 1
|
||||
|
||||
/* Define to 1 if you have the `sigprocmask' function. */
|
||||
#define HAVE_SIGPROCMASK 1
|
||||
|
||||
/* Define to 1 if you have the `sigwait' function. */
|
||||
#define HAVE_SIGWAIT 1
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#define HAVE_STDINT_H 1
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#define HAVE_STDLIB_H 1
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#define HAVE_STRINGS_H 1
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#define HAVE_STRING_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/poll.h> header file. */
|
||||
#define HAVE_SYS_POLL_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#define HAVE_SYS_SELECT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#define HAVE_SYS_SOCKET_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#define HAVE_SYS_STAT_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#define HAVE_SYS_TIME_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
|
||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||
#define HAVE_SYS_WAIT_H 1
|
||||
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#define HAVE_TERMIOS_H 1
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#define HAVE_UNISTD_H 1
|
||||
|
||||
/* Define to 1 if you have the `usleep' function. */
|
||||
#define HAVE_USLEEP 1
|
||||
|
||||
/* libecasoundc interface version */
|
||||
#define LIBECASOUNDC_VERSION 2
|
||||
|
||||
/* libecasound interface version */
|
||||
#define LIBECASOUND_VERSION 22
|
||||
|
||||
/* libecasound interface age */
|
||||
#define LIBECASOUND_VERSION_AGE 0
|
||||
|
||||
/* libkvutils interface version */
|
||||
#define LIBKVUTILS_VERSION 9
|
||||
|
||||
/* libkvutils interface age */
|
||||
#define LIBKVUTILS_VERSION_AGE 5
|
||||
|
||||
/* Name of package */
|
||||
#define PACKAGE "ecasound"
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#define PACKAGE_BUGREPORT ""
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#define PACKAGE_NAME "ecasound"
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#define PACKAGE_STRING "ecasound 2.7.2"
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#define PACKAGE_TARNAME "ecasound"
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#define PACKAGE_VERSION "2.7.2"
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#define STDC_HEADERS 1
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#define TIME_WITH_SYS_TIME 1
|
||||
|
||||
/* Version number of package */
|
||||
#define VERSION "2.7.2"
|
||||
|
||||
/* Define to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
/* #undef WORDS_BIGENDIAN */
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
/* #undef _FILE_OFFSET_BITS */
|
||||
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
/* #undef _LARGE_FILES */
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
/* #undef size_t */
|
|
@ -0,0 +1,269 @@
|
|||
/* config.h.in. Generated from configure.in by autoheader. */
|
||||
|
||||
/* disable all use of shared libs */
|
||||
#undef ECA_ALL_STATIC
|
||||
|
||||
/* enable ALSA support */
|
||||
#undef ECA_COMPILE_ALSA
|
||||
|
||||
/* enable aRts support */
|
||||
#undef ECA_COMPILE_ARTS
|
||||
|
||||
/* enable libaudiofile support */
|
||||
#undef ECA_COMPILE_AUDIOFILE
|
||||
|
||||
/* enable JACK support */
|
||||
#undef ECA_COMPILE_JACK
|
||||
|
||||
/* enable OSS audio input/output */
|
||||
#undef ECA_COMPILE_OSS
|
||||
|
||||
/* enable libsamplerate support */
|
||||
#undef ECA_COMPILE_SAMPLERATE
|
||||
|
||||
/* enable libsndfile support */
|
||||
#undef ECA_COMPILE_SNDFILE
|
||||
|
||||
/* debugging mode build */
|
||||
#undef ECA_DEBUG_MODE
|
||||
|
||||
/* disable all effects */
|
||||
#undef ECA_DISABLE_EFFECTS
|
||||
|
||||
/* disable use of OSS trigger API */
|
||||
#undef ECA_DISABLE_OSS_TRIGGER
|
||||
|
||||
/* enable experimental features */
|
||||
#undef ECA_FEELING_EXPERIMENTAL
|
||||
|
||||
/* version of JACK transport API to use */
|
||||
#undef ECA_JACK_TRANSPORT_API
|
||||
|
||||
/* enable ecasound curses console interface */
|
||||
#undef ECA_PLATFORM_CURSES
|
||||
|
||||
/* Ecasound configure script prefix */
|
||||
#undef ECA_PREFIX
|
||||
|
||||
/* use ncurses.h for curses interface */
|
||||
#undef ECA_USE_CURSES_H
|
||||
|
||||
/* use C++ std namespace */
|
||||
#undef ECA_USE_CXX_STD_NAMESPACE
|
||||
|
||||
/* Use liblo for OSC support */
|
||||
#undef ECA_USE_LIBLO
|
||||
|
||||
/* Use liboil */
|
||||
#undef ECA_USE_LIBOIL
|
||||
|
||||
/* use curses.h for curses interface */
|
||||
#undef ECA_USE_NCURSES_H
|
||||
|
||||
/* ncurses headers are installed in ncurses subdir <ncurses/ncurses.h> */
|
||||
#undef ECA_USE_NCURSES_NCURSES_H
|
||||
|
||||
/* Define to 1 if you have the `clock_gettime' function. */
|
||||
#undef HAVE_CLOCK_GETTIME
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <errno.h> header file. */
|
||||
#undef HAVE_ERRNO_H
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#undef HAVE_EXECINFO_H
|
||||
|
||||
/* Define to 1 if you have the `execvp' function. */
|
||||
#undef HAVE_EXECVP
|
||||
|
||||
/* Define to 1 if you have the <fcntl.h> header file. */
|
||||
#undef HAVE_FCNTL_H
|
||||
|
||||
/* Define to 1 if you have the <features.h> header file. */
|
||||
#undef HAVE_FEATURES_H
|
||||
|
||||
/* Define to 1 if you have the `getpagesize' function. */
|
||||
#undef HAVE_GETPAGESIZE
|
||||
|
||||
/* Define to 1 if you have the `gettimeofday' function. */
|
||||
#undef HAVE_GETTIMEOFDAY
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <ladspa.h> header file. */
|
||||
#undef HAVE_LADSPA_H
|
||||
|
||||
/* Define to 1 if you have the <locale.h> header file. */
|
||||
#undef HAVE_LOCALE_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the `mlockall' function. */
|
||||
#undef HAVE_MLOCKALL
|
||||
|
||||
/* Define to 1 if you have a working `mmap' system call. */
|
||||
#undef HAVE_MMAP
|
||||
|
||||
/* Define to 1 if you have the `munlockall' function. */
|
||||
#undef HAVE_MUNLOCKALL
|
||||
|
||||
/* Define to 1 if you have the `nanosleep' function. */
|
||||
#undef HAVE_NANOSLEEP
|
||||
|
||||
/* Define to 1 if you have the `pause' function. */
|
||||
#undef HAVE_PAUSE
|
||||
|
||||
/* Define to 1 if you have the `posix_memalign' function. */
|
||||
#undef HAVE_POSIX_MEMALIGN
|
||||
|
||||
/* Define to 1 if you have the `pthread_getschedparam' function. */
|
||||
#undef HAVE_PTHREAD_GETSCHEDPARAM
|
||||
|
||||
/* Define to 1 if you have the `pthread_kill' function. */
|
||||
#undef HAVE_PTHREAD_KILL
|
||||
|
||||
/* Define to 1 if you have the `pthread_mutexattr_init' function. */
|
||||
#undef HAVE_PTHREAD_MUTEXATTR_INIT
|
||||
|
||||
/* Define to 1 if you have the `pthread_self' function. */
|
||||
#undef HAVE_PTHREAD_SELF
|
||||
|
||||
/* Define to 1 if you have the `pthread_setschedparam' function. */
|
||||
#undef HAVE_PTHREAD_SETSCHEDPARAM
|
||||
|
||||
/* Define to 1 if you have the `pthread_sigmask' function. */
|
||||
#undef HAVE_PTHREAD_SIGMASK
|
||||
|
||||
/* Define to 1 if you have the <regex.h> header file. */
|
||||
#undef HAVE_REGEX_H
|
||||
|
||||
/* Define to 1 if you have the `sched_getparam' function. */
|
||||
#undef HAVE_SCHED_GETPARAM
|
||||
|
||||
/* Define to 1 if you have the `sched_getscheduler' function. */
|
||||
#undef HAVE_SCHED_GETSCHEDULER
|
||||
|
||||
/* Define to 1 if you have the `sched_get_priority_max' function. */
|
||||
#undef HAVE_SCHED_GET_PRIORITY_MAX
|
||||
|
||||
/* Define to 1 if you have the <sched.h> header file. */
|
||||
#undef HAVE_SCHED_H
|
||||
|
||||
/* Define to 1 if you have the `sched_setscheduler' function. */
|
||||
#undef HAVE_SCHED_SETSCHEDULER
|
||||
|
||||
/* Define to 1 if you have the `setlocale' function. */
|
||||
#undef HAVE_SETLOCALE
|
||||
|
||||
/* Define to 1 if you have the <signal.h> header file. */
|
||||
#undef HAVE_SIGNAL_H
|
||||
|
||||
/* Define to 1 if you have the `sigprocmask' function. */
|
||||
#undef HAVE_SIGPROCMASK
|
||||
|
||||
/* Define to 1 if you have the `sigwait' function. */
|
||||
#undef HAVE_SIGWAIT
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
/* Define to 1 if you have the <strings.h> header file. */
|
||||
#undef HAVE_STRINGS_H
|
||||
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Define to 1 if you have the <sys/mman.h> header file. */
|
||||
#undef HAVE_SYS_MMAN_H
|
||||
|
||||
/* Define to 1 if you have the <sys/poll.h> header file. */
|
||||
#undef HAVE_SYS_POLL_H
|
||||
|
||||
/* Define to 1 if you have the <sys/select.h> header file. */
|
||||
#undef HAVE_SYS_SELECT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/socket.h> header file. */
|
||||
#undef HAVE_SYS_SOCKET_H
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
/* Define to 1 if you have the <sys/time.h> header file. */
|
||||
#undef HAVE_SYS_TIME_H
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#undef HAVE_SYS_TYPES_H
|
||||
|
||||
/* Define to 1 if you have the <sys/wait.h> header file. */
|
||||
#undef HAVE_SYS_WAIT_H
|
||||
|
||||
/* Define to 1 if you have the <termios.h> header file. */
|
||||
#undef HAVE_TERMIOS_H
|
||||
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 if you have the `usleep' function. */
|
||||
#undef HAVE_USLEEP
|
||||
|
||||
/* libecasoundc interface version */
|
||||
#undef LIBECASOUNDC_VERSION
|
||||
|
||||
/* libecasound interface version */
|
||||
#undef LIBECASOUND_VERSION
|
||||
|
||||
/* libecasound interface age */
|
||||
#undef LIBECASOUND_VERSION_AGE
|
||||
|
||||
/* libkvutils interface version */
|
||||
#undef LIBKVUTILS_VERSION
|
||||
|
||||
/* libkvutils interface age */
|
||||
#undef LIBKVUTILS_VERSION_AGE
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
/* Define to the address where bug reports for this package should be sent. */
|
||||
#undef PACKAGE_BUGREPORT
|
||||
|
||||
/* Define to the full name of this package. */
|
||||
#undef PACKAGE_NAME
|
||||
|
||||
/* Define to the full name and version of this package. */
|
||||
#undef PACKAGE_STRING
|
||||
|
||||
/* Define to the one symbol short name of this package. */
|
||||
#undef PACKAGE_TARNAME
|
||||
|
||||
/* Define to the version of this package. */
|
||||
#undef PACKAGE_VERSION
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
|
||||
#undef TIME_WITH_SYS_TIME
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if your processor stores words with the most significant byte
|
||||
first (like Motorola and SPARC, unlike Intel and VAX). */
|
||||
#undef WORDS_BIGENDIAN
|
||||
|
||||
/* Number of bits in a file offset, on hosts where this is settable. */
|
||||
#undef _FILE_OFFSET_BITS
|
||||
|
||||
/* Define for large files, on AIX-style hosts. */
|
||||
#undef _LARGE_FILES
|
||||
|
||||
/* Define to `unsigned int' if <sys/types.h> does not define. */
|
||||
#undef size_t
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,530 @@
|
|||
#! /bin/sh
|
||||
# depcomp - compile a program generating dependencies as side-effects
|
||||
|
||||
scriptversion=2005-07-09.11
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Run PROGRAMS ARGS to compile a file, generating dependencies
|
||||
as side-effects.
|
||||
|
||||
Environment variables:
|
||||
depmode Dependency tracking mode.
|
||||
source Source file read by `PROGRAMS ARGS'.
|
||||
object Object file output by `PROGRAMS ARGS'.
|
||||
DEPDIR directory where to store dependencies.
|
||||
depfile Dependency file to output.
|
||||
tmpdepfile Temporary file to use when outputing dependencies.
|
||||
libtool Whether libtool is used (yes/no).
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
exit $?
|
||||
;;
|
||||
-v | --v*)
|
||||
echo "depcomp $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
esac
|
||||
|
||||
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
|
||||
echo "depcomp: Variables source, object and depmode must be set" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
|
||||
depfile=${depfile-`echo "$object" |
|
||||
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
|
||||
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
|
||||
|
||||
rm -f "$tmpdepfile"
|
||||
|
||||
# Some modes work just like other modes, but use different flags. We
|
||||
# parameterize here, but still list the modes in the big case below,
|
||||
# to make depend.m4 easier to write. Note that we *cannot* use a case
|
||||
# here, because this file can only contain one case statement.
|
||||
if test "$depmode" = hp; then
|
||||
# HP compiler uses -M and no extra arg.
|
||||
gccflag=-M
|
||||
depmode=gcc
|
||||
fi
|
||||
|
||||
if test "$depmode" = dashXmstdout; then
|
||||
# This is just like dashmstdout with a different argument.
|
||||
dashmflag=-xM
|
||||
depmode=dashmstdout
|
||||
fi
|
||||
|
||||
case "$depmode" in
|
||||
gcc3)
|
||||
## gcc 3 implements dependency tracking that does exactly what
|
||||
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
|
||||
## it if -MD -MP comes after the -MF stuff. Hmm.
|
||||
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
mv "$tmpdepfile" "$depfile"
|
||||
;;
|
||||
|
||||
gcc)
|
||||
## There are various ways to get dependency output from gcc. Here's
|
||||
## why we pick this rather obscure method:
|
||||
## - Don't want to use -MD because we'd like the dependencies to end
|
||||
## up in a subdir. Having to rename by hand is ugly.
|
||||
## (We might end up doing this anyway to support other compilers.)
|
||||
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
|
||||
## -MM, not -M (despite what the docs say).
|
||||
## - Using -M directly means running the compiler twice (even worse
|
||||
## than renaming).
|
||||
if test -z "$gccflag"; then
|
||||
gccflag=-MD,
|
||||
fi
|
||||
"$@" -Wp,"$gccflag$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
|
||||
## The second -e expression handles DOS-style file names with drive letters.
|
||||
sed -e 's/^[^:]*: / /' \
|
||||
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
|
||||
## This next piece of magic avoids the `deleted header file' problem.
|
||||
## The problem is that when a header file which appears in a .P file
|
||||
## is deleted, the dependency causes make to die (because there is
|
||||
## typically no way to rebuild the header). We avoid this by adding
|
||||
## dummy dependencies for each header file. Too bad gcc doesn't do
|
||||
## this for us directly.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" |
|
||||
## Some versions of gcc put a space before the `:'. On the theory
|
||||
## that the space means something, we add a space to the output as
|
||||
## well.
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
hp)
|
||||
# This case exists only to let depend.m4 do its work. It works by
|
||||
# looking at the text of this script. This case will never be run,
|
||||
# since it is checked for above.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
sgi)
|
||||
if test "$libtool" = yes; then
|
||||
"$@" "-Wp,-MDupdate,$tmpdepfile"
|
||||
else
|
||||
"$@" -MDupdate "$tmpdepfile"
|
||||
fi
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
|
||||
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
|
||||
echo "$object : \\" > "$depfile"
|
||||
|
||||
# Clip off the initial element (the dependent). Don't try to be
|
||||
# clever and replace this with sed code, as IRIX sed won't handle
|
||||
# lines with more than a fixed number of characters (4096 in
|
||||
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
|
||||
# the IRIX cc adds comments like `#:fec' to the end of the
|
||||
# dependency line.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
|
||||
tr '
|
||||
' ' ' >> $depfile
|
||||
echo >> $depfile
|
||||
|
||||
# The second pass generates a dummy entry for each header file.
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" \
|
||||
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
|
||||
>> $depfile
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
aix)
|
||||
# The C for AIX Compiler uses -M and outputs the dependencies
|
||||
# in a .u file. In older versions, this file always lives in the
|
||||
# current directory. Also, the AIX compiler puts `$object:' at the
|
||||
# start of each line; $object doesn't have directory information.
|
||||
# Version 6 uses the directory in both cases.
|
||||
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
|
||||
tmpdepfile="$stripped.u"
|
||||
if test "$libtool" = yes; then
|
||||
"$@" -Wc,-M
|
||||
else
|
||||
"$@" -M
|
||||
fi
|
||||
stat=$?
|
||||
|
||||
if test -f "$tmpdepfile"; then :
|
||||
else
|
||||
stripped=`echo "$stripped" | sed 's,^.*/,,'`
|
||||
tmpdepfile="$stripped.u"
|
||||
fi
|
||||
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
if test -f "$tmpdepfile"; then
|
||||
outname="$stripped.o"
|
||||
# Each line is of the form `foo.o: dependent.h'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
# The sourcefile does not contain any dependencies, so just
|
||||
# store a dummy comment line, to avoid errors with the Makefile
|
||||
# "include basename.Plo" scheme.
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
icc)
|
||||
# Intel's C compiler understands `-MD -MF file'. However on
|
||||
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
|
||||
# ICC 7.0 will fill foo.d with something like
|
||||
# foo.o: sub/foo.c
|
||||
# foo.o: sub/foo.h
|
||||
# which is wrong. We want:
|
||||
# sub/foo.o: sub/foo.c
|
||||
# sub/foo.o: sub/foo.h
|
||||
# sub/foo.c:
|
||||
# sub/foo.h:
|
||||
# ICC 7.1 will output
|
||||
# foo.o: sub/foo.c sub/foo.h
|
||||
# and will wrap long lines using \ :
|
||||
# foo.o: sub/foo.c ... \
|
||||
# sub/foo.h ... \
|
||||
# ...
|
||||
|
||||
"$@" -MD -MF "$tmpdepfile"
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile"
|
||||
exit $stat
|
||||
fi
|
||||
rm -f "$depfile"
|
||||
# Each line is of the form `foo.o: dependent.h',
|
||||
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
|
||||
# Do two passes, one to just change these to
|
||||
# `$object: dependent.h' and one to simply `dependent.h:'.
|
||||
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
|
||||
# Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
# correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
|
||||
sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
tru64)
|
||||
# The Tru64 compiler uses -MD to generate dependencies as a side
|
||||
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
|
||||
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
|
||||
# dependencies in `foo.d' instead, so we check for that too.
|
||||
# Subdirectories are respected.
|
||||
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
|
||||
test "x$dir" = "x$object" && dir=
|
||||
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
|
||||
|
||||
if test "$libtool" = yes; then
|
||||
# With Tru64 cc, shared objects can also be used to make a
|
||||
# static library. This mecanism is used in libtool 1.4 series to
|
||||
# handle both shared and static libraries in a single compilation.
|
||||
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
|
||||
#
|
||||
# With libtool 1.5 this exception was removed, and libtool now
|
||||
# generates 2 separate objects for the 2 libraries. These two
|
||||
# compilations output dependencies in in $dir.libs/$base.o.d and
|
||||
# in $dir$base.o.d. We have to check for both files, because
|
||||
# one of the two compilations can be disabled. We should prefer
|
||||
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
|
||||
# automatically cleaned when .libs/ is deleted, while ignoring
|
||||
# the former would cause a distcleancheck panic.
|
||||
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
|
||||
tmpdepfile2=$dir$base.o.d # libtool 1.5
|
||||
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
|
||||
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
|
||||
"$@" -Wc,-MD
|
||||
else
|
||||
tmpdepfile1=$dir$base.o.d
|
||||
tmpdepfile2=$dir$base.d
|
||||
tmpdepfile3=$dir$base.d
|
||||
tmpdepfile4=$dir$base.d
|
||||
"$@" -MD
|
||||
fi
|
||||
|
||||
stat=$?
|
||||
if test $stat -eq 0; then :
|
||||
else
|
||||
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
exit $stat
|
||||
fi
|
||||
|
||||
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
|
||||
do
|
||||
test -f "$tmpdepfile" && break
|
||||
done
|
||||
if test -f "$tmpdepfile"; then
|
||||
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
|
||||
# That's a tab and a space in the [].
|
||||
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
|
||||
else
|
||||
echo "#dummy" > "$depfile"
|
||||
fi
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
#nosideeffect)
|
||||
# This comment above is used by automake to tell side-effect
|
||||
# dependency tracking mechanisms from slower ones.
|
||||
|
||||
dashmstdout)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
test -z "$dashmflag" && dashmflag=-M
|
||||
# Require at least two characters before searching for `:'
|
||||
# in the target name. This is to cope with DOS-style filenames:
|
||||
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
|
||||
"$@" $dashmflag |
|
||||
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
tr ' ' '
|
||||
' < "$tmpdepfile" | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
dashXmstdout)
|
||||
# This case only exists to satisfy depend.m4. It is never actually
|
||||
# run, as this mode is specially recognized in the preamble.
|
||||
exit 1
|
||||
;;
|
||||
|
||||
makedepend)
|
||||
"$@" || exit $?
|
||||
# Remove any Libtool call
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
# X makedepend
|
||||
shift
|
||||
cleared=no
|
||||
for arg in "$@"; do
|
||||
case $cleared in
|
||||
no)
|
||||
set ""; shift
|
||||
cleared=yes ;;
|
||||
esac
|
||||
case "$arg" in
|
||||
-D*|-I*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
# Strip any option that makedepend may not understand. Remove
|
||||
# the object too, otherwise makedepend will parse it as a source file.
|
||||
-*|$object)
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"; shift ;;
|
||||
esac
|
||||
done
|
||||
obj_suffix="`echo $object | sed 's/^.*\././'`"
|
||||
touch "$tmpdepfile"
|
||||
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
|
||||
rm -f "$depfile"
|
||||
cat < "$tmpdepfile" > "$depfile"
|
||||
sed '1,2d' "$tmpdepfile" | tr ' ' '
|
||||
' | \
|
||||
## Some versions of the HPUX 10.20 sed can't process this invocation
|
||||
## correctly. Breaking it into two sed invocations is a workaround.
|
||||
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile" "$tmpdepfile".bak
|
||||
;;
|
||||
|
||||
cpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout.
|
||||
"$@" || exit $?
|
||||
|
||||
# Remove the call to Libtool.
|
||||
if test "$libtool" = yes; then
|
||||
while test $1 != '--mode=compile'; do
|
||||
shift
|
||||
done
|
||||
shift
|
||||
fi
|
||||
|
||||
# Remove `-o $object'.
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-o)
|
||||
shift
|
||||
;;
|
||||
$object)
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift # fnord
|
||||
shift # $arg
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
"$@" -E |
|
||||
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
|
||||
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
|
||||
sed '$ s: \\$::' > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
cat < "$tmpdepfile" >> "$depfile"
|
||||
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
msvisualcpp)
|
||||
# Important note: in order to support this mode, a compiler *must*
|
||||
# always write the preprocessed file to stdout, regardless of -o,
|
||||
# because we must use -o when running libtool.
|
||||
"$@" || exit $?
|
||||
IFS=" "
|
||||
for arg
|
||||
do
|
||||
case "$arg" in
|
||||
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
|
||||
set fnord "$@"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set fnord "$@" "$arg"
|
||||
shift
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
done
|
||||
"$@" -E |
|
||||
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
|
||||
rm -f "$depfile"
|
||||
echo "$object : \\" > "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
|
||||
echo " " >> "$depfile"
|
||||
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
|
||||
rm -f "$tmpdepfile"
|
||||
;;
|
||||
|
||||
none)
|
||||
exec "$@"
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown depmode $depmode" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
|
||||
# Local Variables:
|
||||
# mode: shell-script
|
||||
# sh-indentation: 2
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# End:
|
|
@ -0,0 +1,297 @@
|
|||
# ---
|
||||
# definitions
|
||||
|
||||
%define python_sitepkgsdir %(echo `python -c "import sys; print (sys.prefix + '/lib/python' + sys.version[:3] + '/site-packages/')"`)
|
||||
%define python_compile_opt python -O -c "import compileall; compileall.compile_dir('.')"
|
||||
%define python_compile python -c "import compileall; compileall.compile_dir('.')"
|
||||
|
||||
%define ver 2.7.2
|
||||
%define pkgver 2.7.2
|
||||
%define pkgrel 1
|
||||
|
||||
# ---
|
||||
# global settings
|
||||
|
||||
Packager: Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
Distribution: www.eca.cx audio software
|
||||
|
||||
# allow relocation
|
||||
Prefix: %{_prefix}
|
||||
|
||||
# ---
|
||||
# main package
|
||||
|
||||
Name: ecasound
|
||||
Version: %{pkgver}
|
||||
Release: %{pkgrel}
|
||||
Serial: 1
|
||||
Copyright: GPL
|
||||
Source: http://ecasound.seul.org/download/ecasound-%{ver}.tar.gz
|
||||
URL: http://www.eca.cx/ecasound
|
||||
BuildRoot: /var/tmp/%{name}-%{version}-root-%(id -u -n)
|
||||
Summary: ecasound - multitrack audio processing tool
|
||||
Group: Applications/Sound
|
||||
|
||||
%description
|
||||
Ecasound is a software package designed for multitrack audio
|
||||
processing. It can be used for simple tasks like audio playback,
|
||||
recording and format conversions, as well as for multitrack effect
|
||||
processing, mixing, recording and signal recycling. Ecasound supports
|
||||
a wide range of audio inputs, outputs and effect algorithms.
|
||||
Effects and audio objects can be combined in various ways, and their
|
||||
parameters can be controlled by operator objects like oscillators
|
||||
and MIDI-CCs. A versatile console mode user-interface is included
|
||||
in the package.
|
||||
|
||||
# ---
|
||||
# library package - ecasound-devel
|
||||
|
||||
%package devel
|
||||
Summary: Ecasound - development files
|
||||
Group: Applications/Sound
|
||||
|
||||
%description devel
|
||||
The ecasound-devel package contains the header files and static libraries
|
||||
necessary for building apps like ecawave and ecamegapedal that
|
||||
directly link against ecasound libraries.
|
||||
|
||||
# ---
|
||||
# library package - libecasoundc
|
||||
|
||||
%package -n libecasoundc
|
||||
Summary: Ecasound - libecasoundc
|
||||
Group: Applications/Sound
|
||||
|
||||
requires: ecasound
|
||||
|
||||
%description -n libecasoundc
|
||||
Ecasound - libecasoundc package. Provides
|
||||
C implementation of the Ecasound Control Interface
|
||||
(ECI). Both static library files and and header
|
||||
files are included in the package.
|
||||
|
||||
# ---
|
||||
# pyecasound
|
||||
|
||||
%package -n pyecasound
|
||||
Summary: Python bindings to ecasound control interface.
|
||||
Group: Applications/Sound
|
||||
Requires: ecasound
|
||||
|
||||
%description -n pyecasound
|
||||
Python bindings to Ecasound Control Interface (ECI).
|
||||
|
||||
# ---
|
||||
# build phase
|
||||
|
||||
%prep
|
||||
%setup -n ecasound-2.7.2
|
||||
%build
|
||||
./configure --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_mandir} --with-pic $extra_params
|
||||
make
|
||||
|
||||
%install
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
make DESTDIR="$RPM_BUILD_ROOT" install-strip
|
||||
( cd pyecasound
|
||||
%python_compile_opt
|
||||
%python_compile
|
||||
install *.pyc *.pyo $RPM_BUILD_ROOT%{python_sitepkgsdir}
|
||||
)
|
||||
|
||||
# note! this is needed for automake 1.4 and older
|
||||
strip --strip-unneeded \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecasound \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecaconvert \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecafixdc \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecanormalize \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecaplay \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecasignalview \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libecasound.a \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libecasoundc.a \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libkvutils.a
|
||||
|
||||
# ---
|
||||
# cleanup after build
|
||||
|
||||
%clean
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
# ---
|
||||
# files sections (main)
|
||||
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
%doc NEWS COPYING COPYING.GPL COPYING.LGPL README INSTALL AUTHORS BUGS TODO examples
|
||||
%doc Documentation/*.html
|
||||
%doc Documentation/*.txt
|
||||
%{_mandir}/man1/eca*
|
||||
%{_mandir}/man5/eca*
|
||||
%{_bindir}/ecasound
|
||||
%{_bindir}/ecaconvert
|
||||
%{_bindir}/ecafixdc
|
||||
%{_bindir}/ecalength
|
||||
%{_bindir}/ecamonitor
|
||||
%{_bindir}/ecanormalize
|
||||
%{_bindir}/ecaplay
|
||||
%{_bindir}/ecasignalview
|
||||
%dir %{_datadir}/ecasound
|
||||
%{_datadir}/ecasound/ecasound.el
|
||||
%config %{_datadir}/ecasound/ecasoundrc
|
||||
%config %{_datadir}/ecasound/generic_oscillators
|
||||
%config %{_datadir}/ecasound/effect_presets
|
||||
|
||||
# ---
|
||||
# files sections (devel)
|
||||
|
||||
%files devel
|
||||
%defattr(-, root, root)
|
||||
%{_bindir}/libecasound-config
|
||||
%{_includedir}/kvutils
|
||||
%{_includedir}/libecasound
|
||||
%{_libdir}/libecasound.la
|
||||
%{_libdir}/libecasound.a
|
||||
%{_libdir}/libkvutils.la
|
||||
%{_libdir}/libkvutils.a
|
||||
|
||||
# ---
|
||||
# files sections (libecasoundc)
|
||||
|
||||
%files -n libecasoundc
|
||||
%defattr(-, root, root)
|
||||
%{_bindir}/libecasoundc-config
|
||||
%{_includedir}/libecasoundc
|
||||
%{_libdir}/libecasoundc.la
|
||||
%{_libdir}/libecasoundc.a
|
||||
|
||||
# ---
|
||||
# files sections (pyecasound)
|
||||
|
||||
%files -n pyecasound
|
||||
%defattr(644,root,root,755)
|
||||
%attr(755,root,root) %{python_sitepkgsdir}/*.so
|
||||
%{python_sitepkgsdir}/*.pyo
|
||||
%{python_sitepkgsdir}/*.pyc
|
||||
%{python_sitepkgsdir}/*.py
|
||||
|
||||
# ---
|
||||
# changelog
|
||||
|
||||
%changelog
|
||||
* Sun Jan 22 2006 Markus Grabner <grabner -at- icg -dot- tu-graz -dot- ac -dot- at>
|
||||
- Updated to work on x86_64 platforms.
|
||||
- The "--libdir=%{_libdir}" switch is required on x86_64 to select "lib64"
|
||||
for installation instead of "lib".
|
||||
- "--with-pic" added to avoid compile errors on x86_64.
|
||||
- "%{_bindir}/ecalength" added
|
||||
- "%dir" keyword added to remove errors about files listed twice.
|
||||
|
||||
* Mon Apr 25 2005 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- fixed problems using ecasound.spec with recent versions of rpm
|
||||
by removing macro-statements from the changelog entries
|
||||
|
||||
* Wed Nov 03 2004 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- spam-protected all email-addresses
|
||||
|
||||
* Wed Aug 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added 'AUTHORS' file
|
||||
|
||||
* Mon Jan 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added Serial tag to differentiate between 2.2 pre and
|
||||
final releases
|
||||
|
||||
* Sat Nov 02 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ported Fernando Lopez-Lezcano's changes to unify this
|
||||
spec file with PlanetCCRMA's ecasound package; see
|
||||
http://ccrma-www.stanford.edu/planetccrma/software/soundapps.html
|
||||
- ecasound.el added to package (installed as a data
|
||||
file to avoid dependency to emacs/elisp)
|
||||
- removed unnecessary raw documentation source files
|
||||
- man files are no longer installed as doc files
|
||||
- use redhat style mandir location
|
||||
|
||||
* Thu Oct 31 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- minor layout changes
|
||||
- added TODO to the package
|
||||
- changed to use rpmrc dir variables
|
||||
|
||||
* Thu Oct 24 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added the COPYING files to the package
|
||||
|
||||
* Thu Oct 17 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added the -devel package
|
||||
- fixed the build procedure to handle static builds
|
||||
|
||||
* Wed Oct 16 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- removed all shared libraries and subpackages containing
|
||||
them
|
||||
- ecamonitor binary added to main package
|
||||
|
||||
* Sat Oct 05 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- changed libecasoundc versioning back to normal libtool style
|
||||
|
||||
* Thu Apr 25 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- libraries put to separate subpackages, interface
|
||||
version numbers code to library names
|
||||
- ecasound-config renamed to libecasound-config
|
||||
- ecasoundc-config renamed to libecasoundc-config
|
||||
- plugin install dir changed from prefix/lib/ecasound-plugins
|
||||
to prefix/lib/libecasoundX-plugins
|
||||
- 'contrib' directory removed
|
||||
- ecasound-plugins subpackage renamed to libecasoundX-plugins
|
||||
|
||||
* Mon Oct 01 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- dropped the hardcoded python module path from configure
|
||||
argument list
|
||||
|
||||
* Wed Jan 17 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- python subpackage config (thanks to wrobell / PLD Linux!)
|
||||
|
||||
* Sat Dec 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- contrib and examples directories added to docs
|
||||
- ecasoundc-config added
|
||||
- libecasoundc added (C implementation of ECI)
|
||||
- a new package: pyecasound
|
||||
|
||||
* Sat Nov 25 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ecasignalview added to the package.
|
||||
|
||||
* Thu Aug 31 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added /etc/ld.so.conf modification script.
|
||||
- Added DESTDIR to install-section.
|
||||
|
||||
* Wed Aug 30 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- 'ecasound-config' script added.
|
||||
|
||||
* Sun Aug 20 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- All Qt-related stuff removed.
|
||||
|
||||
* Wed Jul 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added the -plugins package.
|
||||
|
||||
* Wed Jun 07 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ecaconvert added to the package.
|
||||
|
||||
* Mon Jun 05 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Renamed ecatools programs.
|
||||
|
||||
* Mon Apr 15 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Removed dynamic linking to ALSA libraries. You
|
||||
can get ALSA support by recompiling the source-RPM
|
||||
package.
|
||||
|
||||
* Mon Feb 10 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added libqtecasound to ecasound-qt.
|
||||
|
||||
* Mon Nov 09 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- A complete reorganization. Ecasound distribution is now
|
||||
divided to three RPMs: ecasound, ecasound-qt and ecasound-devel.
|
||||
|
||||
* Mon Nov 08 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- As Redhat stopped the RHCN project, so these rpms
|
||||
are again distributed via Redhat's contrib service
|
||||
- You can also get these from http://ecasound.seul.org/download
|
||||
|
||||
* Sun Aug 15 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Initial rhcn release.
|
|
@ -0,0 +1,297 @@
|
|||
# ---
|
||||
# definitions
|
||||
|
||||
%define python_sitepkgsdir %(echo `python -c "import sys; print (sys.prefix + '/lib/python' + sys.version[:3] + '/site-packages/')"`)
|
||||
%define python_compile_opt python -O -c "import compileall; compileall.compile_dir('.')"
|
||||
%define python_compile python -c "import compileall; compileall.compile_dir('.')"
|
||||
|
||||
%define ver @VERSION@
|
||||
%define pkgver @VERSION@
|
||||
%define pkgrel 1
|
||||
|
||||
# ---
|
||||
# global settings
|
||||
|
||||
Packager: Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
Distribution: www.eca.cx audio software
|
||||
|
||||
# allow relocation
|
||||
Prefix: %{_prefix}
|
||||
|
||||
# ---
|
||||
# main package
|
||||
|
||||
Name: ecasound
|
||||
Version: %{pkgver}
|
||||
Release: %{pkgrel}
|
||||
Serial: 1
|
||||
Copyright: GPL
|
||||
Source: http://ecasound.seul.org/download/ecasound-%{ver}.tar.gz
|
||||
URL: http://www.eca.cx/ecasound
|
||||
BuildRoot: /var/tmp/%{name}-%{version}-root-%(id -u -n)
|
||||
Summary: ecasound - multitrack audio processing tool
|
||||
Group: Applications/Sound
|
||||
|
||||
%description
|
||||
Ecasound is a software package designed for multitrack audio
|
||||
processing. It can be used for simple tasks like audio playback,
|
||||
recording and format conversions, as well as for multitrack effect
|
||||
processing, mixing, recording and signal recycling. Ecasound supports
|
||||
a wide range of audio inputs, outputs and effect algorithms.
|
||||
Effects and audio objects can be combined in various ways, and their
|
||||
parameters can be controlled by operator objects like oscillators
|
||||
and MIDI-CCs. A versatile console mode user-interface is included
|
||||
in the package.
|
||||
|
||||
# ---
|
||||
# library package - ecasound-devel
|
||||
|
||||
%package devel
|
||||
Summary: Ecasound - development files
|
||||
Group: Applications/Sound
|
||||
|
||||
%description devel
|
||||
The ecasound-devel package contains the header files and static libraries
|
||||
necessary for building apps like ecawave and ecamegapedal that
|
||||
directly link against ecasound libraries.
|
||||
|
||||
# ---
|
||||
# library package - libecasoundc
|
||||
|
||||
%package -n libecasoundc
|
||||
Summary: Ecasound - libecasoundc
|
||||
Group: Applications/Sound
|
||||
|
||||
requires: ecasound
|
||||
|
||||
%description -n libecasoundc
|
||||
Ecasound - libecasoundc package. Provides
|
||||
C implementation of the Ecasound Control Interface
|
||||
(ECI). Both static library files and and header
|
||||
files are included in the package.
|
||||
|
||||
# ---
|
||||
# pyecasound
|
||||
|
||||
%package -n pyecasound
|
||||
Summary: Python bindings to ecasound control interface.
|
||||
Group: Applications/Sound
|
||||
Requires: ecasound
|
||||
|
||||
%description -n pyecasound
|
||||
Python bindings to Ecasound Control Interface (ECI).
|
||||
|
||||
# ---
|
||||
# build phase
|
||||
|
||||
%prep
|
||||
%setup -n ecasound-@VERSION@
|
||||
%build
|
||||
./configure --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_mandir} --with-pic $extra_params
|
||||
make
|
||||
|
||||
%install
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
make DESTDIR="$RPM_BUILD_ROOT" install-strip
|
||||
( cd pyecasound
|
||||
%python_compile_opt
|
||||
%python_compile
|
||||
install *.pyc *.pyo $RPM_BUILD_ROOT%{python_sitepkgsdir}
|
||||
)
|
||||
|
||||
# note! this is needed for automake 1.4 and older
|
||||
strip --strip-unneeded \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecasound \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecaconvert \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecafixdc \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecanormalize \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecaplay \
|
||||
${RPM_BUILD_ROOT}%{_bindir}/ecasignalview \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libecasound.a \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libecasoundc.a \
|
||||
${RPM_BUILD_ROOT}%{_libdir}/libkvutils.a
|
||||
|
||||
# ---
|
||||
# cleanup after build
|
||||
|
||||
%clean
|
||||
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
# ---
|
||||
# files sections (main)
|
||||
|
||||
%files
|
||||
%defattr(-, root, root)
|
||||
%doc NEWS COPYING COPYING.GPL COPYING.LGPL README INSTALL AUTHORS BUGS TODO examples
|
||||
%doc Documentation/*.html
|
||||
%doc Documentation/*.txt
|
||||
%{_mandir}/man1/eca*
|
||||
%{_mandir}/man5/eca*
|
||||
%{_bindir}/ecasound
|
||||
%{_bindir}/ecaconvert
|
||||
%{_bindir}/ecafixdc
|
||||
%{_bindir}/ecalength
|
||||
%{_bindir}/ecamonitor
|
||||
%{_bindir}/ecanormalize
|
||||
%{_bindir}/ecaplay
|
||||
%{_bindir}/ecasignalview
|
||||
%dir %{_datadir}/ecasound
|
||||
%{_datadir}/ecasound/ecasound.el
|
||||
%config %{_datadir}/ecasound/ecasoundrc
|
||||
%config %{_datadir}/ecasound/generic_oscillators
|
||||
%config %{_datadir}/ecasound/effect_presets
|
||||
|
||||
# ---
|
||||
# files sections (devel)
|
||||
|
||||
%files devel
|
||||
%defattr(-, root, root)
|
||||
%{_bindir}/libecasound-config
|
||||
%{_includedir}/kvutils
|
||||
%{_includedir}/libecasound
|
||||
%{_libdir}/libecasound.la
|
||||
%{_libdir}/libecasound.a
|
||||
%{_libdir}/libkvutils.la
|
||||
%{_libdir}/libkvutils.a
|
||||
|
||||
# ---
|
||||
# files sections (libecasoundc)
|
||||
|
||||
%files -n libecasoundc
|
||||
%defattr(-, root, root)
|
||||
%{_bindir}/libecasoundc-config
|
||||
%{_includedir}/libecasoundc
|
||||
%{_libdir}/libecasoundc.la
|
||||
%{_libdir}/libecasoundc.a
|
||||
|
||||
# ---
|
||||
# files sections (pyecasound)
|
||||
|
||||
%files -n pyecasound
|
||||
%defattr(644,root,root,755)
|
||||
%attr(755,root,root) %{python_sitepkgsdir}/*.so
|
||||
%{python_sitepkgsdir}/*.pyo
|
||||
%{python_sitepkgsdir}/*.pyc
|
||||
%{python_sitepkgsdir}/*.py
|
||||
|
||||
# ---
|
||||
# changelog
|
||||
|
||||
%changelog
|
||||
* Sun Jan 22 2006 Markus Grabner <grabner -at- icg -dot- tu-graz -dot- ac -dot- at>
|
||||
- Updated to work on x86_64 platforms.
|
||||
- The "--libdir=%{_libdir}" switch is required on x86_64 to select "lib64"
|
||||
for installation instead of "lib".
|
||||
- "--with-pic" added to avoid compile errors on x86_64.
|
||||
- "%{_bindir}/ecalength" added
|
||||
- "%dir" keyword added to remove errors about files listed twice.
|
||||
|
||||
* Mon Apr 25 2005 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- fixed problems using ecasound.spec with recent versions of rpm
|
||||
by removing macro-statements from the changelog entries
|
||||
|
||||
* Wed Nov 03 2004 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- spam-protected all email-addresses
|
||||
|
||||
* Wed Aug 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added 'AUTHORS' file
|
||||
|
||||
* Mon Jan 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added Serial tag to differentiate between 2.2 pre and
|
||||
final releases
|
||||
|
||||
* Sat Nov 02 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ported Fernando Lopez-Lezcano's changes to unify this
|
||||
spec file with PlanetCCRMA's ecasound package; see
|
||||
http://ccrma-www.stanford.edu/planetccrma/software/soundapps.html
|
||||
- ecasound.el added to package (installed as a data
|
||||
file to avoid dependency to emacs/elisp)
|
||||
- removed unnecessary raw documentation source files
|
||||
- man files are no longer installed as doc files
|
||||
- use redhat style mandir location
|
||||
|
||||
* Thu Oct 31 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- minor layout changes
|
||||
- added TODO to the package
|
||||
- changed to use rpmrc dir variables
|
||||
|
||||
* Thu Oct 24 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added the COPYING files to the package
|
||||
|
||||
* Thu Oct 17 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- added the -devel package
|
||||
- fixed the build procedure to handle static builds
|
||||
|
||||
* Wed Oct 16 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- removed all shared libraries and subpackages containing
|
||||
them
|
||||
- ecamonitor binary added to main package
|
||||
|
||||
* Sat Oct 05 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- changed libecasoundc versioning back to normal libtool style
|
||||
|
||||
* Thu Apr 25 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- libraries put to separate subpackages, interface
|
||||
version numbers code to library names
|
||||
- ecasound-config renamed to libecasound-config
|
||||
- ecasoundc-config renamed to libecasoundc-config
|
||||
- plugin install dir changed from prefix/lib/ecasound-plugins
|
||||
to prefix/lib/libecasoundX-plugins
|
||||
- 'contrib' directory removed
|
||||
- ecasound-plugins subpackage renamed to libecasoundX-plugins
|
||||
|
||||
* Mon Oct 01 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- dropped the hardcoded python module path from configure
|
||||
argument list
|
||||
|
||||
* Wed Jan 17 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- python subpackage config (thanks to wrobell / PLD Linux!)
|
||||
|
||||
* Sat Dec 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- contrib and examples directories added to docs
|
||||
- ecasoundc-config added
|
||||
- libecasoundc added (C implementation of ECI)
|
||||
- a new package: pyecasound
|
||||
|
||||
* Sat Nov 25 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ecasignalview added to the package.
|
||||
|
||||
* Thu Aug 31 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added /etc/ld.so.conf modification script.
|
||||
- Added DESTDIR to install-section.
|
||||
|
||||
* Wed Aug 30 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- 'ecasound-config' script added.
|
||||
|
||||
* Sun Aug 20 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- All Qt-related stuff removed.
|
||||
|
||||
* Wed Jul 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added the -plugins package.
|
||||
|
||||
* Wed Jun 07 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- ecaconvert added to the package.
|
||||
|
||||
* Mon Jun 05 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Renamed ecatools programs.
|
||||
|
||||
* Mon Apr 15 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Removed dynamic linking to ALSA libraries. You
|
||||
can get ALSA support by recompiling the source-RPM
|
||||
package.
|
||||
|
||||
* Mon Feb 10 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Added libqtecasound to ecasound-qt.
|
||||
|
||||
* Mon Nov 09 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- A complete reorganization. Ecasound distribution is now
|
||||
divided to three RPMs: ecasound, ecasound-qt and ecasound-devel.
|
||||
|
||||
* Mon Nov 08 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- As Redhat stopped the RHCN project, so these rpms
|
||||
are again distributed via Redhat's contrib service
|
||||
- You can also get these from http://ecasound.seul.org/download
|
||||
|
||||
* Sun Aug 15 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
|
||||
- Initial rhcn release.
|
|
@ -0,0 +1,586 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# ecasound/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
srcdir = .
|
||||
top_srcdir = ..
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
bin_PROGRAMS = ecasound$(EXEEXT)
|
||||
#bin_PROGRAMS = ecasound_debug$(EXEEXT)
|
||||
subdir = ecasound
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_ecasound_OBJECTS = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
|
||||
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
|
||||
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
|
||||
ecasound_OBJECTS = $(am_ecasound_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
ecasound_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
|
||||
$(top_builddir)/libecasound/libecasound.la \
|
||||
$(top_builddir)/kvutils/libkvutils.la
|
||||
am__objects_1 = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
|
||||
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
|
||||
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
|
||||
am_ecasound_debug_OBJECTS = $(am__objects_1)
|
||||
ecasound_debug_OBJECTS = $(am_ecasound_debug_OBJECTS)
|
||||
ecasound_debug_DEPENDENCIES = $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_1) \
|
||||
$(top_builddir)/libecasound/libecasound_debug.la \
|
||||
$(top_builddir)/kvutils/libkvutils_debug.la
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
|
||||
DIST_SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
|
||||
termcap_library_ncurses = -lncurses
|
||||
#termcap_library_termcap = -ltermcap
|
||||
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
|
||||
ecasound_SOURCES = ecasound.cpp \
|
||||
ecasound.h \
|
||||
eca-console.h \
|
||||
eca-curses.h \
|
||||
eca-curses.cpp \
|
||||
eca-comhelp.cpp \
|
||||
eca-comhelp.h \
|
||||
eca-neteci-server.cpp \
|
||||
eca-neteci-server.h \
|
||||
eca-plaintext.h \
|
||||
eca-plaintext.cpp \
|
||||
textdebug.cpp \
|
||||
textdebug.h
|
||||
|
||||
ecasound_debug_SOURCES = $(ecasound_SOURCES)
|
||||
ecasound_LDFLAGS = -export-dynamic
|
||||
ecasound_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound.la \
|
||||
$(top_builddir)/kvutils/libkvutils.la
|
||||
|
||||
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
|
||||
ecasound_debug_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound_debug.la \
|
||||
$(top_builddir)/kvutils/libkvutils_debug.la
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecasound/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ecasound/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
ecasound$(EXEEXT): $(ecasound_OBJECTS) $(ecasound_DEPENDENCIES)
|
||||
@rm -f ecasound$(EXEEXT)
|
||||
$(CXXLINK) $(ecasound_LDFLAGS) $(ecasound_OBJECTS) $(ecasound_LDADD) $(LIBS)
|
||||
ecasound_debug$(EXEEXT): $(ecasound_debug_OBJECTS) $(ecasound_debug_DEPENDENCIES)
|
||||
@rm -f ecasound_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecasound_debug_LDFLAGS) $(ecasound_debug_OBJECTS) $(ecasound_debug_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
include ./$(DEPDIR)/eca-comhelp.Po
|
||||
include ./$(DEPDIR)/eca-curses.Po
|
||||
include ./$(DEPDIR)/eca-neteci-server.Po
|
||||
include ./$(DEPDIR)/eca-plaintext.Po
|
||||
include ./$(DEPDIR)/ecasound.Po
|
||||
include ./$(DEPDIR)/textdebug.Po
|
||||
|
||||
.cpp.o:
|
||||
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=yes \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-binPROGRAMS uninstall-info-am
|
||||
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,52 @@
|
|||
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
|
||||
|
||||
if ECA_AM_USE_NCURSES
|
||||
termcap_library_ncurses = -lncurses
|
||||
endif
|
||||
|
||||
if ECA_AM_USE_TERMCAP
|
||||
termcap_library_termcap = -ltermcap
|
||||
endif
|
||||
|
||||
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
|
||||
|
||||
if ECA_AM_DEBUG_MODE
|
||||
bin_PROGRAMS = ecasound_debug
|
||||
else
|
||||
bin_PROGRAMS = ecasound
|
||||
endif
|
||||
|
||||
ecasound_SOURCES = ecasound.cpp \
|
||||
ecasound.h \
|
||||
eca-console.h \
|
||||
eca-curses.h \
|
||||
eca-curses.cpp \
|
||||
eca-comhelp.cpp \
|
||||
eca-comhelp.h \
|
||||
eca-neteci-server.cpp \
|
||||
eca-neteci-server.h \
|
||||
eca-plaintext.h \
|
||||
eca-plaintext.cpp \
|
||||
textdebug.cpp \
|
||||
textdebug.h
|
||||
|
||||
ecasound_debug_SOURCES = $(ecasound_SOURCES)
|
||||
|
||||
ecasound_LDFLAGS = -export-dynamic
|
||||
ecasound_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound.la \
|
||||
$(top_builddir)/kvutils/libkvutils.la
|
||||
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
|
||||
ecasound_debug_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound_debug.la \
|
||||
$(top_builddir)/kvutils/libkvutils_debug.la
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
|
@ -0,0 +1,586 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@ECA_AM_DEBUG_MODE_FALSE@bin_PROGRAMS = ecasound$(EXEEXT)
|
||||
@ECA_AM_DEBUG_MODE_TRUE@bin_PROGRAMS = ecasound_debug$(EXEEXT)
|
||||
subdir = ecasound
|
||||
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_ecasound_OBJECTS = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
|
||||
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
|
||||
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
|
||||
ecasound_OBJECTS = $(am_ecasound_OBJECTS)
|
||||
am__DEPENDENCIES_1 =
|
||||
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
ecasound_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
|
||||
$(top_builddir)/libecasound/libecasound.la \
|
||||
$(top_builddir)/kvutils/libkvutils.la
|
||||
am__objects_1 = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
|
||||
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
|
||||
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
|
||||
am_ecasound_debug_OBJECTS = $(am__objects_1)
|
||||
ecasound_debug_OBJECTS = $(am_ecasound_debug_OBJECTS)
|
||||
ecasound_debug_DEPENDENCIES = $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_1) \
|
||||
$(top_builddir)/libecasound/libecasound_debug.la \
|
||||
$(top_builddir)/kvutils/libkvutils_debug.la
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
|
||||
DIST_SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
|
||||
@ECA_AM_USE_NCURSES_TRUE@termcap_library_ncurses = -lncurses
|
||||
@ECA_AM_USE_TERMCAP_TRUE@termcap_library_termcap = -ltermcap
|
||||
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
|
||||
ecasound_SOURCES = ecasound.cpp \
|
||||
ecasound.h \
|
||||
eca-console.h \
|
||||
eca-curses.h \
|
||||
eca-curses.cpp \
|
||||
eca-comhelp.cpp \
|
||||
eca-comhelp.h \
|
||||
eca-neteci-server.cpp \
|
||||
eca-neteci-server.h \
|
||||
eca-plaintext.h \
|
||||
eca-plaintext.cpp \
|
||||
textdebug.cpp \
|
||||
textdebug.h
|
||||
|
||||
ecasound_debug_SOURCES = $(ecasound_SOURCES)
|
||||
ecasound_LDFLAGS = -export-dynamic
|
||||
ecasound_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound.la \
|
||||
$(top_builddir)/kvutils/libkvutils.la
|
||||
|
||||
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
|
||||
ecasound_debug_LDADD = $(termcap_library) \
|
||||
$(ECA_S_READLINE_LIBS) \
|
||||
$(top_builddir)/libecasound/libecasound_debug.la \
|
||||
$(top_builddir)/kvutils/libkvutils_debug.la
|
||||
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecasound/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ecasound/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
ecasound$(EXEEXT): $(ecasound_OBJECTS) $(ecasound_DEPENDENCIES)
|
||||
@rm -f ecasound$(EXEEXT)
|
||||
$(CXXLINK) $(ecasound_LDFLAGS) $(ecasound_OBJECTS) $(ecasound_LDADD) $(LIBS)
|
||||
ecasound_debug$(EXEEXT): $(ecasound_debug_OBJECTS) $(ecasound_debug_DEPENDENCIES)
|
||||
@rm -f ecasound_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecasound_debug_LDFLAGS) $(ecasound_debug_OBJECTS) $(ecasound_debug_LDADD) $(LIBS)
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-comhelp.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-curses.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-neteci-server.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-plaintext.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecasound.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textdebug.Po@am__quote@
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-data install-data-am install-exec \
|
||||
install-exec-am install-info install-info-am install-man \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
maintainer-clean maintainer-clean-generic mostlyclean \
|
||||
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
|
||||
pdf pdf-am ps ps-am tags uninstall uninstall-am \
|
||||
uninstall-binPROGRAMS uninstall-info-am
|
||||
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,170 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecasound.cpp: Console mode user interface to ecasound.
|
||||
// Copyright (C) 2000,2009 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 3 (see Ecasound Programmer's Guide)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#include "eca-comhelp.h"
|
||||
|
||||
/* FIXME: get chainop list from libecasound!
|
||||
* - 2009/Jan: or maybe not, people should just be pointed to
|
||||
* ecasound(1) */
|
||||
|
||||
static const char* ecasound_parameter_help_rep =
|
||||
"USAGE: ecasound [options] \n"
|
||||
" -c enable interactive mode \n"
|
||||
" -C disable interactive mode (batchmode)\n"
|
||||
" -d:debug_level show debug info \n"
|
||||
" -D print all trace messages to stderr\n"
|
||||
" -q quiet mode, no output\n"
|
||||
" -s[:]file.ecs load chainsetup from 'file' \n"
|
||||
" -E \"foo1 ; foo 2\" execute interactive commands at start\n"
|
||||
" --server enable ecasound's network control mode\n"
|
||||
" --server-tcp-port=NNN use TCP port NNN\n"
|
||||
" --no-server disable the daemon mode (default)\n"
|
||||
" --osc-udp-port=NNN listen for OSC messages on UDP port NNN\n"
|
||||
" --keep-running (or -K) do not exit from batchmode\n"
|
||||
" --help (or -h) show this help\n"
|
||||
" --version print version info\n"
|
||||
" --- \n"
|
||||
" -b:buffersize size of sample buffer in samples\n"
|
||||
" -B:mode buffering mode\n"
|
||||
" -m:mixmode mixmode\n"
|
||||
" -n:name set chainsetup name\n"
|
||||
" -r[:priority] raise runtime priority\n"
|
||||
" -sr:sample_rate set internal sample rate\n"
|
||||
" -x truncate outputs\n"
|
||||
" -X open outputs for update (default)\n"
|
||||
" -z:feature enable feature 'feature', see ecasound(1)\n"
|
||||
" --- \n"
|
||||
" -t:seconds processing time in seconds\n"
|
||||
" -tl enable looping\n"
|
||||
" --- \n"
|
||||
" -a:name1,name2, ... select/create chains ('all' reserved)\n"
|
||||
" -f:type,channels,srate set file format (for all following inputs/outputs)\n"
|
||||
" -i[:]infile specify an input (assigned to active chains)\n"
|
||||
" -o[:]outfile specify an input (assigned to active chains)\n"
|
||||
" -y:seconds set start position for preceding input/output\n"
|
||||
" --- \n"
|
||||
" -Md:rawmidi,midi_device set MIDI-device\n"
|
||||
" -Mms:device_id send MMC start/stop\n"
|
||||
" -Mss send MIDI start/stop\n"
|
||||
" --- \n"
|
||||
" -pf:preset.eep insert the first preset from file 'preset.eep'\n"
|
||||
" -pn:preset_name insert preset 'preset_name' from the\n"
|
||||
" preset database\n"
|
||||
" --- \n"
|
||||
" -eS:stamp-id audio stamp\n"
|
||||
" -ea:amp-% amplify\n"
|
||||
" -eac:amp-%,channel channel amplify\n"
|
||||
" -eaw:amp-%,max-clipped-samples - \n"
|
||||
" amplify with clip-control\n"
|
||||
" -ec:compression-rate-dB,threshold-% ...\n"
|
||||
" compressor\n"
|
||||
" -eca:peak-limit-%,release-time-sec,fast-crate,overall-crate ...\n"
|
||||
" advanced compressor\n"
|
||||
" -eemb:bpm,on-time-msec pulse gate (bpm)\n"
|
||||
" -eemp:freq-Hz,on-time-% pulse gate\n"
|
||||
" -eemt:bpm,depth-% tremolo\n"
|
||||
" -ef1:center-freq,width resonant bandpass filter\n"
|
||||
" -ef3:cutoff-freq,resonance,gain ...\n"
|
||||
" resonant lowpass filter\n"
|
||||
" -ef4:cutoff-freq,resonance ...\n"
|
||||
" resonant lowpass filter (2nd-order,24dB)\n"
|
||||
" -efa:delay-samples,feedback-% ...\n"
|
||||
" allpass filter\n"
|
||||
" -efb:center-freq,width bandpass filter\n"
|
||||
" -efc:delay-samples,radius ...\n"
|
||||
" comb filter\n"
|
||||
" -efh:cutoff-freq highpass filter\n"
|
||||
" -efi:delay-samples,radius ...\n"
|
||||
" inverse comb filter\n"
|
||||
" -efl:cutoff-freq lowpass filter\n"
|
||||
" -efr:center-freq,width bandreject filter\n"
|
||||
" -efs:center-freq,width resonator filter\n"
|
||||
" -ei:change-% pitch shifter\n"
|
||||
" -el:name,par1,...,parN LADSPA-plugin 'name'\n"
|
||||
" -eli:id,par1,...,parnN LADSPA-plugin with numeric 'id'\n"
|
||||
" -enm:threshold-level-%,pre-hold-time-msec,attack-time-msec,post-hold-time-msec,release-time-msec ...\n"
|
||||
" noise gate\n"
|
||||
" -erc:from-channel,to-channel ...\n"
|
||||
" copy 'from-channel' to 'to-channel'\n"
|
||||
" -erm:to-channel mix all channels to channel 'to-channel' \n"
|
||||
" -epp:right-% normal pan\n"
|
||||
" -etc:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
|
||||
" chorus\n"
|
||||
" -etd:delay-time-msec,surround-mode,number-of-delays,mix-%,feedback-% ...\n"
|
||||
" delay\n"
|
||||
" -ete:room-size,feedback-%,wet-% ...\n"
|
||||
" advanced reverb\n"
|
||||
" -etf:delay-time-msec fake stereo\n"
|
||||
" -etl:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
|
||||
" flanger\n"
|
||||
" -etm:delay-time-msec,number-of-delays,mix-% ...\n"
|
||||
" multitap delay\n"
|
||||
" -etp:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
|
||||
" phaser\n"
|
||||
" -etr:delay-time,surround-mode,feedback-% ...\n"
|
||||
" reverb\n"
|
||||
" -ev:cumulative-mode,result-max-multiplier ...\n"
|
||||
" analyze/maximize volume\n"
|
||||
" -evp:peak-ch1,peak-chN peak amplitude watcher\n"
|
||||
" -ezf find optimal value for DC-offset adjustment\n"
|
||||
" -ezx:channel-count,delta-ch1,...,delta-chN\n"
|
||||
" adjust DC-offset\n"
|
||||
" --- \n"
|
||||
" -gc:open-at-sec,duration-sec ...\n"
|
||||
" time crop gate\n"
|
||||
" -ge:threshold-openlevel-%,threshold-closelevel-%,rms-enabled ...\n"
|
||||
" threshold gate\n"
|
||||
" --- \n"
|
||||
" -kf:param-id,range-low,range-high,freq,mode,preset-number ...\n"
|
||||
" file envelope (generic oscillator)\n"
|
||||
" -kl:param-id,range-low,range-high,length-sec ...\n"
|
||||
" linear envelope (fade-in and fade-out)\n"
|
||||
" -kl2:param-id,range-low,range-high,1st-stage-sec,2nd-stage-sec ...\n"
|
||||
" two-stage linear envelope\n"
|
||||
" -klg:param-id,range-low,range-high,point_count ...\n"
|
||||
" generic linear envelope\n"
|
||||
" -km:param-id,range-low,range-high,controller,channel ...\n"
|
||||
" MIDI-controlled envelope\n"
|
||||
" -kog:param-id,range-low,range-high,freq,mode,pcount,start_val,end_val ...\n"
|
||||
" generic oscillator\n"
|
||||
" -kos:param-id,range-low,range-high,freq,phase-offset ...\n"
|
||||
" sine oscillator\n"
|
||||
" -ksv:param-id,range-low,range-high,stamp-id,rms-toggle ...\n"
|
||||
" volume analyzing controller"
|
||||
" --- \n"
|
||||
" -kx use last specified controller as\n"
|
||||
" controller target\n"
|
||||
"\n"
|
||||
"Note that this is only a partial list of available options. For\n"
|
||||
"a complete list of available options, as well as more detailed\n"
|
||||
"descriptions of of their use, see ecasound(1) manual page and\n"
|
||||
"the documentation at ecasound's website. Documentation is available\n"
|
||||
"online at:\n"
|
||||
" - http://eca.cx/ecasound/Documentation/ecasound_manpage.html\n"
|
||||
" - http://eca.cx/ecasound/Documentation/examples.html\n"
|
||||
"\n"
|
||||
"Report bugs to ecasound-list mailing list (http://www.eca.cx/contact).\n";
|
||||
|
||||
const char* ecasound_parameter_help(void)
|
||||
{
|
||||
return ecasound_parameter_help_rep;
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
#ifndef INCLUDED_ECA_COMHELP_H
|
||||
#define INCLUDED_ECA_COMHELP_H
|
||||
|
||||
const char* ecasound_parameter_help(void);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,44 @@
|
|||
#ifndef INCLUDED_ECA_CONSOLE_H
|
||||
#define INCLUDED_ECA_CONSOLE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
/**
|
||||
* Abstract interface for console
|
||||
* mode ecasound user interface
|
||||
* implementations.
|
||||
*
|
||||
* @author Kai Vehmanen
|
||||
*/
|
||||
class ECA_CONSOLE {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Prints the text string 'msg'.
|
||||
*/
|
||||
virtual void print(const std::string& msg) = 0;
|
||||
|
||||
/**
|
||||
* Prints the ecasound banner.
|
||||
*/
|
||||
virtual void print_banner(void) = 0;
|
||||
|
||||
/**
|
||||
* Reads the next user command.
|
||||
*
|
||||
* @param prompt prompt shown to user
|
||||
*
|
||||
* @see last_command()
|
||||
*/
|
||||
virtual void read_command(const std::string& prompt) = 0;
|
||||
|
||||
/**
|
||||
* Returns the last read user command.
|
||||
*/
|
||||
virtual const std::string& last_command(void) const = 0;
|
||||
|
||||
virtual ~ECA_CONSOLE(void) {};
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_ECA_CONSOLE_H */
|
|
@ -0,0 +1,220 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// eca-curses.cpp: Curses implementation of the console user interface.
|
||||
// Copyright (C) 1999-2004,2007 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 2
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#if defined(ECA_PLATFORM_CURSES)
|
||||
|
||||
#ifdef ECA_USE_NCURSES_H
|
||||
#include <ncurses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#elif ECA_USE_NCURSES_NCURSES_H
|
||||
#include <ncurses/ncurses.h>
|
||||
#include <ncurses/term.h> /* for setupterm() */
|
||||
#else
|
||||
#include <curses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#endif
|
||||
|
||||
#define READLINE_LIBRARY
|
||||
#include <readline.h>
|
||||
#include <history.h>
|
||||
|
||||
#include <eca-iamode-parser.h>
|
||||
#include <eca-version.h>
|
||||
#include <kvu_utils.h> /* kvu_string_search_and_replace() */
|
||||
|
||||
#include "ecasound.h"
|
||||
#include "eca-curses.h"
|
||||
|
||||
#if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION >= 0x0402
|
||||
static char** ecasound_completion (const char *text, int start, int end);
|
||||
static char* ecasound_command_generator (const char* text, int state);
|
||||
#else
|
||||
static char** ecasound_completion (char *text, int start, int end);
|
||||
static char* ecasound_command_generator (char* text, int state);
|
||||
#endif
|
||||
|
||||
ECA_CURSES::ECA_CURSES(void)
|
||||
{
|
||||
rl_initialized_rep = false;
|
||||
setupterm((char *)0, 1, (int *)0);
|
||||
init_readline_support();
|
||||
}
|
||||
|
||||
ECA_CURSES::~ECA_CURSES(void)
|
||||
{
|
||||
if (rl_initialized_rep == true) {
|
||||
rl_cleanup_after_signal();
|
||||
}
|
||||
}
|
||||
|
||||
void ECA_CURSES::print(const std::string& msg)
|
||||
{
|
||||
std::cout << msg << std::endl;
|
||||
}
|
||||
|
||||
void ECA_CURSES::print_banner(void)
|
||||
{
|
||||
int width = COLS - 4;
|
||||
if (width > ECASOUND_TERM_WIDTH_DEFAULT)
|
||||
width = ECASOUND_TERM_WIDTH_DEFAULT;
|
||||
string banner (width, '*');
|
||||
std::cout << banner << std::endl;
|
||||
std::cout << "*";
|
||||
putp(tigetstr("bold"));
|
||||
std::cout << " ecasound v"
|
||||
<< ecasound_library_version
|
||||
<< ECASOUND_COPYRIGHT;
|
||||
putp(tigetstr("sgr0"));
|
||||
std::cout << "\n";
|
||||
std::cout << banner << std::endl;
|
||||
}
|
||||
|
||||
void ECA_CURSES::read_command(const std::string& prompt)
|
||||
{
|
||||
if (rl_initialized_rep != true) rl_initialized_rep = true;
|
||||
last_cmdchar_repp = readline(const_cast<char*>(prompt.c_str()));
|
||||
if (last_cmdchar_repp != 0) {
|
||||
add_history(last_cmdchar_repp);
|
||||
last_cmd_rep = last_cmdchar_repp;
|
||||
free(last_cmdchar_repp);
|
||||
}
|
||||
else {
|
||||
/* handle EOF */
|
||||
last_cmd_rep = "q";
|
||||
}
|
||||
}
|
||||
|
||||
const std::string& ECA_CURSES::last_command(void) const
|
||||
{
|
||||
return last_cmd_rep;
|
||||
}
|
||||
|
||||
void ECA_CURSES::init_readline_support(void)
|
||||
{
|
||||
/* for conditional parsing of ~/.inputrc file. */
|
||||
rl_readline_name = "ecasound";
|
||||
|
||||
/* we want to attempt completion first */
|
||||
#if RL_READLINE_VERSION >= 0x0402
|
||||
rl_attempted_completion_function = (rl_completion_func_t*)ecasound_completion;
|
||||
#else
|
||||
rl_attempted_completion_function = (CPPFunction *)ecasound_completion;
|
||||
#endif
|
||||
}
|
||||
|
||||
/* **************************************************************** */
|
||||
/* */
|
||||
/* Interface to Readline Completion */
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/**
|
||||
* Attempt to complete on the contents of TEXT. START and END bound the
|
||||
* region of rl_line_buffer that contains the word to complete. TEXT is
|
||||
* the word to complete. We can use the entire contents of rl_line_buffer
|
||||
* in case we want to do some simple parsing. Return the array of matches,
|
||||
* or NULL if there aren't any.
|
||||
*/
|
||||
#if RL_READLINE_VERSION >= 0x0402
|
||||
char** ecasound_completion (const char *text, int start, int end)
|
||||
#else
|
||||
char** ecasound_completion (char *text, int start, int end)
|
||||
#endif
|
||||
{
|
||||
char **matches;
|
||||
matches = (char **)NULL;
|
||||
|
||||
/* complete only the first command, otherwise complete files in
|
||||
* the current directory */
|
||||
if (start == 0) {
|
||||
#if RL_READLINE_VERSION >= 0x0402
|
||||
matches = rl_completion_matches (text, (rl_compentry_func_t *)ecasound_command_generator);
|
||||
#else
|
||||
matches = completion_matches (text, (CPFunction *)ecasound_command_generator);
|
||||
#endif
|
||||
}
|
||||
return matches;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generator function for command completion. STATE lets us know whether
|
||||
* to start from scratch; without any state (i.e. STATE == 0), then we
|
||||
* start at the top of the list.
|
||||
*/
|
||||
#if RL_READLINE_VERSION >= 0x0402
|
||||
char* ecasound_command_generator (const char* text, int state)
|
||||
#else
|
||||
char* ecasound_command_generator (char* text, int state)
|
||||
#endif
|
||||
{
|
||||
static int list_index, len;
|
||||
static const std::map<std::string,int>& map_ref = ECA_IAMODE_PARSER::registered_commands();
|
||||
static std::map<std::string,int>::const_iterator p;
|
||||
static std::string cmd;
|
||||
|
||||
/* If this is a new word to complete, initialize now. This includes
|
||||
* saving the length of TEXT for efficiency, and initializing the index
|
||||
* variable to 0
|
||||
*/
|
||||
if (!state) {
|
||||
list_index = 0;
|
||||
p = map_ref.begin();
|
||||
len = strlen (text);
|
||||
}
|
||||
|
||||
/* Return the next name which partially matches from the command list */
|
||||
while (p != map_ref.end()) {
|
||||
cmd = p->first;
|
||||
list_index++;
|
||||
++p;
|
||||
if (p != map_ref.end()) {
|
||||
std::string hyphenstr = kvu_string_search_and_replace(text, '_', '-');
|
||||
if (strncmp(hyphenstr.c_str(), cmd.c_str(), len) == 0) {
|
||||
return strdup(cmd.c_str());
|
||||
}
|
||||
}
|
||||
}
|
||||
return (char *)0;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
#include "eca-curses.h"
|
||||
|
||||
ECA_CURSES::ECA_CURSES(void) {}
|
||||
ECA_CURSES::~ECA_CURSES(void) {}
|
||||
void ECA_CURSES::print(const std::string& msg) {}
|
||||
void ECA_CURSES::print_banner(void) {}
|
||||
void ECA_CURSES::read_command(const std::string& prompt) {}
|
||||
const std::string& ECA_CURSES::last_command(void) const { static std::string empty; return empty; }
|
||||
void ECA_CURSES::init_readline_support(void) {}
|
||||
|
||||
#endif /* ECA_PLATFORM_CURSES */
|
|
@ -0,0 +1,60 @@
|
|||
#ifndef INCLUDED_ECA_CURSES_H
|
||||
#define INCLUDED_ECA_CURSES_H
|
||||
|
||||
#include <string>
|
||||
#include "eca-console.h"
|
||||
|
||||
/**
|
||||
* Abstract interface for console
|
||||
* mode ecasound user interface
|
||||
* implementations.
|
||||
*
|
||||
* @author Kai Vehmanen
|
||||
*/
|
||||
class ECA_CURSES : public ECA_CONSOLE {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor. Initialized the GNU readline
|
||||
* interface.
|
||||
*/
|
||||
ECA_CURSES(void);
|
||||
|
||||
/**
|
||||
* Virtual destructor.
|
||||
*/
|
||||
virtual ~ECA_CURSES(void);
|
||||
|
||||
/**
|
||||
* Prints the text string 'msg'.
|
||||
*/
|
||||
virtual void print(const std::string& msg);
|
||||
|
||||
/**
|
||||
* Prints the ecasound banner.
|
||||
*/
|
||||
virtual void print_banner(void);
|
||||
|
||||
/**
|
||||
* Reads the next user command.
|
||||
*
|
||||
* @see last_command()
|
||||
*/
|
||||
virtual void read_command(const std::string& prompt);
|
||||
|
||||
/**
|
||||
* Returns the last read user command.
|
||||
*/
|
||||
virtual const std::string& last_command(void) const;
|
||||
|
||||
private:
|
||||
|
||||
void init_readline_support(void);
|
||||
|
||||
char* last_cmdchar_repp;
|
||||
std::string last_cmd_rep;
|
||||
bool rl_initialized_rep;
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_ECA_CURSES_H */
|
|
@ -0,0 +1,557 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// eca-neteci-server.c: NetECI server implementation.
|
||||
// Copyright (C) 2002,2004,2009 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 3
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#include <cassert>
|
||||
#include <cstring> /* memcpy() */
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <fcntl.h> /* POSIX: fcntl() */
|
||||
#include <pthread.h> /* POSIX: pthread_* */
|
||||
#include <unistd.h> /* POSIX: fcntl() */
|
||||
#include <arpa/inet.h> /* BSD: inet_ntoa() */
|
||||
#include <netinet/in.h> /* BSD: inet_ntoa() */
|
||||
#include <sys/poll.h> /* POSIX: poll() */
|
||||
#include <sys/socket.h> /* BSD: getpeername() */
|
||||
#include <sys/types.h> /* OSX: u_int32_t (INADDR_ANY) */
|
||||
|
||||
#include <kvu_dbc.h>
|
||||
#include <kvu_fd_io.h>
|
||||
#include <kvu_numtostr.h>
|
||||
#include <kvu_utils.h>
|
||||
|
||||
#include <eca-control-mt.h>
|
||||
#include <eca-logger.h>
|
||||
#include <eca-logger-wellformed.h>
|
||||
|
||||
#include "ecasound.h"
|
||||
#include "eca-neteci-server.h"
|
||||
|
||||
/**
|
||||
* Options
|
||||
*/
|
||||
// #define NETECI_DEBUG_ENABLED
|
||||
|
||||
#define ECA_NETECI_START_BUFFER_SIZE 128
|
||||
#define ECA_NETECI_MAX_BUFFER_SIZE 65536
|
||||
|
||||
/**
|
||||
* Macro definitions
|
||||
*/
|
||||
|
||||
#ifdef NETECI_DEBUG_ENABLED
|
||||
#define NETECI_DEBUG(x) x
|
||||
#else
|
||||
#define NETECI_DEBUG(x) ((void) 0)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Import namespaces
|
||||
*/
|
||||
|
||||
using namespace std;
|
||||
|
||||
ECA_NETECI_SERVER::ECA_NETECI_SERVER(ECASOUND_RUN_STATE* state)
|
||||
: state_repp(state),
|
||||
srvfd_rep(-1),
|
||||
server_listening_rep(false),
|
||||
unix_sockets_rep(false),
|
||||
cleanup_request_rep(false)
|
||||
{
|
||||
}
|
||||
|
||||
ECA_NETECI_SERVER::~ECA_NETECI_SERVER(void)
|
||||
{
|
||||
if (server_listening_rep == true) {
|
||||
close_server_socket();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches the server thread.
|
||||
*
|
||||
* @param arg pointer to a ECA_NETECI_SERVER object
|
||||
*/
|
||||
void* ECA_NETECI_SERVER::launch_server_thread(void* arg)
|
||||
{
|
||||
ECA_LOG_MSG(ECA_LOGGER::user_objects, "Server thread started");
|
||||
|
||||
ECA_NETECI_SERVER* self =
|
||||
reinterpret_cast<ECA_NETECI_SERVER*>(arg);
|
||||
self->run();
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Starts running the NetECI server.
|
||||
*
|
||||
* After calling this function, the ECA_CONTROL_MAIN object
|
||||
* may be used at any time from the NetECI server thread.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::run(void)
|
||||
{
|
||||
create_server_socket();
|
||||
open_server_socket();
|
||||
if (server_listening_rep == true) {
|
||||
listen_for_events();
|
||||
}
|
||||
else {
|
||||
ECA_LOG_MSG(ECA_LOGGER::info,
|
||||
"Unable to start NetECI server. Please check that no other program is using the TCP port "
|
||||
+ kvu_numtostr(state_repp->neteci_tcp_port)
|
||||
+ ".");
|
||||
}
|
||||
close_server_socket();
|
||||
|
||||
ECA_LOG_MSG(ECA_LOGGER::user_objects,
|
||||
"server thread exiting");
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a server socket with 'socket()'. Depending on
|
||||
* object configuration either UNIX or IP socket is
|
||||
* created.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::create_server_socket(void)
|
||||
{
|
||||
DBC_REQUIRE(server_listening_rep != true);
|
||||
DBC_REQUIRE(srvfd_rep <= 0);
|
||||
|
||||
if (unix_sockets_rep == true) {
|
||||
srvfd_rep = socket(AF_UNIX, SOCK_STREAM, 0);
|
||||
if (srvfd_rep >= 0) {
|
||||
/* create a temporary filename for the socket in a secure way */
|
||||
socketpath_rep = "/tmp/neteci_server_1";
|
||||
addr_un_rep.sun_family = AF_UNIX;
|
||||
memcpy(addr_un_rep.sun_path, socketpath_rep.c_str(), socketpath_rep.size() + 1);
|
||||
addr_repp = reinterpret_cast<struct sockaddr*>(&addr_un_rep);
|
||||
}
|
||||
}
|
||||
else {
|
||||
srvfd_rep = socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (srvfd_rep >= 0) {
|
||||
addr_in_rep.sin_family = AF_INET;
|
||||
addr_in_rep.sin_port = htons(state_repp->neteci_tcp_port);
|
||||
addr_in_rep.sin_addr.s_addr = INADDR_ANY;
|
||||
|
||||
addr_repp = reinterpret_cast<struct sockaddr*>(&addr_in_rep);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the server socket for listening. If succesful,
|
||||
* 'server_listening_rep' will be true after the call.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::open_server_socket(void)
|
||||
{
|
||||
DBC_REQUIRE(server_listening_rep != true);
|
||||
DBC_REQUIRE(srvfd_rep > 0);
|
||||
|
||||
int val = 1;
|
||||
int ret = setsockopt(srvfd_rep, SOL_SOCKET, SO_REUSEADDR, (void *)&val, sizeof(val));
|
||||
if (ret < 0)
|
||||
std::cerr << "setsockopt() failed." << endl;
|
||||
|
||||
// int res = bind(srvfd_rep, (struct sockaddr*)addr_repp, sizeof(*addr_repp));
|
||||
|
||||
int res = 0;
|
||||
if (unix_sockets_rep == true)
|
||||
res = bind(srvfd_rep, (struct sockaddr*)&addr_un_rep, sizeof(addr_un_rep));
|
||||
else
|
||||
res = bind(srvfd_rep, (struct sockaddr*)&addr_in_rep, sizeof(addr_in_rep));
|
||||
|
||||
if (res == 0) {
|
||||
res = listen(srvfd_rep, 5);
|
||||
if (res == 0) {
|
||||
int res = fcntl(srvfd_rep, F_SETFL, O_NONBLOCK);
|
||||
if (res == -1)
|
||||
std::cerr << "fcntl() failed." << endl;
|
||||
|
||||
NETECI_DEBUG(std::cout << "server socket created." << endl);
|
||||
server_listening_rep = true;
|
||||
}
|
||||
else
|
||||
std::cerr << "listen() failed." << endl;
|
||||
}
|
||||
else {
|
||||
if (unix_sockets_rep == true) {
|
||||
unlink(socketpath_rep.c_str());
|
||||
}
|
||||
socketpath_rep.resize(0);
|
||||
std::cerr << "bind() failed." << endl;
|
||||
}
|
||||
|
||||
DBC_ENSURE((unix_sockets_rep == true &&
|
||||
(((server_listening_rep == true && socketpath_rep.size() > 0) ||
|
||||
(server_listening_rep != true && socketpath_rep.size() == 0)))) ||
|
||||
(unix_sockets_rep != true));
|
||||
}
|
||||
|
||||
/**
|
||||
* Closes the server socket.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::close_server_socket(void)
|
||||
{
|
||||
DBC_REQUIRE(srvfd_rep > 0);
|
||||
DBC_REQUIRE(server_listening_rep == true);
|
||||
|
||||
NETECI_DEBUG(cerr << "closing socket " << kvu_numtostr(srvfd_rep) << "." << endl);
|
||||
close(srvfd_rep);
|
||||
srvfd_rep = -1;
|
||||
server_listening_rep = false;
|
||||
|
||||
DBC_ENSURE(srvfd_rep == -1);
|
||||
DBC_ENSURE(server_listening_rep != true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Listens for and accepts incoming connections.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::listen_for_events(void)
|
||||
{
|
||||
/*
|
||||
* - loop until we get an exit request from network or from
|
||||
* ecasound_state
|
||||
*/
|
||||
|
||||
/* - enter poll
|
||||
* - if new connections, accept them and add the new client to
|
||||
* client list
|
||||
* - if incoming bytes, grab ecasound_state lock, send command,
|
||||
* store retval, release lock, send the reply to client
|
||||
* - return to poll
|
||||
*/
|
||||
while(state_repp->exit_request == 0) {
|
||||
// NETECI_DEBUG(cerr << "checking for events" << endl);
|
||||
check_for_events(2000);
|
||||
}
|
||||
|
||||
if (state_repp->exit_request != 0) {
|
||||
NETECI_DEBUG(cerr << "exit_request received" << endl);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for new connections and messages from
|
||||
* clients.
|
||||
*
|
||||
* @param timeout upper-limit in ms for how long
|
||||
* function waits for events; if -1,
|
||||
* call will return immediately
|
||||
* (ie. is non-blocking)
|
||||
*/
|
||||
void ECA_NETECI_SERVER::check_for_events(int timeout)
|
||||
{
|
||||
int nfds = clients_rep.size() + 1;
|
||||
struct pollfd* ufds = new struct pollfd [nfds];
|
||||
|
||||
ufds[0].fd = srvfd_rep;
|
||||
ufds[0].events = POLLIN;
|
||||
ufds[0].revents = 0;
|
||||
|
||||
std::list<struct ecasound_neteci_server_client*>::iterator p = clients_rep.begin();
|
||||
for(int n = 1; n < nfds; n++) {
|
||||
ufds[n].fd = (*p)->fd;
|
||||
ufds[n].events = POLLIN;
|
||||
ufds[n].revents = 0;
|
||||
++p;
|
||||
}
|
||||
DBC_CHECK(nfds == 1 || p == clients_rep.end());
|
||||
|
||||
int ret = poll(ufds, nfds, timeout);
|
||||
if (ret > 0) {
|
||||
if (ufds[0].revents & POLLIN) {
|
||||
/* 1. new incoming connection */
|
||||
handle_connection(srvfd_rep);
|
||||
}
|
||||
p = clients_rep.begin();
|
||||
for(int n = 1; n < nfds; n++) {
|
||||
if (ufds[n].revents & POLLIN) {
|
||||
/* 2. client has sent a message */
|
||||
handle_client_messages(*p);
|
||||
}
|
||||
else if (ufds[n].revents == POLLERR ||
|
||||
ufds[n].revents == POLLHUP ||
|
||||
ufds[n].revents == POLLNVAL) {
|
||||
/* 3. error, remove client */
|
||||
remove_client(*p);
|
||||
}
|
||||
if (p != clients_rep.end()) ++p;
|
||||
}
|
||||
}
|
||||
|
||||
if (cleanup_request_rep == true) {
|
||||
clean_removed_clients();
|
||||
}
|
||||
|
||||
delete[] ufds;
|
||||
}
|
||||
|
||||
void ECA_NETECI_SERVER::handle_connection(int fd)
|
||||
{
|
||||
socklen_t bytes = 0;
|
||||
string peername;
|
||||
int connfd = 0;
|
||||
|
||||
if (unix_sockets_rep == true) {
|
||||
bytes = static_cast<socklen_t>(sizeof(addr_un_rep));
|
||||
connfd = accept(fd, reinterpret_cast<struct sockaddr*>(&addr_un_rep), &bytes);
|
||||
peername = "UNIX:" + socketpath_rep;
|
||||
}
|
||||
else {
|
||||
bytes = static_cast<socklen_t>(sizeof(addr_in_rep));
|
||||
connfd = accept(fd, reinterpret_cast<struct sockaddr*>(&addr_in_rep), &bytes);
|
||||
|
||||
if (connfd > 0) {
|
||||
struct sockaddr_in peeraddr;
|
||||
socklen_t peernamelen;
|
||||
// struct in_addr peerip;
|
||||
peername = "TCP/IP:";
|
||||
int res = getpeername(connfd,
|
||||
reinterpret_cast<struct sockaddr*>(&peeraddr),
|
||||
reinterpret_cast<socklen_t*>(&peernamelen));
|
||||
if (res == 0)
|
||||
peername += string(inet_ntoa(peeraddr.sin_addr));
|
||||
else
|
||||
peername += string(inet_ntoa(addr_in_rep.sin_addr));
|
||||
}
|
||||
}
|
||||
|
||||
ECA_LOG_MSG(ECA_LOGGER::info,
|
||||
"New connection from " +
|
||||
peername + ".");
|
||||
|
||||
|
||||
if (connfd >= 0) {
|
||||
NETECI_DEBUG(cerr << "incoming connection accepted" << endl);
|
||||
struct ecasound_neteci_server_client* client = new struct ecasound_neteci_server_client; /* add a new client */
|
||||
client->fd = connfd;
|
||||
client->buffer_length = ECA_NETECI_START_BUFFER_SIZE;
|
||||
client->buffer = new char [client->buffer_length];
|
||||
client->buffer_current_ptr = 0;
|
||||
client->peername = peername;
|
||||
clients_rep.push_back(client);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle incoming messages for client 'client'.
|
||||
*/
|
||||
void ECA_NETECI_SERVER::handle_client_messages(struct ecasound_neteci_server_client* client)
|
||||
{
|
||||
char* buf[128];
|
||||
int connfd = client->fd;
|
||||
|
||||
NETECI_DEBUG(cerr << "handle_client_messages for fd "
|
||||
<< connfd << endl);
|
||||
|
||||
ssize_t c = kvu_fd_read(connfd, buf, 128, 5000);
|
||||
if (c > 0) {
|
||||
parse_raw_incoming_data(reinterpret_cast<char*>(buf), c, client);
|
||||
while(parsed_cmd_queue_rep.size() > 0) {
|
||||
const string& nextcmd = parsed_cmd_queue_rep.front();
|
||||
if (nextcmd == "quit" || nextcmd == "q") {
|
||||
NETECI_DEBUG(cerr << "client initiated quit, removing client-fd " << connfd << "." << endl);
|
||||
remove_client(client);
|
||||
}
|
||||
else {
|
||||
handle_eci_command(nextcmd, client);
|
||||
}
|
||||
parsed_cmd_queue_rep.pop_front();
|
||||
}
|
||||
/* ... */
|
||||
}
|
||||
else {
|
||||
/* read() <= 0 */
|
||||
NETECI_DEBUG(cerr << "read error, removing client-fd " << connfd << "." << endl);
|
||||
remove_client(client);
|
||||
}
|
||||
}
|
||||
|
||||
void ECA_NETECI_SERVER::parse_raw_incoming_data(const char* buffer,
|
||||
ssize_t bytes,
|
||||
struct ecasound_neteci_server_client* client)
|
||||
{
|
||||
DBC_REQUIRE(buffer != 0);
|
||||
DBC_REQUIRE(bytes >= 0);
|
||||
DBC_REQUIRE(client != 0);
|
||||
DBC_DECLARE(int old_client_ptr = client->buffer_current_ptr);
|
||||
DBC_DECLARE(unsigned int old_cmd_queue_size = parsed_cmd_queue_rep.size());
|
||||
|
||||
NETECI_DEBUG(cerr << "parse incoming data; "
|
||||
<< bytes << " bytes. Buffer length is "
|
||||
<< client->buffer_length << endl);
|
||||
|
||||
for(int n = 0; n < bytes; n++) {
|
||||
DBC_CHECK(client->buffer_current_ptr <= client->buffer_length);
|
||||
if (client->buffer_current_ptr == client->buffer_length) {
|
||||
int new_buffer_length = client->buffer_length * 2;
|
||||
char *new_buffer = new char [new_buffer_length];
|
||||
|
||||
if (new_buffer_length > ECA_NETECI_MAX_BUFFER_SIZE) {
|
||||
cerr << "client buffer overflow, unable to increase buffer size. flushing..." << endl;
|
||||
client->buffer_current_ptr = 0;
|
||||
}
|
||||
else {
|
||||
NETECI_DEBUG(cerr << "client buffer overflow, increasing buffer size from "
|
||||
<< client->buffer_length << " to " << new_buffer_length << " bytes." << endl);
|
||||
|
||||
for(int i = 0; i < client->buffer_length; i++) new_buffer[i] = client->buffer[i];
|
||||
|
||||
delete[] client->buffer;
|
||||
client->buffer = new_buffer;
|
||||
client->buffer_length = new_buffer_length;
|
||||
}
|
||||
}
|
||||
|
||||
NETECI_DEBUG(cerr << "copying '" << buffer[n] << "'\n");
|
||||
client->buffer[client->buffer_current_ptr] = buffer[n];
|
||||
if (client->buffer_current_ptr > 0 &&
|
||||
client->buffer[client->buffer_current_ptr] == '\n' &&
|
||||
client->buffer[client->buffer_current_ptr - 1] == '\r') {
|
||||
|
||||
string cmd (client->buffer, client->buffer_current_ptr - 1);
|
||||
NETECI_DEBUG(cerr << "storing command '" << cmd << "'" << endl);
|
||||
parsed_cmd_queue_rep.push_back(cmd);
|
||||
|
||||
NETECI_DEBUG(cerr << "copying "
|
||||
<< client->buffer_length - client->buffer_current_ptr - 1
|
||||
<< " bytes from " << client->buffer_current_ptr + 1
|
||||
<< " to the beginning of the buffer."
|
||||
<< " Index is " << client->buffer_current_ptr << endl);
|
||||
|
||||
DBC_CHECK(client->buffer_current_ptr < client->buffer_length);
|
||||
|
||||
#if 0
|
||||
/* must not use memcpy() as the
|
||||
affected areas may overlap! */
|
||||
for(int o = 0, p = index + 1;
|
||||
p < client->buffer_length; o++, p++) {
|
||||
client->buffer[o] = client->buffer[p];
|
||||
}
|
||||
#endif
|
||||
client->buffer_current_ptr = 0;
|
||||
}
|
||||
else {
|
||||
// NETECI_DEBUG(cerr << "crlf not found, index=" << index << ", n=" << n << "cur_ptr=" << client->buffer_current_ptr << ".\n");
|
||||
client->buffer_current_ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
DBC_ENSURE(client->buffer_current_ptr > old_client_ptr ||
|
||||
parsed_cmd_queue_rep.size() > old_cmd_queue_size);
|
||||
}
|
||||
|
||||
void ECA_NETECI_SERVER::handle_eci_command(const string& cmd, struct ecasound_neteci_server_client* client)
|
||||
{
|
||||
ECA_CONTROL_MT* ctrl = state_repp->control;
|
||||
|
||||
NETECI_DEBUG(cerr << "handle eci command: " << cmd << endl);
|
||||
|
||||
assert(ctrl != 0);
|
||||
|
||||
struct eci_return_value retval;
|
||||
ctrl->command(cmd, &retval);
|
||||
|
||||
string strtosend =
|
||||
ECA_LOGGER_WELLFORMED::create_wellformed_message(ECA_LOGGER::eiam_return_values,
|
||||
std::string(ECA_CONTROL_MAIN::return_value_type_to_string(&retval))
|
||||
+ " " +
|
||||
ECA_CONTROL_MAIN::return_value_to_string(&retval));
|
||||
|
||||
int bytes_to_send = strtosend.size();
|
||||
while(bytes_to_send > 0) {
|
||||
int ret = kvu_fd_write(client->fd, strtosend.c_str(), strtosend.size(), 5000);
|
||||
if (ret < 0) {
|
||||
cerr << "error in kvu_fd_write(), removing client.\n";
|
||||
remove_client(client);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
bytes_to_send -= ret;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes 'client' from list of clients.
|
||||
*
|
||||
* Note! Internally, the 'fd' field of the deleted client
|
||||
* is marked to be -1.
|
||||
*
|
||||
* @see clean_removed_clients()
|
||||
*/
|
||||
void ECA_NETECI_SERVER::remove_client(struct ecasound_neteci_server_client* client)
|
||||
{
|
||||
NETECI_DEBUG(std::cout << "removing client." << std::endl);
|
||||
|
||||
if (client != 0 && client->fd > 0) {
|
||||
ECA_LOG_MSG(ECA_LOGGER::info,
|
||||
"Closing connection " +
|
||||
client->peername + ".");
|
||||
close(client->fd);
|
||||
client->fd = -1;
|
||||
}
|
||||
|
||||
cleanup_request_rep = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cleans the list of clients from removed objects.
|
||||
*
|
||||
* @see remove_client()
|
||||
*/
|
||||
void ECA_NETECI_SERVER::clean_removed_clients(void)
|
||||
{
|
||||
DBC_DECLARE(size_t oldsize = clients_rep.size());
|
||||
DBC_DECLARE(size_t counter = 0);
|
||||
|
||||
NETECI_DEBUG(std::cerr << "cleaning removed clients." << std::endl);
|
||||
|
||||
list<struct ecasound_neteci_server_client*>::iterator p = clients_rep.begin();
|
||||
while(p != clients_rep.end()) {
|
||||
NETECI_DEBUG(std::cerr << "checking for delete, client " << *p << std::endl);
|
||||
if (*p != 0 && (*p)->fd == -1) {
|
||||
if ((*p)->buffer != 0) {
|
||||
delete[] (*p)->buffer;
|
||||
(*p)->buffer = 0;
|
||||
}
|
||||
std::list<struct ecasound_neteci_server_client*>::iterator q = p;
|
||||
++q;
|
||||
NETECI_DEBUG(std::cerr << "deleting client " << *p << std::endl);
|
||||
delete *p;
|
||||
NETECI_DEBUG(std::cerr << "erasing client " << *p << std::endl);
|
||||
*p = 0;
|
||||
clients_rep.erase(p);
|
||||
p = q;
|
||||
DBC_DECLARE(++counter);
|
||||
}
|
||||
else {
|
||||
++p;
|
||||
}
|
||||
}
|
||||
|
||||
cleanup_request_rep = false;
|
||||
|
||||
DBC_ENSURE(clients_rep.size() == oldsize - counter);
|
||||
}
|
|
@ -0,0 +1,78 @@
|
|||
#ifndef INCLUDED_ECA_NETECI_SERVER_H
|
||||
#define INCLUDED_ECA_NETECI_SERVER_H
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
||||
#include <sys/socket.h> /* Generic socket definitions */
|
||||
#include <sys/un.h> /* UNIX socket definitions */
|
||||
#include <netinet/in.h> /* IP socket definitions */
|
||||
|
||||
struct ecasound_state;
|
||||
class ECASOUND_RUN_STATE;
|
||||
|
||||
struct ecasound_neteci_server_client {
|
||||
std::string peername;
|
||||
char* buffer;
|
||||
int fd;
|
||||
int buffer_current_ptr;
|
||||
int buffer_length;
|
||||
};
|
||||
|
||||
/**
|
||||
* NetECI server implementation.
|
||||
*
|
||||
* @author Kai Vehmanen
|
||||
*/
|
||||
class ECA_NETECI_SERVER {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
ECA_NETECI_SERVER(ECASOUND_RUN_STATE* state);
|
||||
|
||||
/**
|
||||
* Virtual destructor.
|
||||
*/
|
||||
~ECA_NETECI_SERVER(void);
|
||||
|
||||
static void* launch_server_thread(void* arg);
|
||||
|
||||
private:
|
||||
|
||||
void run(void);
|
||||
|
||||
void create_server_socket(void);
|
||||
void open_server_socket(void);
|
||||
void close_server_socket(void);
|
||||
void listen_for_events(void);
|
||||
void check_for_events(int timeout);
|
||||
void handle_connection(int fd);
|
||||
void handle_client_messages(struct ecasound_neteci_server_client* client);
|
||||
void handle_eci_command(const std::string& cmd, struct ecasound_neteci_server_client* client);
|
||||
void parse_raw_incoming_data(const char* buffer,
|
||||
ssize_t bytes,
|
||||
struct ecasound_neteci_server_client* client);
|
||||
void remove_client(struct ecasound_neteci_server_client* client);
|
||||
void clean_removed_clients(void);
|
||||
|
||||
struct sockaddr_un addr_un_rep;
|
||||
struct sockaddr_in addr_in_rep;
|
||||
struct sockaddr* addr_repp;
|
||||
ECASOUND_RUN_STATE* state_repp;
|
||||
|
||||
std::list<struct ecasound_neteci_server_client*> clients_rep;
|
||||
/* FIXME: turn into a buffer of pointers to allow ptr-fields */
|
||||
std::list<std::string> parsed_cmd_queue_rep;
|
||||
std::string socketpath_rep;
|
||||
|
||||
int srvfd_rep;
|
||||
bool server_listening_rep;
|
||||
bool unix_sockets_rep;
|
||||
bool cleanup_request_rep;
|
||||
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_ECA_NETECI_SERVER_H */
|
|
@ -0,0 +1,81 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// eca-plaintext.cpp: Plaintext implementation of the console user
|
||||
// interface.
|
||||
// Copyright (C) 2002-2004 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 2
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include <eca-version.h>
|
||||
|
||||
#include "ecasound.h"
|
||||
#include "eca-plaintext.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
ECA_PLAIN_TEXT::ECA_PLAIN_TEXT(std::ostream* ostr)
|
||||
{
|
||||
ostream_repp = ostr;
|
||||
}
|
||||
|
||||
ECA_PLAIN_TEXT::~ECA_PLAIN_TEXT(void)
|
||||
{
|
||||
}
|
||||
|
||||
void ECA_PLAIN_TEXT::print(const std::string& msg)
|
||||
{
|
||||
*ostream_repp << msg << endl;
|
||||
}
|
||||
|
||||
void ECA_PLAIN_TEXT::print_banner(void)
|
||||
{
|
||||
*ostream_repp << ECASOUND_BANNER_ASTERISK_BAR;
|
||||
*ostream_repp << "*";
|
||||
*ostream_repp << " ecasound v"
|
||||
<< ecasound_library_version
|
||||
<< ECASOUND_COPYRIGHT;
|
||||
*ostream_repp << "\n";
|
||||
*ostream_repp << ECASOUND_BANNER_ASTERISK_BAR;
|
||||
}
|
||||
|
||||
void ECA_PLAIN_TEXT::read_command(const string& prompt)
|
||||
{
|
||||
if (ostream_repp->good() == true) {
|
||||
*ostream_repp << prompt;
|
||||
ostream_repp->flush();
|
||||
if (cin.good() == true) {
|
||||
getline(cin, last_cmd_rep);
|
||||
}
|
||||
else {
|
||||
last_cmd_rep = "q";
|
||||
}
|
||||
}
|
||||
else {
|
||||
last_cmd_rep = "q";
|
||||
}
|
||||
}
|
||||
|
||||
const string& ECA_PLAIN_TEXT::last_command(void) const
|
||||
{
|
||||
return last_cmd_rep;
|
||||
}
|
|
@ -0,0 +1,57 @@
|
|||
#ifndef INCLUDED_ECA_PLAINTEXT_H
|
||||
#define INCLUDED_ECA_PLAINTEXT_H
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include <string>
|
||||
#include "eca-console.h"
|
||||
|
||||
/**
|
||||
* Plain text interface for the console
|
||||
* mode ecasound.
|
||||
*
|
||||
* @author Kai Vehmanen
|
||||
*/
|
||||
class ECA_PLAIN_TEXT : public ECA_CONSOLE {
|
||||
|
||||
public:
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*/
|
||||
ECA_PLAIN_TEXT(std::ostream* ostr);
|
||||
|
||||
/**
|
||||
* Virtual destructor.
|
||||
*/
|
||||
virtual ~ECA_PLAIN_TEXT(void);
|
||||
|
||||
/**
|
||||
* Prints the text string 'msg'.
|
||||
*/
|
||||
virtual void print(const std::string& msg);
|
||||
|
||||
/**
|
||||
* Prints the ecasound banner.
|
||||
*/
|
||||
virtual void print_banner(void);
|
||||
|
||||
/**
|
||||
* Reads the next user command.
|
||||
*
|
||||
* @see last_command()
|
||||
*/
|
||||
virtual void read_command(const std::string& prompt);
|
||||
|
||||
/**
|
||||
* Returns the last read user command.
|
||||
*/
|
||||
virtual const std::string& last_command(void) const;
|
||||
|
||||
private:
|
||||
|
||||
std::string last_cmd_rep;
|
||||
std::ostream* ostream_repp;
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_ECA_PLAIN_TEXT_H */
|
|
@ -0,0 +1,925 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecasound.cpp: Console mode user interface to ecasound.
|
||||
// Copyright (C) 2002-2010 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 3 (see Ecasound Programmer's Guide)
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <cstdio>
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <signal.h> /* POSIX: various signal functions */
|
||||
#include <unistd.h> /* POSIX: sleep() */
|
||||
|
||||
#include <kvu_dbc.h>
|
||||
#include <kvu_com_line.h>
|
||||
#include <kvu_utils.h>
|
||||
|
||||
#include <eca-control-main.h>
|
||||
#include <eca-control-mt.h>
|
||||
#include <eca-error.h>
|
||||
#include <eca-logger.h>
|
||||
#include <eca-logger-default.h>
|
||||
#include <eca-session.h>
|
||||
#include <eca-version.h>
|
||||
|
||||
#ifdef ECA_USE_LIBLO
|
||||
#include <eca-osc.h>
|
||||
#endif
|
||||
|
||||
#include "eca-comhelp.h"
|
||||
#include "eca-console.h"
|
||||
#include "eca-curses.h"
|
||||
#include "eca-neteci-server.h"
|
||||
#include "eca-plaintext.h"
|
||||
#include "textdebug.h"
|
||||
#include "ecasound.h"
|
||||
|
||||
/**
|
||||
* Check build time reqs
|
||||
*/
|
||||
#undef SIGNALS_CAN_BE_BLOCKED
|
||||
#if defined(HAVE_SIGWAIT)
|
||||
# if defined(HAVE_SIGPROCMASK) || defined(HAVE_PTHREAD_SIGMASK)
|
||||
# define SIGNALS_CAN_BE_BLOCKED
|
||||
# else
|
||||
# error "Either pthread_sigmask() or sigprocmask() needs to be supported."
|
||||
# error "One option to try is to undefine HAVE_SIGWAIT and retry compilation "
|
||||
# error "with plain pause() support."
|
||||
# endif
|
||||
#elif defined(HAVE_PAUSE)
|
||||
/* no op*/
|
||||
#else
|
||||
# error ""
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Static/private function definitions
|
||||
*/
|
||||
|
||||
static void ecasound_create_eca_objects(ECASOUND_RUN_STATE* state, COMMAND_LINE& cline);
|
||||
static void ecasound_launch_neteci(ECASOUND_RUN_STATE* state);
|
||||
static void ecasound_launch_osc(ECASOUND_RUN_STATE* state);
|
||||
static int ecasound_pass_at_launch_commands(ECASOUND_RUN_STATE* state);
|
||||
static void ecasound_main_loop_interactive(ECASOUND_RUN_STATE* state);
|
||||
static void ecasound_main_loop_batch(ECASOUND_RUN_STATE* state);
|
||||
void ecasound_parse_command_line(ECASOUND_RUN_STATE* state,
|
||||
const COMMAND_LINE& clinein,
|
||||
COMMAND_LINE* clineout);
|
||||
static void ecasound_print_usage(void);
|
||||
static void ecasound_print_version_banner(void);
|
||||
static void ecasound_signal_setup(ECASOUND_RUN_STATE* state);
|
||||
static void ecasound_signal_unblock(ECASOUND_RUN_STATE* state);
|
||||
|
||||
extern "C" {
|
||||
static void* ecasound_watchdog_thread(void* arg);
|
||||
static void ecasound_signal_handler(int signal);
|
||||
}
|
||||
|
||||
/* Define to get exit debug traces */
|
||||
// #define ENABLE_ECASOUND_EXIT_PROCESS_TRACES 1
|
||||
|
||||
/* Exit process has not yet started. */
|
||||
#define ECASOUND_EXIT_PHASE_NONE 0
|
||||
|
||||
/* Termination will block until signal watchdog thread
|
||||
* has exited. */
|
||||
#define ECASOUND_EXIT_PHASE_WAIT_FOR_WD 1
|
||||
|
||||
/* Watchdog has terminated, only a single thread
|
||||
* is left running. */
|
||||
#define ECASOUND_EXIT_PHASE_ONE_THREAD 2
|
||||
|
||||
/* All resources freed, about to return from main(). */
|
||||
#define ECASOUND_EXIT_PHASE_DONE 3
|
||||
|
||||
/**
|
||||
* Global variable that is set to one of 'ECASOUND_EXIT_PHASE_*'
|
||||
*
|
||||
* When ecasound's main()
|
||||
* function is about to exit (all engine threads have
|
||||
* been terminated and only single thread aside the
|
||||
* watchdog is left, and to '2' when all running state
|
||||
* has been clearer in ~ECASOUND_RUN_STATE().
|
||||
*/
|
||||
static sig_atomic_t glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_NONE;
|
||||
|
||||
/* Global variable that is set to one, when common
|
||||
* POSIX signals are blocked and watchdog thread is
|
||||
* blocking on a call to pthread_sigmask(), sigprocmask(),
|
||||
* or pause(). */
|
||||
static sig_atomic_t glovar_wd_signals_blocked = 0;
|
||||
|
||||
/* Global variable counting how many SIGINT signals
|
||||
* have been ignored. */
|
||||
static sig_atomic_t glovar_soft_signals_ignored = 0;
|
||||
|
||||
/* Debuggin macros, see ENABLE_ECASOUND_EXIT_PROCESS_TRACES
|
||||
* above */
|
||||
#ifdef ENABLE_ECASOUND_EXIT_PROCESS_TRACES
|
||||
#define TRACE_EXIT(x) do { x; } while(0)
|
||||
#else
|
||||
#define TRACE_EXIT(x) while(0) { x; }
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Namespace imports
|
||||
*/
|
||||
using namespace std;
|
||||
|
||||
ECASOUND_RUN_STATE::ECASOUND_RUN_STATE(void)
|
||||
: console(0),
|
||||
control(0),
|
||||
logger(0),
|
||||
eciserver(0),
|
||||
osc(0),
|
||||
session(0),
|
||||
launchcmds(0),
|
||||
neteci_thread(0),
|
||||
watchdog_thread(0),
|
||||
lock(0),
|
||||
exit_request(0),
|
||||
signalset(0),
|
||||
retval(ECASOUND_RETVAL_SUCCESS),
|
||||
neteci_mode(false),
|
||||
neteci_tcp_port(2868),
|
||||
osc_mode(false),
|
||||
osc_udp_port(-1),
|
||||
keep_running_mode(false),
|
||||
cerr_output_only_mode(false),
|
||||
interactive_mode(false),
|
||||
quiet_mode(false)
|
||||
{
|
||||
}
|
||||
|
||||
ECASOUND_RUN_STATE::~ECASOUND_RUN_STATE(void)
|
||||
{
|
||||
/* note: global variable */
|
||||
DBC_CHECK(glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_ONE_THREAD);
|
||||
|
||||
if (control != 0) { delete control; control = 0; }
|
||||
if (session != 0) { delete session; session = 0; }
|
||||
|
||||
if (launchcmds != 0) { delete launchcmds; launchcmds = 0; }
|
||||
if (eciserver != 0) { delete eciserver; eciserver = 0; }
|
||||
#ifdef ECA_USE_LIBLO
|
||||
if (osc != 0) { delete osc; osc = 0; }
|
||||
#endif
|
||||
if (console != 0) { delete console; console = 0; }
|
||||
if (neteci_thread != 0) { delete neteci_thread; neteci_thread = 0; }
|
||||
if (watchdog_thread != 0) { delete watchdog_thread; watchdog_thread = 0; }
|
||||
if (lock != 0) { delete lock; lock = 0; }
|
||||
if (signalset != 0) { delete signalset; signalset = 0; }
|
||||
|
||||
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_DONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Function definitions
|
||||
*/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
ECASOUND_RUN_STATE state;
|
||||
bool have_curses =
|
||||
#if defined(ECA_PLATFORM_CURSES)
|
||||
true
|
||||
#else
|
||||
false
|
||||
#endif
|
||||
;
|
||||
|
||||
/* 1. setup signals and the signal watchdog thread */
|
||||
ecasound_signal_setup(&state);
|
||||
|
||||
/* 2. parse command-line args */
|
||||
COMMAND_LINE* cline = new COMMAND_LINE(argc, argv);
|
||||
COMMAND_LINE* clineout = new COMMAND_LINE();
|
||||
ecasound_parse_command_line(&state, *cline, clineout);
|
||||
delete cline; cline = 0;
|
||||
|
||||
/* 3. create console interface */
|
||||
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
|
||||
|
||||
if (have_curses == true &&
|
||||
state.quiet_mode != true &&
|
||||
state.cerr_output_only_mode != true) {
|
||||
state.console = new ECA_CURSES();
|
||||
state.logger = new TEXTDEBUG();
|
||||
}
|
||||
else {
|
||||
ostream* ostr = (state.cerr_output_only_mode == true) ? &cerr : &cout;
|
||||
state.console = new ECA_PLAIN_TEXT(ostr);
|
||||
state.logger = new ECA_LOGGER_DEFAULT(*ostr);
|
||||
}
|
||||
ECA_LOGGER::attach_logger(state.logger);
|
||||
|
||||
if (state.quiet_mode != true) {
|
||||
/* 4. print banner */
|
||||
state.console->print_banner();
|
||||
}
|
||||
|
||||
/* 5. set default debug levels */
|
||||
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::errors, true);
|
||||
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::info, true);
|
||||
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::subsystems, true);
|
||||
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::eiam_return_values, true);
|
||||
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::module_names, true);
|
||||
|
||||
/* 6. create eca objects */
|
||||
ecasound_create_eca_objects(&state, *clineout);
|
||||
delete clineout; clineout = 0;
|
||||
|
||||
/* 7. enable remote control over socket connection */
|
||||
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
|
||||
/* 7.a) ... ECI over socket connection */
|
||||
if (state.neteci_mode == true) {
|
||||
ecasound_launch_neteci(&state);
|
||||
}
|
||||
/* 7.b) ... over OSC */
|
||||
if (state.osc_mode == true) {
|
||||
ecasound_launch_osc(&state);
|
||||
}
|
||||
}
|
||||
|
||||
/* 8. pass launch commands */
|
||||
ecasound_pass_at_launch_commands(&state);
|
||||
|
||||
/* 9. start processing */
|
||||
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
|
||||
if (state.interactive_mode == true)
|
||||
ecasound_main_loop_interactive(&state);
|
||||
else
|
||||
ecasound_main_loop_batch(&state);
|
||||
}
|
||||
}
|
||||
|
||||
TRACE_EXIT(cerr << endl << "ecasound: out of mainloop..." << endl);
|
||||
|
||||
/* step: terminate neteci thread */
|
||||
if (state.neteci_mode == true) {
|
||||
/* wait until the NetECI thread has exited */
|
||||
state.exit_request = 1;
|
||||
if (state.neteci_thread)
|
||||
pthread_join(*state.neteci_thread, NULL);
|
||||
}
|
||||
|
||||
/* step: terminate the engine thread */
|
||||
if (state.control != 0) {
|
||||
if (state.control->is_running() == true) {
|
||||
state.control->stop_on_condition();
|
||||
}
|
||||
if (state.control->is_connected() == true) {
|
||||
state.control->disconnect_chainsetup();
|
||||
}
|
||||
}
|
||||
|
||||
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_WAIT_FOR_WD;
|
||||
|
||||
TRACE_EXIT(cerr << endl << "ecasound: joining watchdog..." << endl);
|
||||
|
||||
/* step: Send a signal to the watchdog thread to wake it uP */
|
||||
pthread_kill(*state.watchdog_thread, SIGHUP);
|
||||
|
||||
/* step: Unblock signals for the main thread as well. At this
|
||||
* point the engine threads have been already terminated,
|
||||
* so we don't have to anymore worry about which thread
|
||||
* gets the signals. */
|
||||
ecasound_signal_unblock(&state);
|
||||
|
||||
pthread_join(*state.watchdog_thread, NULL);
|
||||
|
||||
TRACE_EXIT(cerr << endl << "ecasound: joined watchdog..." << endl);
|
||||
|
||||
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_ONE_THREAD;
|
||||
|
||||
DBC_CHECK(state.retval == ECASOUND_RETVAL_SUCCESS ||
|
||||
state.retval == ECASOUND_RETVAL_INIT_FAILURE ||
|
||||
state.retval == ECASOUND_RETVAL_START_ERROR ||
|
||||
state.retval == ECASOUND_RETVAL_RUNTIME_ERROR);
|
||||
|
||||
TRACE_EXIT(cerr << endl << "ecasound: main() exiting with code " << state.retval << endl);
|
||||
|
||||
return state.retval;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enters the main processing loop.
|
||||
*/
|
||||
void ecasound_create_eca_objects(ECASOUND_RUN_STATE* state,
|
||||
COMMAND_LINE& cline)
|
||||
{
|
||||
DBC_REQUIRE(state != 0);
|
||||
DBC_REQUIRE(state->console != 0);
|
||||
|
||||
try {
|
||||
state->session = new ECA_SESSION(cline);
|
||||
state->control = new ECA_CONTROL_MT(state->session);
|
||||
|
||||
DBC_ENSURE(state->session != 0);
|
||||
DBC_ENSURE(state->control != 0);
|
||||
}
|
||||
catch(ECA_ERROR& e) {
|
||||
state->console->print("---\necasound: ERROR: [" + e.error_section() + "] : \"" + e.error_message() + "\"\n");
|
||||
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Launches a background thread that allows NetECI
|
||||
* clients to connect to the current ecasound
|
||||
* session.
|
||||
*/
|
||||
void ecasound_launch_neteci(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
DBC_REQUIRE(state != 0);
|
||||
// DBC_REQUIRE(state->console != 0);
|
||||
|
||||
// state->console->print("ecasound: starting the NetECI server.");
|
||||
|
||||
state->neteci_thread = new pthread_t;
|
||||
state->lock = new pthread_mutex_t;
|
||||
pthread_mutex_init(state->lock, NULL);
|
||||
state->eciserver = new ECA_NETECI_SERVER(state);
|
||||
|
||||
int res = pthread_create(state->neteci_thread,
|
||||
NULL,
|
||||
ECA_NETECI_SERVER::launch_server_thread,
|
||||
reinterpret_cast<void*>(state->eciserver));
|
||||
if (res != 0) {
|
||||
cerr << "ecasound: Warning! Unable to create a thread for control over socket connection (NetECI)." << endl;
|
||||
delete state->neteci_thread; state->neteci_thread = 0;
|
||||
delete state->lock; state->lock = 0;
|
||||
delete state->eciserver; state->eciserver = 0;
|
||||
}
|
||||
|
||||
// state->console->print("ecasound: NetECI server started");
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up and activates Ecasound OSC interface
|
||||
*/
|
||||
void ecasound_launch_osc(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
#ifdef ECA_USE_LIBLO
|
||||
DBC_REQUIRE(state != 0);
|
||||
state->osc = new ECA_OSC_INTERFACE (state->control, state->osc_udp_port);
|
||||
if (state->osc)
|
||||
state->osc->start();
|
||||
#endif
|
||||
}
|
||||
|
||||
static int ecasound_pass_at_launch_commands(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
if (state->launchcmds) {
|
||||
std::vector<std::string>::const_iterator p = state->launchcmds->begin();
|
||||
|
||||
while(p != state->launchcmds->end()) {
|
||||
struct eci_return_value retval;
|
||||
state->control->command(*p, &retval);
|
||||
state->control->print_last_value(&retval);
|
||||
++p;
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void ecasound_check_for_quit(ECASOUND_RUN_STATE* state, const string& cmd)
|
||||
{
|
||||
if (cmd == "quit" || cmd == "q") {
|
||||
state->console->print("---\necasound: Exiting...");
|
||||
state->exit_request = 1;
|
||||
ECA_LOGGER::instance().flush();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The main processing loop for interactive use.
|
||||
*/
|
||||
void ecasound_main_loop_interactive(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
DBC_REQUIRE(state != 0);
|
||||
DBC_REQUIRE(state->console != 0);
|
||||
|
||||
ECA_CONTROL_MAIN* ctrl = state->control;
|
||||
|
||||
while(state->exit_request == 0) {
|
||||
state->console->read_command("ecasound ('h' for help)> ");
|
||||
const string& cmd = state->console->last_command();
|
||||
if (cmd.size() > 0 && state->exit_request == 0) {
|
||||
|
||||
struct eci_return_value retval;
|
||||
ctrl->command(cmd, &retval);
|
||||
ctrl->print_last_value(&retval);
|
||||
|
||||
ecasound_check_for_quit(state, cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* The main processing loop for noninteractive use.
|
||||
*/
|
||||
void ecasound_main_loop_batch(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
DBC_REQUIRE(state != 0);
|
||||
DBC_REQUIRE(state->console != 0);
|
||||
|
||||
ECA_CONTROL_MAIN* ctrl = state->control;
|
||||
|
||||
struct eci_return_value connect_retval;
|
||||
|
||||
if (ctrl->is_selected() == true &&
|
||||
ctrl->is_valid() == true) {
|
||||
ctrl->connect_chainsetup(&connect_retval);
|
||||
}
|
||||
|
||||
if (state->neteci_mode != true &&
|
||||
state->osc_mode != true) {
|
||||
|
||||
/* case: 2.1: non-interactive, neither NetECI or OSC is used,
|
||||
* so this thread can use 'ctrl' exclusively */
|
||||
|
||||
if (ctrl->is_connected() == true) {
|
||||
if (!state->exit_request) {
|
||||
int res = ctrl->run(!state->keep_running_mode);
|
||||
if (res < 0) {
|
||||
state->retval = ECASOUND_RETVAL_RUNTIME_ERROR;
|
||||
cerr << "ecasound: Warning! Errors detected during processing." << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
ctrl->print_last_value(&connect_retval);
|
||||
state->retval = ECASOUND_RETVAL_START_ERROR;
|
||||
}
|
||||
}
|
||||
else {
|
||||
|
||||
/* case: 2.2: non-interactive, NetECI active
|
||||
*
|
||||
* (special handling is needed as NetECI needs
|
||||
* to submit atomic bundles of ECI commands and thus
|
||||
* needs to be able to lock the ECA_CONTROL object
|
||||
* for itself) */
|
||||
|
||||
int res = -1;
|
||||
|
||||
if (ctrl->is_connected() == true) {
|
||||
res = ctrl->start();
|
||||
}
|
||||
|
||||
/* note: if keep_running_mode is enabled, we do not
|
||||
* exit even if there are errors during startup */
|
||||
if (state->keep_running_mode != true &&
|
||||
res < 0) {
|
||||
state->retval = ECASOUND_RETVAL_START_ERROR;
|
||||
state->exit_request = 1;
|
||||
}
|
||||
|
||||
while(state->exit_request == 0) {
|
||||
|
||||
if (state->keep_running_mode != true &&
|
||||
ctrl->is_finished() == true)
|
||||
break;
|
||||
|
||||
/* note: sleep for one second and let the NetECI thread
|
||||
* access the ECA_CONTROL object for a while */
|
||||
kvu_sleep(1, 0);
|
||||
}
|
||||
|
||||
ecasound_check_for_quit(state, "quit");
|
||||
}
|
||||
// cerr << endl << "ecasound: mainloop exiting..." << endl;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses the command lines options in 'cline'.
|
||||
*/
|
||||
void ecasound_parse_command_line(ECASOUND_RUN_STATE* state,
|
||||
const COMMAND_LINE& cline,
|
||||
COMMAND_LINE* clineout)
|
||||
{
|
||||
if (cline.size() < 2) {
|
||||
ecasound_print_usage();
|
||||
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
|
||||
}
|
||||
else {
|
||||
cline.begin();
|
||||
while(cline.end() != true) {
|
||||
|
||||
if (cline.current() == "-o:stdout" ||
|
||||
cline.current() == "stdout") {
|
||||
state->cerr_output_only_mode = true;
|
||||
/* pass option to libecasound */
|
||||
clineout->push_back(cline.current());
|
||||
}
|
||||
|
||||
else if (cline.current() == "-d:0" ||
|
||||
cline.current() == "-q") {
|
||||
state->quiet_mode = true;
|
||||
/* pass option to libecasound */
|
||||
clineout->push_back(cline.current());
|
||||
}
|
||||
|
||||
else if (cline.current() == "-c") {
|
||||
state->interactive_mode = true;
|
||||
}
|
||||
|
||||
else if (cline.current() == "-C") {
|
||||
state->interactive_mode = false;
|
||||
}
|
||||
|
||||
else if (cline.current() == "-D") {
|
||||
state->cerr_output_only_mode = true;
|
||||
}
|
||||
|
||||
else if (cline.current() == "--server" ||
|
||||
cline.current() == "--daemon") {
|
||||
/* note: --daemon* deprecated as of 2.6.0 */
|
||||
state->neteci_mode = true;
|
||||
}
|
||||
|
||||
else if (cline.current().compare(0, 2, "-E") == 0) {
|
||||
cline.next();
|
||||
if (cline.end() != true) {
|
||||
state->launchcmds =
|
||||
new std::vector<std::string>
|
||||
(kvu_string_to_vector(cline.current(), ';'));
|
||||
}
|
||||
}
|
||||
|
||||
else if (cline.current().find("--server-tcp-port") != string::npos ||
|
||||
cline.current().find("--daemon-port") != string::npos) {
|
||||
std::vector<std::string> argpair =
|
||||
kvu_string_to_vector(cline.current(), '=');
|
||||
if (argpair.size() > 1) {
|
||||
/* --server-tcp-port=XXXX */
|
||||
/* note: --daemon* deprecated as of 2.6.0 */
|
||||
state->neteci_tcp_port = atoi(argpair[1].c_str());
|
||||
}
|
||||
}
|
||||
|
||||
else if (cline.current() == "--no-server" ||
|
||||
cline.current() == "--nodaemon") {
|
||||
/* note: --daemon deprecated as of 2.6.0 */
|
||||
state->neteci_mode = false;
|
||||
}
|
||||
|
||||
else if (cline.current().find("--osc-udp-port") != string::npos) {
|
||||
std::vector<std::string> argpair =
|
||||
kvu_string_to_vector(cline.current(), '=');
|
||||
if (argpair.size() > 1) {
|
||||
/* --osc-udp-port=XXXX */
|
||||
state->osc_udp_port = atoi(argpair[1].c_str());
|
||||
fprintf(stdout,
|
||||
"set UDP port based on %s to %d.\n", cline.current().c_str(), state->osc_udp_port);
|
||||
}
|
||||
#ifdef ECA_USE_LIBLO
|
||||
state->osc_mode = true;
|
||||
#else
|
||||
state->osc_mode = false;
|
||||
cerr << "ERROR: ecasound was built without OSC support" << endl;
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
else if (cline.current() == "-h" ||
|
||||
cline.current() == "--help") {
|
||||
ecasound_print_usage();
|
||||
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
else if (cline.current() == "-K" ||
|
||||
cline.current() == "--keep-running") {
|
||||
state->keep_running_mode = true;
|
||||
}
|
||||
|
||||
else if (cline.current() == "--version") {
|
||||
ecasound_print_version_banner();
|
||||
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
|
||||
break;
|
||||
}
|
||||
|
||||
else {
|
||||
/* pass rest of the options to libecasound */
|
||||
clineout->push_back(cline.current());
|
||||
}
|
||||
|
||||
cline.next();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ecasound_print_usage(void)
|
||||
{
|
||||
cout << ecasound_parameter_help();
|
||||
}
|
||||
|
||||
void ecasound_print_version_banner(void)
|
||||
{
|
||||
cout << "ecasound v" << ecasound_library_version << endl;
|
||||
cout << "Copyright (C) 1997-2010 Kai Vehmanen and others." << endl;
|
||||
cout << "Ecasound comes with ABSOLUTELY NO WARRANTY." << endl;
|
||||
cout << "You may redistribute copies of ecasound under the terms of the GNU" << endl;
|
||||
cout << "General Public License. For more information about these matters, see" << endl;
|
||||
cout << "the file named COPYING." << endl;
|
||||
}
|
||||
|
||||
static void ecasound_signal_handler(int signal)
|
||||
{
|
||||
/* note: If either sigprocmask() or pthread_sigmask()
|
||||
* is available, all relevant signals should be blocked
|
||||
* and this handler should be never called until the final
|
||||
* phase (ECASOUND_EXIT_PHASE_WAIT_FOR_WD) of the process
|
||||
* termination starts.
|
||||
*/
|
||||
|
||||
#if defined(SIGNALS_CAN_BE_BLOCKED)
|
||||
|
||||
if (glovar_wd_signals_blocked) {
|
||||
TRACE_EXIT(cerr << "WARNING: ecasound_signal_handler entered, this should _NOT_ happen!";
|
||||
cerr << " pid=" << getpid() << endl);
|
||||
}
|
||||
|
||||
#else /* !SIGNALS_CAN_BE_BLOCKED */
|
||||
|
||||
{
|
||||
static int ignored = 0;
|
||||
|
||||
TRACE_EXIT(cerr << "ecasound_signal_handler, built with pause(), ignore count "
|
||||
<< ignored << endl);
|
||||
|
||||
/* note: When signal blocking is not possible, ignore
|
||||
* the first two signal (1st is the user sent signal,
|
||||
* and second is the SIGHUP from ecasound main(). If
|
||||
* we receive a third one, only then it's time for
|
||||
* the emergency exit. */
|
||||
|
||||
if (++ignored <= 2) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
TRACE_EXIT(cerr << "Signal "
|
||||
<< signal
|
||||
<< " received in exit phase "
|
||||
<< glovar_ecasound_exit_phase << endl);
|
||||
|
||||
/* note: In ECASOUND_EXIT_PHASE_WAIT_FOR_WD, the main() thread
|
||||
* will send a signal to the watchdog and we need to
|
||||
* ignore this properly (as it's an internally generated
|
||||
* signal, not sent from an external source. */
|
||||
|
||||
if (glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_NONE ||
|
||||
glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_ONE_THREAD ||
|
||||
glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_DONE) {
|
||||
|
||||
if (signal == SIGINT &&
|
||||
glovar_soft_signals_ignored == 0) {
|
||||
cerr << endl
|
||||
<< "NOTICE: SIGINT (ctrl-c) was received while terminating ecasound. If\n"
|
||||
<< " another signal is received, the normal cleanup procedure will\n"
|
||||
<< " be skipped and process will terminate immediately.\n";
|
||||
glovar_soft_signals_ignored = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
/* note: user needs to see this, not using TRACE_EXIT() macro */
|
||||
cerr << endl
|
||||
<< "WARNING: Signal was received while terminating ecasound, so exiting immediately!\n"
|
||||
<< " Normal exit process is skipped, which may have some side-effects\n"
|
||||
<< " (e.g. file header information not updated).\n";
|
||||
|
||||
|
||||
/* step: Make sure the watchdog is woken up (a hack, but it seems
|
||||
* exit() can in some cases be blocked when watchdog is
|
||||
* still in sigwait() at this point. */
|
||||
if (signal != SIGHUP)
|
||||
kill(0, SIGHUP);
|
||||
|
||||
exit(ECASOUND_RETVAL_CLEANUP_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up a signal mask with sigaction() that blocks
|
||||
* all common signals, and then launces a signal watchdog
|
||||
* thread that waits on the blocked signals using
|
||||
* sigwait().
|
||||
*
|
||||
* This design causes all non-fatal termination signals
|
||||
* to be routed through a single thread. This signal watchdog
|
||||
* in turn performs a clean exit upon receiving a signal.
|
||||
* Without this setup, interactions between threads when handling
|
||||
* would be harder to control (especially considering that
|
||||
* ecasound needs to work on various different platforms).
|
||||
*/
|
||||
void ecasound_signal_setup(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
sigset_t* signalset;
|
||||
|
||||
/* man pthread_sigmask:
|
||||
* "...signal actions and signal handlers, as set with
|
||||
* sigaction(2), are shared between all threads"
|
||||
*/
|
||||
|
||||
/* handle the following signals explicitly */
|
||||
signalset = new sigset_t;
|
||||
state->signalset = signalset;
|
||||
sigemptyset(signalset);
|
||||
sigaddset(signalset, SIGTERM);
|
||||
sigaddset(signalset, SIGINT);
|
||||
sigaddset(signalset, SIGHUP);
|
||||
sigaddset(signalset, SIGPIPE);
|
||||
sigaddset(signalset, SIGQUIT);
|
||||
|
||||
/* create a dummy signal handler */
|
||||
struct sigaction blockaction;
|
||||
blockaction.sa_handler = ecasound_signal_handler;
|
||||
sigemptyset(&blockaction.sa_mask);
|
||||
blockaction.sa_flags = 0;
|
||||
|
||||
/* attach the dummy handler to the following signals */
|
||||
sigaction(SIGTERM, &blockaction, 0);
|
||||
sigaction(SIGINT, &blockaction, 0);
|
||||
sigaction(SIGHUP, &blockaction, 0);
|
||||
sigaction(SIGPIPE, &blockaction, 0);
|
||||
sigaction(SIGQUIT, &blockaction, 0);
|
||||
|
||||
#ifdef __FreeBSD__
|
||||
/* ignore signals instead of passing them to our handler */
|
||||
blockaction.sa_handler = SIG_IGN;
|
||||
sigaction(SIGFPE, &blockaction, 0);
|
||||
#endif
|
||||
|
||||
state->watchdog_thread = new pthread_t;
|
||||
int res = pthread_create(state->watchdog_thread,
|
||||
NULL,
|
||||
ecasound_watchdog_thread,
|
||||
reinterpret_cast<void*>(state));
|
||||
if (res != 0) {
|
||||
cerr << "ecasound: Warning! Unable to create watchdog thread." << endl;
|
||||
}
|
||||
|
||||
/* block all signals in 'signalset' (see above) */
|
||||
#if defined(HAVE_PTHREAD_SIGMASK)
|
||||
pthread_sigmask(SIG_BLOCK, signalset, NULL);
|
||||
#elif defined(HAVE_SIGPROCMASK)
|
||||
sigprocmask(SIG_BLOCK, signalset, NULL);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void ecasound_wd_wait_for_signals(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
#ifdef HAVE_SIGWAIT
|
||||
{
|
||||
/********************************************/
|
||||
/* impl 1: sigwait() */
|
||||
/********************************************/
|
||||
|
||||
int signalno = 0;
|
||||
|
||||
# if defined(HAVE_PTHREAD_SIGMASK)
|
||||
pthread_sigmask(SIG_BLOCK, state->signalset, NULL);
|
||||
# elif defined(HAVE_SIGPROCMASK)
|
||||
/* the set of signals must be blocked before entering sigwait() */
|
||||
sigprocmask(SIG_BLOCK, state->signalset, NULL);
|
||||
# else
|
||||
# error "Build environment error."
|
||||
# endif
|
||||
|
||||
/* note: specific to sigwait() logic */
|
||||
glovar_wd_signals_blocked = 1;
|
||||
|
||||
sigwait(state->signalset, &signalno);
|
||||
|
||||
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) Received signal " << signalno << ". Cleaning up and exiting..." << endl);
|
||||
}
|
||||
|
||||
#elif HAVE_PAUSE /* !HAVE_SIGWAIT */
|
||||
|
||||
/**************************************************/
|
||||
/* impl 2: pause() (alternative to sigwait())
|
||||
***************************************************/
|
||||
|
||||
/* note: with pause() we don't set 'glovar_ecasound_signal_blocked' as
|
||||
* it is normal to get signals when watchdog is running */
|
||||
|
||||
pause();
|
||||
|
||||
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) Received signal and returned from pause(). Cleaning up and Exiting..." << endl);
|
||||
|
||||
#else /* !HAVE_SIGWAIT && !HAVE_PAUSE */
|
||||
# error "Build environment error."
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Unblocks signals defined for 'state' for the calling thread,
|
||||
* or with pthread_sigmask() is not supported, for the whole
|
||||
* process.
|
||||
*/
|
||||
static void ecasound_signal_unblock(ECASOUND_RUN_STATE* state)
|
||||
{
|
||||
#ifdef HAVE_SIGWAIT
|
||||
# if defined(HAVE_PTHREAD_SIGMASK)
|
||||
pthread_sigmask(SIG_UNBLOCK, state->signalset, NULL);
|
||||
# elif defined(HAVE_SIGPROCMASK)
|
||||
/* the set of signals must be blocked before entering sigwait() */
|
||||
sigprocmask(SIG_UNBLOCK, state->signalset, NULL);
|
||||
# else
|
||||
# error "Build environment error."
|
||||
# endif
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs a watchdog thread that centrally catches signals that
|
||||
* will cause ecasound to exit.
|
||||
*/
|
||||
void* ecasound_watchdog_thread(void* arg)
|
||||
{
|
||||
ECASOUND_RUN_STATE* state = reinterpret_cast<ECASOUND_RUN_STATE*>(arg);
|
||||
|
||||
/* step: announce we are alive */
|
||||
// cerr << "Watchdog-thread created, pid=" << getpid() << "." << endl;
|
||||
|
||||
/* step: block until a signal is received */
|
||||
ecasound_wd_wait_for_signals(state);
|
||||
|
||||
/* step: unblock signals for watchdog thread after process
|
||||
* termination has been started */
|
||||
ecasound_signal_unblock(state);
|
||||
glovar_wd_signals_blocked = 0;
|
||||
|
||||
/* step: signal the mainloop that process should terminate */
|
||||
state->exit_request = 1;
|
||||
|
||||
/* step: in case mainloop is blocked running a batch job, we signal
|
||||
* the engine thread directly and force it to terminate */
|
||||
if (state->interactive_mode != true &&
|
||||
state->control)
|
||||
state->control->quit_async();
|
||||
|
||||
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) looping until main reaches join point..." << endl);
|
||||
|
||||
while(glovar_ecasound_exit_phase != 1) {
|
||||
|
||||
TRACE_EXIT(cerr << "(ecasound-watchdog) watchdog thread exiting (looping)..." << endl);
|
||||
|
||||
/* sleep for one 200ms */
|
||||
kvu_sleep(0, 200000000);
|
||||
|
||||
/* note: A race condition exists between ECA_CONTROL_BASE
|
||||
* quit_async() and run(): if quit_async() is called
|
||||
* after run() has been entered, but before run()
|
||||
* has managed to start the engine, it is possible engine
|
||||
* may still be started.
|
||||
*
|
||||
* Thus we will keep checking the engine status until
|
||||
* shutdown is really completed.
|
||||
*
|
||||
* For robustness, this check is also done when in
|
||||
* interactive mode (in case the mainloop does not for
|
||||
* some reason react to our exit request).
|
||||
*/
|
||||
if (state->control) {
|
||||
if (state->control->is_engine_running() == true) {
|
||||
state->control->quit_async();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* note: this function should always exit before main() */
|
||||
DBC_CHECK(glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_WAIT_FOR_WD);
|
||||
|
||||
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) thread exiting..." << endl);
|
||||
|
||||
return 0;
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
#ifndef INCLUDED_ECASOUND_H
|
||||
#define INCLUDED_ECASOUND_H
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <pthread.h> /* POSIX: pthread_create() */
|
||||
#include <signal.h> /* POSIX: sigaction(), sigwait(), sig_atomic_t */
|
||||
|
||||
class ECA_CONSOLE;
|
||||
class ECA_CONTROL_MT;
|
||||
class ECA_LOGGER_INTERFACE;
|
||||
class ECA_NETECI_SERVER;
|
||||
class ECA_SESSION;
|
||||
class ECA_OSC_INTERFACE;
|
||||
|
||||
/**
|
||||
* String constants
|
||||
*/
|
||||
|
||||
#define ECASOUND_BANNER_ASTERISK_BAR "********************************************************************************\n"
|
||||
#define ECASOUND_COPYRIGHT " (C) 1997-2010 Kai Vehmanen and others "
|
||||
|
||||
#define ECASOUND_RETVAL_SUCCESS 0 /**< Succesful run */
|
||||
#define ECASOUND_RETVAL_INIT_FAILURE 1 /**< Unable to initialize */
|
||||
#define ECASOUND_RETVAL_START_ERROR 2 /**< Unable to start processing */
|
||||
#define ECASOUND_RETVAL_RUNTIME_ERROR 3 /**< Error during processing */
|
||||
#define ECASOUND_RETVAL_CLEANUP_ERROR 4 /**< Error during cleanup/exit */
|
||||
|
||||
#define ECASOUND_TERM_WIDTH_DEFAULT 74
|
||||
|
||||
/**
|
||||
* Type definitions
|
||||
*/
|
||||
|
||||
/* Note! Check the initialization in ecasound.cpp if
|
||||
* you change the state struct! */
|
||||
|
||||
class ECASOUND_RUN_STATE {
|
||||
public:
|
||||
ECASOUND_RUN_STATE(void);
|
||||
~ECASOUND_RUN_STATE(void);
|
||||
|
||||
ECA_CONSOLE* console;
|
||||
ECA_CONTROL_MT* control;
|
||||
ECA_LOGGER_INTERFACE* logger;
|
||||
ECA_NETECI_SERVER* eciserver;
|
||||
ECA_OSC_INTERFACE* osc;
|
||||
ECA_SESSION* session;
|
||||
std::vector<std::string>* launchcmds;
|
||||
|
||||
pthread_t* neteci_thread;
|
||||
pthread_t* watchdog_thread;
|
||||
pthread_mutex_t* lock;
|
||||
sig_atomic_t exit_request;
|
||||
sigset_t* signalset;
|
||||
|
||||
int retval;
|
||||
|
||||
bool neteci_mode;
|
||||
int neteci_tcp_port;
|
||||
|
||||
bool osc_mode;
|
||||
int osc_udp_port;
|
||||
|
||||
bool keep_running_mode;
|
||||
bool cerr_output_only_mode;
|
||||
bool interactive_mode;
|
||||
bool quiet_mode;
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_ECASOUND_H */
|
|
@ -0,0 +1,222 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// textdebug.cpp: Implementation of console logging subsystem.
|
||||
// Copyright (C) 1999-2002,2004-2005,2008,2009 Kai Vehmanen
|
||||
//
|
||||
// Attributes:
|
||||
// eca-style-version: 2
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <algorithm>
|
||||
|
||||
#include <eca-logger-interface.h>
|
||||
|
||||
#include "ecasound.h"
|
||||
#include "textdebug.h"
|
||||
|
||||
#ifdef ECA_USE_NCURSES_H
|
||||
#include <ncurses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#elif ECA_USE_NCURSES_NCURSES_H
|
||||
#include <ncurses/ncurses.h>
|
||||
#include <ncurses/term.h> /* for setupterm() */
|
||||
#elif ECA_USE_CURSES_H
|
||||
#include <curses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
const static int tb_terminal_width_default = ECASOUND_TERM_WIDTH_DEFAULT;
|
||||
|
||||
/**
|
||||
* Set terminal width used in pretty-printing ecasound console output.
|
||||
*/
|
||||
static int tb_terminal_width = tb_terminal_width_default;
|
||||
|
||||
/**
|
||||
* Set terminal width used in pretty-printing banners and
|
||||
* other purely cosmetic traces.
|
||||
*/
|
||||
static int tb_terminal_width_banners = tb_terminal_width_default;
|
||||
|
||||
/**
|
||||
* Wraps text 'msg' by adding <newline> + "... " breaks so that none
|
||||
* of the lines exceed 'width' characteds.
|
||||
*/
|
||||
static string tb_wrap(const string& msg, int width, int first_line_offset)
|
||||
{
|
||||
string result;
|
||||
int wrlines = 0;
|
||||
int offset = first_line_offset;
|
||||
const string wrap_prefix ("... ");
|
||||
size_t wrap_offset = wrap_prefix.size();
|
||||
size_t begin, end;
|
||||
|
||||
#undef VERBOSE_DEBUG
|
||||
#ifdef VERBOSE_DEBUG
|
||||
fprintf(stdout,
|
||||
"msg-in=<%s>\n",
|
||||
msg.c_str());
|
||||
#endif
|
||||
|
||||
for(begin = 0, end = 0; end < msg.size(); end++) {
|
||||
|
||||
if (begin == end)
|
||||
continue;
|
||||
|
||||
/* case: trace messages has a newline itself, no wrap needed */
|
||||
if (msg[end] == '\n') {
|
||||
result += string(msg, begin, end - begin);
|
||||
begin = end;
|
||||
offset = 0;
|
||||
++wrlines;
|
||||
}
|
||||
/* case: current line exceeds the width, wrap */
|
||||
else if (end - begin + offset >= static_cast<size_t>(width)) {
|
||||
string tmpstr (msg, begin, end - begin);
|
||||
size_t last_space = tmpstr.find_last_of(" ");
|
||||
|
||||
/* case: spaces on the line, wrap before last token */
|
||||
if (last_space != string::npos) {
|
||||
result += string(tmpstr, 0, last_space);
|
||||
begin += last_space + 1;
|
||||
}
|
||||
/* case: no spaces on the line, cannot wrap */
|
||||
else {
|
||||
/* note: with first line, wrap all input */
|
||||
if (static_cast<size_t>(first_line_offset) > wrap_offset &&
|
||||
wrlines == 0) {
|
||||
/* nop */
|
||||
}
|
||||
else {
|
||||
result += tmpstr;
|
||||
begin = end;
|
||||
}
|
||||
}
|
||||
|
||||
result += "\n" + wrap_prefix;
|
||||
offset = wrap_offset;
|
||||
++wrlines;
|
||||
}
|
||||
}
|
||||
|
||||
if ((end - begin) > 0) {
|
||||
result += string(msg, begin, end - begin);
|
||||
}
|
||||
|
||||
#ifdef VERBOSE_DEBUG
|
||||
fprintf(stdout,
|
||||
"msg-out=<%s>\n",
|
||||
result.c_str());
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void TEXTDEBUG::stream(std::ostream* dos)
|
||||
{
|
||||
dostream_repp = dos;
|
||||
}
|
||||
|
||||
std::ostream* TEXTDEBUG::stream(void)
|
||||
{
|
||||
return dostream_repp;
|
||||
}
|
||||
|
||||
void TEXTDEBUG::do_flush(void)
|
||||
{
|
||||
dostream_repp->flush();
|
||||
}
|
||||
|
||||
void TEXTDEBUG::do_msg(ECA_LOGGER::Msg_level_t level, const std::string& module_name, const std::string& log_message)
|
||||
{
|
||||
if (is_log_level_set(level) == true) {
|
||||
int offset = 0;
|
||||
|
||||
if (level == ECA_LOGGER::subsystems) {
|
||||
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
|
||||
*dostream_repp << "- [ ";
|
||||
putp(tigetstr("bold"));
|
||||
offset += 4;
|
||||
#endif
|
||||
}
|
||||
else if (module_name.size() > 0 &&
|
||||
is_log_level_set(ECA_LOGGER::module_names) == true &&
|
||||
level != ECA_LOGGER::eiam_return_values) {
|
||||
std::string module_name_without_ext
|
||||
= ECA_LOGGER_INTERFACE::filter_module_name(module_name);
|
||||
*dostream_repp << "("
|
||||
<< module_name_without_ext
|
||||
<< ") ";
|
||||
offset += module_name_without_ext.size() + 3;
|
||||
}
|
||||
|
||||
*dostream_repp << tb_wrap(log_message, tb_terminal_width, offset);
|
||||
|
||||
if (level == ECA_LOGGER::subsystems) {
|
||||
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
|
||||
putp(tigetstr("sgr0"));
|
||||
*dostream_repp << " ] ";
|
||||
#else
|
||||
*dostream_repp << " ] ";
|
||||
#endif
|
||||
offset += 3;
|
||||
int fillchars = tb_terminal_width_banners
|
||||
- (static_cast<int>(log_message.size()) + offset);
|
||||
if (fillchars > 0) {
|
||||
string fillstr (fillchars, '-');
|
||||
*dostream_repp << fillstr;
|
||||
}
|
||||
}
|
||||
|
||||
*dostream_repp << endl;
|
||||
}
|
||||
}
|
||||
|
||||
TEXTDEBUG::TEXTDEBUG(void)
|
||||
{
|
||||
char *columns_str = getenv("COLUMNS");
|
||||
if (columns_str) {
|
||||
tb_terminal_width =
|
||||
std::atoi(columns_str) - 4;
|
||||
if (tb_terminal_width < 8)
|
||||
tb_terminal_width = tb_terminal_width_default;
|
||||
}
|
||||
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
|
||||
else if (COLS > 0) {
|
||||
tb_terminal_width = COLS - 4;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (tb_terminal_width <
|
||||
tb_terminal_width_banners)
|
||||
tb_terminal_width_banners = tb_terminal_width;
|
||||
|
||||
dostream_repp = &std::cout;
|
||||
}
|
||||
|
||||
TEXTDEBUG::~TEXTDEBUG(void)
|
||||
{
|
||||
flush();
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
#ifndef INCLUDED_TEXTDEBUG_H
|
||||
#define INCLUDED_TEXTDEBUG_H
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
|
||||
#include <eca-logger-interface.h>
|
||||
|
||||
class TEXTDEBUG : public ECA_LOGGER_INTERFACE {
|
||||
|
||||
public:
|
||||
|
||||
virtual void do_msg(ECA_LOGGER::Msg_level_t level, const std::string& module_name, const std::string& log_message);
|
||||
virtual void do_flush(void);
|
||||
virtual void do_log_level_changed(void) { }
|
||||
|
||||
TEXTDEBUG(void);
|
||||
virtual ~TEXTDEBUG(void);
|
||||
|
||||
private:
|
||||
|
||||
std::ostream* dostream_repp;
|
||||
|
||||
void stream(std::ostream* dos);
|
||||
std::ostream* stream(void);
|
||||
};
|
||||
|
||||
#endif /* INCLUDED_TEXTDEBUG_H */
|
|
@ -0,0 +1,31 @@
|
|||
# settings decided at build time
|
||||
ecasound-version = @VERSION@
|
||||
resource-directory = @pkgdatadir@
|
||||
resource-file-genosc-envelopes = generic_oscillators
|
||||
resource-file-effect-presets = effect_presets
|
||||
ladspa-plugin-directory = @prefix@/lib/ladspa
|
||||
|
||||
# settings that affect creation of chainsetups (examples)
|
||||
#midi-device = rawmidi,/dev/midi
|
||||
#default-output = autodetect
|
||||
#default-audio-format = s16_le,2,44100,i
|
||||
#default-to-precise-sample-rates = false
|
||||
default-mix-mode = avg
|
||||
#bmode-defaults-nonrt = 1024,false,50,false,100000,true
|
||||
#bmode-defaults-rt = 1024,true,50,true,100000,true
|
||||
#bmode-defaults-rtlowlatency = 256,true,50,true,100000,false
|
||||
|
||||
# commands for launching external programs
|
||||
#ext-cmd-text-editor = nano
|
||||
#ext-cmd-text-editor-use-getenv = true
|
||||
#ext-cmd-wave-editor = ecawave
|
||||
#ext-cmd-mp3-input = mpg123 --stereo -r %s -b 0 -q -s -k %o %f
|
||||
#ext-cmd-mp3-output = lame -b %B -s %S --little-endian -S - %f
|
||||
#ext-cmd-ogg-input = ogg123 -d raw -o byteorder:%E --file=- %f
|
||||
#ext-cmd-ogg-output = oggenc -b %B --raw --raw-bits=%b --raw-chan=%c --raw-rate=%s --raw-endianness 0 --output=%f -
|
||||
#ext-cmd-mikmod = mikmod -d stdout -o 16s -q -f %s -p 0 --noloops %f
|
||||
#ext-cmd-timidity = timidity -Or1S -id -s %s -o - %f
|
||||
#ext-cmd-flac-input = flac -d -c %f
|
||||
#ext-cmd-flac-output = flac -o %f -f --force-raw-format --channels=%c --bps=%b --sample-rate=%s --sign=%I --endian=%E -
|
||||
#ext-cmd-aac-input = faad -w -b 1 -f 2 -d %f
|
||||
#ext-cmd-aac-output = faac -P -o %f -R %s -B %b -C %c -
|
|
@ -0,0 +1,736 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# ecatools/Makefile. Generated from Makefile.in by configure.
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/ecatools/Makefile.am
|
||||
# Description: Utility applications built on Ecasound libraries
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
srcdir = .
|
||||
top_srcdir = ..
|
||||
|
||||
pkgdatadir = $(datadir)/ecasound
|
||||
pkglibdir = $(libdir)/ecasound
|
||||
pkgincludedir = $(includedir)/ecasound
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = /usr/bin/install -c
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = x86_64-unknown-linux-gnu
|
||||
host_triplet = x86_64-unknown-linux-gnu
|
||||
bin_PROGRAMS = ecaconvert$(EXEEXT) \
|
||||
ecafixdc$(EXEEXT) ecalength$(EXEEXT) \
|
||||
ecanormalize$(EXEEXT) \
|
||||
ecaplay$(EXEEXT) \
|
||||
ecasignalview$(EXEEXT)
|
||||
#bin_PROGRAMS = ecaconvert_debug$(EXEEXT) \
|
||||
# ecafixdc_debug$(EXEEXT) \
|
||||
# ecalength_debug$(EXEEXT) \
|
||||
# ecanormalize_debug$(EXEEXT) \
|
||||
# ecaplay_debug$(EXEEXT) \
|
||||
# ecasignalview_debug$(EXEEXT)
|
||||
subdir = ecatools
|
||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_ecaconvert_OBJECTS = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
ecaconvert_OBJECTS = $(am_ecaconvert_OBJECTS)
|
||||
am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc.la
|
||||
#am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc_debug.la
|
||||
am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils.la
|
||||
#am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils_debug.la
|
||||
ecaconvert_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
am__objects_1 = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecaconvert_debug_OBJECTS = $(am__objects_1)
|
||||
ecaconvert_debug_OBJECTS = $(am_ecaconvert_debug_OBJECTS)
|
||||
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
ecaconvert_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecafixdc_OBJECTS = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
ecafixdc_OBJECTS = $(am_ecafixdc_OBJECTS)
|
||||
ecafixdc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
am__objects_2 = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecafixdc_debug_OBJECTS = $(am__objects_2)
|
||||
ecafixdc_debug_OBJECTS = $(am_ecafixdc_debug_OBJECTS)
|
||||
ecafixdc_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecalength_OBJECTS = ecalength.$(OBJEXT)
|
||||
ecalength_OBJECTS = $(am_ecalength_OBJECTS)
|
||||
ecalength_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am__objects_3 = ecalength.$(OBJEXT)
|
||||
am_ecalength_debug_OBJECTS = $(am__objects_3)
|
||||
ecalength_debug_OBJECTS = $(am_ecalength_debug_OBJECTS)
|
||||
am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
|
||||
ecalength_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
|
||||
am_ecanormalize_OBJECTS = ecanormalize.$(OBJEXT) \
|
||||
ecicpp_helpers.$(OBJEXT)
|
||||
ecanormalize_OBJECTS = $(am_ecanormalize_OBJECTS)
|
||||
ecanormalize_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2)
|
||||
am__objects_4 = ecanormalize.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecanormalize_debug_OBJECTS = $(am__objects_4)
|
||||
ecanormalize_debug_OBJECTS = $(am_ecanormalize_debug_OBJECTS)
|
||||
ecanormalize_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecaplay_OBJECTS = ecaplay.$(OBJEXT)
|
||||
ecaplay_OBJECTS = $(am_ecaplay_OBJECTS)
|
||||
ecaplay_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am__objects_5 = ecaplay.$(OBJEXT)
|
||||
am_ecaplay_debug_OBJECTS = $(am__objects_5)
|
||||
ecaplay_debug_OBJECTS = $(am_ecaplay_debug_OBJECTS)
|
||||
ecaplay_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
|
||||
am_ecasignalview_OBJECTS = ecasignalview.$(OBJEXT) \
|
||||
ecicpp_helpers.$(OBJEXT)
|
||||
ecasignalview_OBJECTS = $(am_ecasignalview_OBJECTS)
|
||||
am__DEPENDENCIES_5 =
|
||||
ecasignalview_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_5) \
|
||||
$(am__DEPENDENCIES_5)
|
||||
am__objects_6 = ecasignalview.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecasignalview_debug_OBJECTS = $(am__objects_6)
|
||||
ecasignalview_debug_OBJECTS = $(am_ecasignalview_debug_OBJECTS)
|
||||
am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_5)
|
||||
ecasignalview_debug_DEPENDENCIES = $(am__DEPENDENCIES_6)
|
||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
|
||||
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
|
||||
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
|
||||
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
|
||||
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
|
||||
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
|
||||
DIST_SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
|
||||
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
|
||||
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
|
||||
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
|
||||
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
|
||||
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
|
||||
AMDEP_FALSE = #
|
||||
AMDEP_TRUE =
|
||||
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
|
||||
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
|
||||
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
|
||||
AM_LDFLAGS =
|
||||
AR = ar
|
||||
ARTSC_CONFIG = none
|
||||
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
|
||||
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
|
||||
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
|
||||
AWK = gawk
|
||||
CC = gcc
|
||||
CCDEPMODE = depmode=gcc3
|
||||
CFLAGS = -g -O2
|
||||
CPP = gcc -E
|
||||
CPPFLAGS =
|
||||
CXX = g++
|
||||
CXXCPP = g++ -E
|
||||
CXXDEPMODE = depmode=gcc3
|
||||
CXXFLAGS = -g -O2
|
||||
CYGPATH_W = echo
|
||||
DEFS = -DHAVE_CONFIG_H
|
||||
DEPDIR = .deps
|
||||
DSYMUTIL =
|
||||
ECA_AM_ALL_STATIC_FALSE =
|
||||
ECA_AM_ALL_STATIC_TRUE = #
|
||||
ECA_AM_COMPILE_ALSA_FALSE = #
|
||||
ECA_AM_COMPILE_ALSA_TRUE =
|
||||
ECA_AM_COMPILE_ARTS_FALSE =
|
||||
ECA_AM_COMPILE_ARTS_TRUE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE =
|
||||
ECA_AM_COMPILE_JACK_FALSE =
|
||||
ECA_AM_COMPILE_JACK_TRUE = #
|
||||
ECA_AM_COMPILE_OSS_FALSE = #
|
||||
ECA_AM_COMPILE_OSS_TRUE =
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE =
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = #
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE =
|
||||
ECA_AM_DEBUG_MODE_FALSE =
|
||||
ECA_AM_DEBUG_MODE_TRUE = #
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE =
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = #
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = #
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE =
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE =
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = #
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = #
|
||||
ECA_AM_SYSTEM_READLINE_TRUE =
|
||||
ECA_AM_USE_NCURSES_FALSE = #
|
||||
ECA_AM_USE_NCURSES_TRUE =
|
||||
ECA_AM_USE_TERMCAP_FALSE =
|
||||
ECA_AM_USE_TERMCAP_TRUE = #
|
||||
ECA_S_EXTRA_CPPFLAGS =
|
||||
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
|
||||
ECA_S_JACK_INCLUDES =
|
||||
ECA_S_JACK_LIBS =
|
||||
ECA_S_PREFIX = /usr/local
|
||||
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
|
||||
ECA_S_PYTHON_INCLUDES =
|
||||
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
|
||||
ECA_S_READLINE_INCLUDES = /usr/include/readline
|
||||
ECA_S_READLINE_LIBS = -lreadline -lhistory
|
||||
ECA_S_RUBY_SITEDIR =
|
||||
ECHO = echo
|
||||
ECHO_C =
|
||||
ECHO_N = -n
|
||||
ECHO_T =
|
||||
EGREP = /bin/grep -E
|
||||
EXEEXT =
|
||||
F77 =
|
||||
FFLAGS =
|
||||
GREP = /bin/grep
|
||||
INSTALL_DATA = ${INSTALL} -m 644
|
||||
INSTALL_PROGRAM = ${INSTALL}
|
||||
INSTALL_SCRIPT = ${INSTALL}
|
||||
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
|
||||
LDFLAGS =
|
||||
LIBECASOUNDC_VERSION = 2
|
||||
LIBECASOUNDC_VERSION_AGE = 1
|
||||
LIBECASOUND_VERSION = 22
|
||||
LIBECASOUND_VERSION_AGE = 0
|
||||
LIBKVUTILS_VERSION = 9
|
||||
LIBKVUTILS_VERSION_AGE = 5
|
||||
LIBLO_CFLAGS =
|
||||
LIBLO_LIBS =
|
||||
LIBOBJS =
|
||||
LIBOIL_CFLAGS =
|
||||
LIBOIL_LIBS =
|
||||
LIBS = -ldl -lm -lrt -lpthread
|
||||
LIBTOOL = $(SHELL) $(top_builddir)/libtool
|
||||
LN_S = ln -s
|
||||
LTLIBOBJS =
|
||||
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
|
||||
NMEDIT =
|
||||
OBJEXT = o
|
||||
PACKAGE = ecasound
|
||||
PACKAGE_BUGREPORT =
|
||||
PACKAGE_NAME = ecasound
|
||||
PACKAGE_STRING = ecasound 2.7.2
|
||||
PACKAGE_TARNAME = ecasound
|
||||
PACKAGE_VERSION = 2.7.2
|
||||
PATH_SEPARATOR = :
|
||||
PKG_CONFIG = /usr/bin/pkg-config
|
||||
PYTHONPATH = /usr/bin/python
|
||||
RANLIB = ranlib
|
||||
RUBYPATH = none
|
||||
SED = /bin/sed
|
||||
SET_MAKE =
|
||||
SHELL = /bin/bash
|
||||
STRIP = strip
|
||||
VERSION = 2.7.2
|
||||
ac_ct_CC = gcc
|
||||
ac_ct_CXX = g++
|
||||
ac_ct_F77 =
|
||||
am__fastdepCC_FALSE = #
|
||||
am__fastdepCC_TRUE =
|
||||
am__fastdepCXX_FALSE = #
|
||||
am__fastdepCXX_TRUE =
|
||||
am__include = include
|
||||
am__leading_dot = .
|
||||
am__quote =
|
||||
am__tar = ${AMTAR} chof - "$$tardir"
|
||||
am__untar = ${AMTAR} xf -
|
||||
bindir = ${exec_prefix}/bin
|
||||
build = x86_64-unknown-linux-gnu
|
||||
build_alias =
|
||||
build_cpu = x86_64
|
||||
build_os = linux-gnu
|
||||
build_vendor = unknown
|
||||
datadir = ${datarootdir}
|
||||
datarootdir = ${prefix}/share
|
||||
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
|
||||
dvidir = ${docdir}
|
||||
exec_prefix = ${prefix}
|
||||
host = x86_64-unknown-linux-gnu
|
||||
host_alias =
|
||||
host_cpu = x86_64
|
||||
host_os = linux-gnu
|
||||
host_vendor = unknown
|
||||
htmldir = ${docdir}
|
||||
includedir = ${prefix}/include
|
||||
infodir = ${datarootdir}/info
|
||||
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
|
||||
libdir = ${exec_prefix}/lib
|
||||
libexecdir = ${exec_prefix}/libexec
|
||||
localedir = ${datarootdir}/locale
|
||||
localstatedir = ${prefix}/var
|
||||
mandir = ${datarootdir}/man
|
||||
mkdir_p = mkdir -p --
|
||||
oldincludedir = /usr/include
|
||||
pdfdir = ${docdir}
|
||||
prefix = /usr/local
|
||||
program_transform_name = s,x,x,
|
||||
psdir = ${docdir}
|
||||
sbindir = ${exec_prefix}/sbin
|
||||
sharedstatedir = ${prefix}/com
|
||||
sysconfdir = ${prefix}/etc
|
||||
target_alias =
|
||||
EXTRA_DIST = ecasound.el ecamonitor
|
||||
libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
|
||||
#libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
|
||||
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
|
||||
#libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
|
||||
ncurses_library = -lncurses
|
||||
#termcap_library = -ltermcap
|
||||
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
|
||||
bin_SCRIPTS = ecamonitor
|
||||
|
||||
# --
|
||||
noinst_HEADERS = ecicpp_helpers.h
|
||||
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
|
||||
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
|
||||
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecalength_SOURCES = ecalength.c
|
||||
ecalength_LDADD = $(libecasoundc_path)
|
||||
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
|
||||
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecaplay_SOURCES = ecaplay.c
|
||||
ecaplay_LDADD = $(libecasoundc_path)
|
||||
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
|
||||
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
|
||||
|
||||
# --
|
||||
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
|
||||
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
|
||||
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
|
||||
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
|
||||
ecalength_debug_SOURCES = $(ecalength_SOURCES)
|
||||
ecalength_debug_LDADD = $(ecalength_LDADD)
|
||||
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
|
||||
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
|
||||
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
|
||||
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
|
||||
ecaplay_debug_LDADD = $(ecaplay_LDADD)
|
||||
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
|
||||
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecatools/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ecatools/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
ecaconvert$(EXEEXT): $(ecaconvert_OBJECTS) $(ecaconvert_DEPENDENCIES)
|
||||
@rm -f ecaconvert$(EXEEXT)
|
||||
$(CXXLINK) $(ecaconvert_LDFLAGS) $(ecaconvert_OBJECTS) $(ecaconvert_LDADD) $(LIBS)
|
||||
ecaconvert_debug$(EXEEXT): $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_DEPENDENCIES)
|
||||
@rm -f ecaconvert_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecaconvert_debug_LDFLAGS) $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_LDADD) $(LIBS)
|
||||
ecafixdc$(EXEEXT): $(ecafixdc_OBJECTS) $(ecafixdc_DEPENDENCIES)
|
||||
@rm -f ecafixdc$(EXEEXT)
|
||||
$(CXXLINK) $(ecafixdc_LDFLAGS) $(ecafixdc_OBJECTS) $(ecafixdc_LDADD) $(LIBS)
|
||||
ecafixdc_debug$(EXEEXT): $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_DEPENDENCIES)
|
||||
@rm -f ecafixdc_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecafixdc_debug_LDFLAGS) $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_LDADD) $(LIBS)
|
||||
ecalength$(EXEEXT): $(ecalength_OBJECTS) $(ecalength_DEPENDENCIES)
|
||||
@rm -f ecalength$(EXEEXT)
|
||||
$(LINK) $(ecalength_LDFLAGS) $(ecalength_OBJECTS) $(ecalength_LDADD) $(LIBS)
|
||||
ecalength_debug$(EXEEXT): $(ecalength_debug_OBJECTS) $(ecalength_debug_DEPENDENCIES)
|
||||
@rm -f ecalength_debug$(EXEEXT)
|
||||
$(LINK) $(ecalength_debug_LDFLAGS) $(ecalength_debug_OBJECTS) $(ecalength_debug_LDADD) $(LIBS)
|
||||
ecanormalize$(EXEEXT): $(ecanormalize_OBJECTS) $(ecanormalize_DEPENDENCIES)
|
||||
@rm -f ecanormalize$(EXEEXT)
|
||||
$(CXXLINK) $(ecanormalize_LDFLAGS) $(ecanormalize_OBJECTS) $(ecanormalize_LDADD) $(LIBS)
|
||||
ecanormalize_debug$(EXEEXT): $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_DEPENDENCIES)
|
||||
@rm -f ecanormalize_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecanormalize_debug_LDFLAGS) $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_LDADD) $(LIBS)
|
||||
ecaplay$(EXEEXT): $(ecaplay_OBJECTS) $(ecaplay_DEPENDENCIES)
|
||||
@rm -f ecaplay$(EXEEXT)
|
||||
$(LINK) $(ecaplay_LDFLAGS) $(ecaplay_OBJECTS) $(ecaplay_LDADD) $(LIBS)
|
||||
ecaplay_debug$(EXEEXT): $(ecaplay_debug_OBJECTS) $(ecaplay_debug_DEPENDENCIES)
|
||||
@rm -f ecaplay_debug$(EXEEXT)
|
||||
$(LINK) $(ecaplay_debug_LDFLAGS) $(ecaplay_debug_OBJECTS) $(ecaplay_debug_LDADD) $(LIBS)
|
||||
ecasignalview$(EXEEXT): $(ecasignalview_OBJECTS) $(ecasignalview_DEPENDENCIES)
|
||||
@rm -f ecasignalview$(EXEEXT)
|
||||
$(CXXLINK) $(ecasignalview_LDFLAGS) $(ecasignalview_OBJECTS) $(ecasignalview_LDADD) $(LIBS)
|
||||
ecasignalview_debug$(EXEEXT): $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_DEPENDENCIES)
|
||||
@rm -f ecasignalview_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecasignalview_debug_LDFLAGS) $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_LDADD) $(LIBS)
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
include ./$(DEPDIR)/ecaconvert.Po
|
||||
include ./$(DEPDIR)/ecafixdc.Po
|
||||
include ./$(DEPDIR)/ecalength.Po
|
||||
include ./$(DEPDIR)/ecanormalize.Po
|
||||
include ./$(DEPDIR)/ecaplay.Po
|
||||
include ./$(DEPDIR)/ecasignalview.Po
|
||||
include ./$(DEPDIR)/ecicpp_helpers.Po
|
||||
|
||||
.c.o:
|
||||
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
|
||||
# $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
|
||||
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=yes \
|
||||
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
|
||||
# $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.o:
|
||||
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=no \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
# source='$<' object='$@' libtool=yes \
|
||||
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
|
||||
# $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS install-binSCRIPTS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
|
||||
uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-binSCRIPTS install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-binSCRIPTS uninstall-info-am
|
||||
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,94 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/ecatools/Makefile.am
|
||||
# Description: Utility applications built on Ecasound libraries
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
EXTRA_DIST = ecasound.el ecamonitor
|
||||
|
||||
if ECA_AM_DEBUG_MODE
|
||||
libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
|
||||
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
|
||||
else
|
||||
libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
|
||||
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
|
||||
endif
|
||||
|
||||
if ECA_AM_USE_NCURSES
|
||||
ncurses_library = -lncurses
|
||||
endif
|
||||
|
||||
if ECA_AM_USE_TERMCAP
|
||||
termcap_library = -ltermcap
|
||||
endif
|
||||
|
||||
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
|
||||
|
||||
bin_SCRIPTS = ecamonitor
|
||||
|
||||
if ECA_AM_DEBUG_MODE
|
||||
bin_PROGRAMS = ecaconvert_debug \
|
||||
ecafixdc_debug \
|
||||
ecalength_debug \
|
||||
ecanormalize_debug \
|
||||
ecaplay_debug \
|
||||
ecasignalview_debug
|
||||
else
|
||||
bin_PROGRAMS = ecaconvert \
|
||||
ecafixdc \
|
||||
ecalength \
|
||||
ecanormalize \
|
||||
ecaplay \
|
||||
ecasignalview
|
||||
endif
|
||||
|
||||
# --
|
||||
|
||||
noinst_HEADERS = ecicpp_helpers.h
|
||||
|
||||
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
|
||||
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
|
||||
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
|
||||
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
|
||||
ecalength_SOURCES = ecalength.c
|
||||
ecalength_LDADD = $(libecasoundc_path)
|
||||
|
||||
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
|
||||
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
|
||||
ecaplay_SOURCES = ecaplay.c
|
||||
ecaplay_LDADD = $(libecasoundc_path)
|
||||
|
||||
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
|
||||
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
|
||||
|
||||
# --
|
||||
|
||||
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
|
||||
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
|
||||
|
||||
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
|
||||
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
|
||||
|
||||
ecalength_debug_SOURCES = $(ecalength_SOURCES)
|
||||
ecalength_debug_LDADD = $(ecalength_LDADD)
|
||||
|
||||
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
|
||||
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
|
||||
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
|
||||
|
||||
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
|
||||
ecaplay_debug_LDADD = $(ecaplay_LDADD)
|
||||
|
||||
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
|
||||
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
|
@ -0,0 +1,736 @@
|
|||
# Makefile.in generated by automake 1.9.6 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/ecatools/Makefile.am
|
||||
# Description: Utility applications built on Ecasound libraries
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = ..
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
@ECA_AM_DEBUG_MODE_FALSE@bin_PROGRAMS = ecaconvert$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_FALSE@ ecafixdc$(EXEEXT) ecalength$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_FALSE@ ecanormalize$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_FALSE@ ecaplay$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_FALSE@ ecasignalview$(EXEEXT)
|
||||
@ECA_AM_DEBUG_MODE_TRUE@bin_PROGRAMS = ecaconvert_debug$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_TRUE@ ecafixdc_debug$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_TRUE@ ecalength_debug$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_TRUE@ ecanormalize_debug$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_TRUE@ ecaplay_debug$(EXEEXT) \
|
||||
@ECA_AM_DEBUG_MODE_TRUE@ ecasignalview_debug$(EXEEXT)
|
||||
subdir = ecatools
|
||||
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
|
||||
$(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(install_sh) -d
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
|
||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_ecaconvert_OBJECTS = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
ecaconvert_OBJECTS = $(am_ecaconvert_OBJECTS)
|
||||
@ECA_AM_DEBUG_MODE_FALSE@am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc.la
|
||||
@ECA_AM_DEBUG_MODE_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc_debug.la
|
||||
@ECA_AM_DEBUG_MODE_FALSE@am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils.la
|
||||
@ECA_AM_DEBUG_MODE_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils_debug.la
|
||||
ecaconvert_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
am__objects_1 = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecaconvert_debug_OBJECTS = $(am__objects_1)
|
||||
ecaconvert_debug_OBJECTS = $(am_ecaconvert_debug_OBJECTS)
|
||||
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
ecaconvert_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecafixdc_OBJECTS = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
ecafixdc_OBJECTS = $(am_ecafixdc_OBJECTS)
|
||||
ecafixdc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
|
||||
am__objects_2 = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecafixdc_debug_OBJECTS = $(am__objects_2)
|
||||
ecafixdc_debug_OBJECTS = $(am_ecafixdc_debug_OBJECTS)
|
||||
ecafixdc_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecalength_OBJECTS = ecalength.$(OBJEXT)
|
||||
ecalength_OBJECTS = $(am_ecalength_OBJECTS)
|
||||
ecalength_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am__objects_3 = ecalength.$(OBJEXT)
|
||||
am_ecalength_debug_OBJECTS = $(am__objects_3)
|
||||
ecalength_debug_OBJECTS = $(am_ecalength_debug_OBJECTS)
|
||||
am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
|
||||
ecalength_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
|
||||
am_ecanormalize_OBJECTS = ecanormalize.$(OBJEXT) \
|
||||
ecicpp_helpers.$(OBJEXT)
|
||||
ecanormalize_OBJECTS = $(am_ecanormalize_OBJECTS)
|
||||
ecanormalize_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2)
|
||||
am__objects_4 = ecanormalize.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecanormalize_debug_OBJECTS = $(am__objects_4)
|
||||
ecanormalize_debug_OBJECTS = $(am_ecanormalize_debug_OBJECTS)
|
||||
ecanormalize_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
|
||||
am_ecaplay_OBJECTS = ecaplay.$(OBJEXT)
|
||||
ecaplay_OBJECTS = $(am_ecaplay_OBJECTS)
|
||||
ecaplay_DEPENDENCIES = $(am__DEPENDENCIES_1)
|
||||
am__objects_5 = ecaplay.$(OBJEXT)
|
||||
am_ecaplay_debug_OBJECTS = $(am__objects_5)
|
||||
ecaplay_debug_OBJECTS = $(am_ecaplay_debug_OBJECTS)
|
||||
ecaplay_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
|
||||
am_ecasignalview_OBJECTS = ecasignalview.$(OBJEXT) \
|
||||
ecicpp_helpers.$(OBJEXT)
|
||||
ecasignalview_OBJECTS = $(am_ecasignalview_OBJECTS)
|
||||
am__DEPENDENCIES_5 =
|
||||
ecasignalview_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_5) \
|
||||
$(am__DEPENDENCIES_5)
|
||||
am__objects_6 = ecasignalview.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
|
||||
am_ecasignalview_debug_OBJECTS = $(am__objects_6)
|
||||
ecasignalview_debug_OBJECTS = $(am_ecasignalview_debug_OBJECTS)
|
||||
am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
|
||||
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_5)
|
||||
ecasignalview_debug_DEPENDENCIES = $(am__DEPENDENCIES_6)
|
||||
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
|
||||
depcomp = $(SHELL) $(top_srcdir)/depcomp
|
||||
am__depfiles_maybe = depfiles
|
||||
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
|
||||
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
|
||||
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
|
||||
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
|
||||
$(AM_CXXFLAGS) $(CXXFLAGS)
|
||||
CXXLD = $(CXX)
|
||||
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
|
||||
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
|
||||
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
|
||||
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
|
||||
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
|
||||
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
|
||||
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
|
||||
DIST_SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
|
||||
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
|
||||
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
|
||||
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
|
||||
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
|
||||
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
|
||||
HEADERS = $(noinst_HEADERS)
|
||||
ETAGS = etags
|
||||
CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AM_CPPFLAGS = @AM_CPPFLAGS@
|
||||
AM_CXXFLAGS = @AM_CXXFLAGS@
|
||||
AM_LDFLAGS = @AM_LDFLAGS@
|
||||
AR = @AR@
|
||||
ARTSC_CONFIG = @ARTSC_CONFIG@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DSYMUTIL = @DSYMUTIL@
|
||||
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
|
||||
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
|
||||
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
|
||||
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
|
||||
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
|
||||
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
|
||||
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
|
||||
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
|
||||
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
|
||||
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
|
||||
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
|
||||
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
|
||||
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
|
||||
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
|
||||
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
|
||||
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
|
||||
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
|
||||
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
|
||||
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
|
||||
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
|
||||
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
|
||||
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
|
||||
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
|
||||
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
|
||||
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
|
||||
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
|
||||
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
|
||||
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
|
||||
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
|
||||
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
|
||||
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
|
||||
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
|
||||
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
|
||||
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
|
||||
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
|
||||
ECA_S_PREFIX = @ECA_S_PREFIX@
|
||||
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
|
||||
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
|
||||
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
|
||||
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
|
||||
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
|
||||
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
|
||||
ECHO = @ECHO@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
F77 = @F77@
|
||||
FFLAGS = @FFLAGS@
|
||||
GREP = @GREP@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
|
||||
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
|
||||
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
|
||||
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
|
||||
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
|
||||
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
|
||||
LIBLO_CFLAGS = @LIBLO_CFLAGS@
|
||||
LIBLO_LIBS = @LIBLO_LIBS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
|
||||
LIBOIL_LIBS = @LIBOIL_LIBS@
|
||||
LIBS = @LIBS@
|
||||
LIBTOOL = @LIBTOOL@
|
||||
LN_S = @LN_S@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NMEDIT = @NMEDIT@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
PKG_CONFIG = @PKG_CONFIG@
|
||||
PYTHONPATH = @PYTHONPATH@
|
||||
RANLIB = @RANLIB@
|
||||
RUBYPATH = @RUBYPATH@
|
||||
SED = @SED@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_F77 = @ac_ct_F77@
|
||||
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
|
||||
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
EXTRA_DIST = ecasound.el ecamonitor
|
||||
@ECA_AM_DEBUG_MODE_FALSE@libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
|
||||
@ECA_AM_DEBUG_MODE_TRUE@libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
|
||||
@ECA_AM_DEBUG_MODE_FALSE@libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
|
||||
@ECA_AM_DEBUG_MODE_TRUE@libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
|
||||
@ECA_AM_USE_NCURSES_TRUE@ncurses_library = -lncurses
|
||||
@ECA_AM_USE_TERMCAP_TRUE@termcap_library = -ltermcap
|
||||
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
|
||||
bin_SCRIPTS = ecamonitor
|
||||
|
||||
# --
|
||||
noinst_HEADERS = ecicpp_helpers.h
|
||||
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
|
||||
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
|
||||
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecalength_SOURCES = ecalength.c
|
||||
ecalength_LDADD = $(libecasoundc_path)
|
||||
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
|
||||
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
|
||||
ecaplay_SOURCES = ecaplay.c
|
||||
ecaplay_LDADD = $(libecasoundc_path)
|
||||
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
|
||||
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
|
||||
|
||||
# --
|
||||
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
|
||||
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
|
||||
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
|
||||
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
|
||||
ecalength_debug_SOURCES = $(ecalength_SOURCES)
|
||||
ecalength_debug_LDADD = $(ecalength_LDADD)
|
||||
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
|
||||
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
|
||||
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
|
||||
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
|
||||
ecaplay_debug_LDADD = $(ecaplay_LDADD)
|
||||
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
|
||||
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c .cpp .lo .o .obj
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
|
||||
&& exit 0; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecatools/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign ecatools/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
if test -f $$p \
|
||||
|| test -f $$p1 \
|
||||
; then \
|
||||
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binPROGRAMS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
clean-binPROGRAMS:
|
||||
@list='$(bin_PROGRAMS)'; for p in $$list; do \
|
||||
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
|
||||
echo " rm -f $$p $$f"; \
|
||||
rm -f $$p $$f ; \
|
||||
done
|
||||
ecaconvert$(EXEEXT): $(ecaconvert_OBJECTS) $(ecaconvert_DEPENDENCIES)
|
||||
@rm -f ecaconvert$(EXEEXT)
|
||||
$(CXXLINK) $(ecaconvert_LDFLAGS) $(ecaconvert_OBJECTS) $(ecaconvert_LDADD) $(LIBS)
|
||||
ecaconvert_debug$(EXEEXT): $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_DEPENDENCIES)
|
||||
@rm -f ecaconvert_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecaconvert_debug_LDFLAGS) $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_LDADD) $(LIBS)
|
||||
ecafixdc$(EXEEXT): $(ecafixdc_OBJECTS) $(ecafixdc_DEPENDENCIES)
|
||||
@rm -f ecafixdc$(EXEEXT)
|
||||
$(CXXLINK) $(ecafixdc_LDFLAGS) $(ecafixdc_OBJECTS) $(ecafixdc_LDADD) $(LIBS)
|
||||
ecafixdc_debug$(EXEEXT): $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_DEPENDENCIES)
|
||||
@rm -f ecafixdc_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecafixdc_debug_LDFLAGS) $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_LDADD) $(LIBS)
|
||||
ecalength$(EXEEXT): $(ecalength_OBJECTS) $(ecalength_DEPENDENCIES)
|
||||
@rm -f ecalength$(EXEEXT)
|
||||
$(LINK) $(ecalength_LDFLAGS) $(ecalength_OBJECTS) $(ecalength_LDADD) $(LIBS)
|
||||
ecalength_debug$(EXEEXT): $(ecalength_debug_OBJECTS) $(ecalength_debug_DEPENDENCIES)
|
||||
@rm -f ecalength_debug$(EXEEXT)
|
||||
$(LINK) $(ecalength_debug_LDFLAGS) $(ecalength_debug_OBJECTS) $(ecalength_debug_LDADD) $(LIBS)
|
||||
ecanormalize$(EXEEXT): $(ecanormalize_OBJECTS) $(ecanormalize_DEPENDENCIES)
|
||||
@rm -f ecanormalize$(EXEEXT)
|
||||
$(CXXLINK) $(ecanormalize_LDFLAGS) $(ecanormalize_OBJECTS) $(ecanormalize_LDADD) $(LIBS)
|
||||
ecanormalize_debug$(EXEEXT): $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_DEPENDENCIES)
|
||||
@rm -f ecanormalize_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecanormalize_debug_LDFLAGS) $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_LDADD) $(LIBS)
|
||||
ecaplay$(EXEEXT): $(ecaplay_OBJECTS) $(ecaplay_DEPENDENCIES)
|
||||
@rm -f ecaplay$(EXEEXT)
|
||||
$(LINK) $(ecaplay_LDFLAGS) $(ecaplay_OBJECTS) $(ecaplay_LDADD) $(LIBS)
|
||||
ecaplay_debug$(EXEEXT): $(ecaplay_debug_OBJECTS) $(ecaplay_debug_DEPENDENCIES)
|
||||
@rm -f ecaplay_debug$(EXEEXT)
|
||||
$(LINK) $(ecaplay_debug_LDFLAGS) $(ecaplay_debug_OBJECTS) $(ecaplay_debug_LDADD) $(LIBS)
|
||||
ecasignalview$(EXEEXT): $(ecasignalview_OBJECTS) $(ecasignalview_DEPENDENCIES)
|
||||
@rm -f ecasignalview$(EXEEXT)
|
||||
$(CXXLINK) $(ecasignalview_LDFLAGS) $(ecasignalview_OBJECTS) $(ecasignalview_LDADD) $(LIBS)
|
||||
ecasignalview_debug$(EXEEXT): $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_DEPENDENCIES)
|
||||
@rm -f ecasignalview_debug$(EXEEXT)
|
||||
$(CXXLINK) $(ecasignalview_debug_LDFLAGS) $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_LDADD) $(LIBS)
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f $$d$$p; then \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
$(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
|
||||
else :; fi; \
|
||||
done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; for p in $$list; do \
|
||||
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
|
||||
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
|
||||
rm -f "$(DESTDIR)$(bindir)/$$f"; \
|
||||
done
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecaconvert.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecafixdc.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecalength.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecanormalize.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecaplay.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecasignalview.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecicpp_helpers.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.o:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
|
||||
|
||||
.cpp.obj:
|
||||
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.cpp.lo:
|
||||
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
|
||||
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
|
||||
distclean-libtool:
|
||||
-rm -f libtool
|
||||
uninstall-info-am:
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
tags: TAGS
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
|
||||
test -n "$$unique" || unique=$$empty_fix; \
|
||||
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique; \
|
||||
fi
|
||||
ctags: CTAGS
|
||||
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
|
||||
unique=`for i in $$list; do \
|
||||
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
|
||||
done | \
|
||||
$(AWK) ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkdir_p) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-libtool distclean-tags
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am: install-binPROGRAMS install-binSCRIPTS
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
|
||||
mostlyclean-libtool
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
|
||||
uninstall-info-am
|
||||
|
||||
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
|
||||
clean-generic clean-libtool ctags distclean distclean-compile \
|
||||
distclean-generic distclean-libtool distclean-tags distdir dvi \
|
||||
dvi-am html html-am info info-am install install-am \
|
||||
install-binPROGRAMS install-binSCRIPTS install-data \
|
||||
install-data-am install-exec install-exec-am install-info \
|
||||
install-info-am install-man install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-compile \
|
||||
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
|
||||
tags uninstall uninstall-am uninstall-binPROGRAMS \
|
||||
uninstall-binSCRIPTS uninstall-info-am
|
||||
|
||||
|
||||
# --
|
||||
|
||||
# special targets with dependency tracking
|
||||
ecainstall:
|
||||
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
|
||||
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
|
||||
$(MAKE) install
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
|
@ -0,0 +1,117 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecaconvert.cpp: A simple command-line tool for converting
|
||||
// audio files.
|
||||
// Copyright (C) 2000,2002,2005-2006 Kai Vehmanen
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
|
||||
#include <kvutils/kvu_com_line.h>
|
||||
#include <kvutils/kvu_numtostr.h>
|
||||
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
#include "ecicpp_helpers.h"
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
void print_usage(void);
|
||||
|
||||
using std::cerr;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::string;
|
||||
|
||||
static const string ecatools_play_version = "20050316-18";
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
|
||||
|
||||
if (cline.size() < 2) {
|
||||
print_usage();
|
||||
return(1);
|
||||
}
|
||||
|
||||
string filename;
|
||||
|
||||
ECA_CONTROL_INTERFACE eci;
|
||||
|
||||
cline.begin();
|
||||
cline.next(); // skip the program name
|
||||
|
||||
string extension (".raw");
|
||||
if (cline.end() != true) {
|
||||
extension = cline.current();
|
||||
cline.next();
|
||||
}
|
||||
|
||||
while(cline.end() != true) {
|
||||
filename = cline.current();
|
||||
|
||||
cout << "Converting file \"" << filename << "\" --> ";
|
||||
cout << "\"" << filename + extension << "\"." << endl;
|
||||
|
||||
eci.command("cs-add default");
|
||||
eci.command("c-add default");
|
||||
|
||||
string format;
|
||||
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
|
||||
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
if (ecicpp_add_output(&eci, filename + extension, format) < 0) break;
|
||||
|
||||
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
|
||||
break;
|
||||
}
|
||||
|
||||
cout << "Starting processing...\n";
|
||||
|
||||
// blocks until processing is done
|
||||
eci.command("run");
|
||||
|
||||
cout << "Processing finished.\n";
|
||||
|
||||
eci.command("cs-disconnect");
|
||||
eci.command("cs-select default");
|
||||
eci.command("cs-remove");
|
||||
|
||||
cline.next();
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
void print_usage(void)
|
||||
{
|
||||
cerr << "****************************************************************************\n";
|
||||
cerr << "* ecaconvert, v" << ecatools_play_version << " (" << VERSION << ")\n";
|
||||
cerr << "* (C) 2000-2004 Kai Vehmanen, released under GPL licence \n";
|
||||
cerr << "****************************************************************************\n";
|
||||
|
||||
cerr << "\nUSAGE: ecaconvert .extension file1 [ file2, ... fileN ]\n\n";
|
||||
}
|
|
@ -0,0 +1,244 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecatools-fixdc.cpp: A simple command-line tools for fixing DC-offset.
|
||||
// Copyright (C) 1999-2003,2005-2006 Kai Vehmanen
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstdio>
|
||||
#include <cmath> /* fabs() */
|
||||
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <kvutils/kvu_dbc.h>
|
||||
#include <kvutils/kvu_com_line.h>
|
||||
#include <kvutils/kvu_temporary_file_directory.h>
|
||||
#include <kvutils/kvu_numtostr.h>
|
||||
#include <kvutils/kvu_utils.h>
|
||||
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
#include "ecicpp_helpers.h"
|
||||
|
||||
using std::cerr;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::string;
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
|
||||
static void ecafixdc_print_usage(void);
|
||||
static void ecafixdc_signal_handler(int signum);
|
||||
|
||||
/**
|
||||
* Definitions and options
|
||||
*/
|
||||
|
||||
#define ECAFIXDC_PHASE_ANALYSIS 0
|
||||
#define ECAFIXDC_PHASE_PROCESSING 1
|
||||
#define ECAFIXDC_PHASE_MAX 2
|
||||
|
||||
static const string ecatools_fixdc_version = "20050316-30";
|
||||
static string ecatools_fixdc_tempfile;
|
||||
|
||||
/**
|
||||
* Function definitions
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct sigaction es_handler;
|
||||
es_handler.sa_handler = ecafixdc_signal_handler;
|
||||
sigemptyset(&es_handler.sa_mask);
|
||||
es_handler.sa_flags = 0;
|
||||
|
||||
sigaction(SIGTERM, &es_handler, 0);
|
||||
sigaction(SIGINT, &es_handler, 0);
|
||||
sigaction(SIGQUIT, &es_handler, 0);
|
||||
sigaction(SIGABRT, &es_handler, 0);
|
||||
|
||||
struct sigaction ign_handler;
|
||||
ign_handler.sa_handler = SIG_IGN;
|
||||
sigemptyset(&ign_handler.sa_mask);
|
||||
ign_handler.sa_flags = 0;
|
||||
|
||||
/* ignore the following signals */
|
||||
sigaction(SIGPIPE, &ign_handler, 0);
|
||||
sigaction(SIGFPE, &ign_handler, 0);
|
||||
|
||||
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
|
||||
|
||||
if (cline.size() < 2) {
|
||||
ecafixdc_print_usage();
|
||||
return(1);
|
||||
}
|
||||
|
||||
std::string filename;
|
||||
std::string tempfile;
|
||||
std::vector<double> dcfix_values;
|
||||
int chcount = 0;
|
||||
|
||||
ECA_CONTROL_INTERFACE eci;
|
||||
|
||||
TEMPORARY_FILE_DIRECTORY tempfile_dir_rep;
|
||||
string tmpdir ("ecatools-");
|
||||
char* tmp_p = getenv("LOGNAME");
|
||||
if (tmp_p == NULL) tmp_p = getenv("USER");
|
||||
if (tmp_p != NULL) {
|
||||
|
||||
tmpdir += string(tmp_p);
|
||||
tempfile_dir_rep.reserve_directory(tmpdir);
|
||||
}
|
||||
if (tempfile_dir_rep.is_valid() != true) {
|
||||
cerr << "---\nError while creating temporary directory \"" << tmpdir << "\". Exiting...\n";
|
||||
return(0);
|
||||
}
|
||||
|
||||
cline.begin();
|
||||
cline.next(); // skip the program name
|
||||
while(cline.end() == false) {
|
||||
filename = cline.current();
|
||||
|
||||
ecatools_fixdc_tempfile = tempfile_dir_rep.create_filename("fixdc-tmp", ".wav");
|
||||
|
||||
for(int m = 0;m < ECAFIXDC_PHASE_MAX; m++) {
|
||||
|
||||
eci.command("cs-add default");
|
||||
eci.command("c-add default");
|
||||
|
||||
if (m == ECAFIXDC_PHASE_ANALYSIS) {
|
||||
cout << "Calculating DC-offset for file \"" << filename << "\".\n";
|
||||
|
||||
string format;
|
||||
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
|
||||
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
chcount = ecicpp_format_channels(format);
|
||||
dcfix_values.resize(chcount);
|
||||
cout << "Setting up " << chcount << " separate channels for analysis." << endl;
|
||||
|
||||
cout << "Opening temp file \"" << ecatools_fixdc_tempfile << "\".\n";
|
||||
if (ecicpp_add_output(&eci, ecatools_fixdc_tempfile, format) < 0) break;
|
||||
|
||||
eci.command("cop-add -ezf");
|
||||
eci.command("cop-list");
|
||||
if (eci.last_string_list().size() != 1) {
|
||||
cerr << eci.last_error() << endl;
|
||||
cerr << "---\nError while adding DC-Find (-ezf) chainop. Exiting...\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
// FIXME: list all channels (remember to fix audiofx_misc.cpp dcfix)
|
||||
cout << "Fixing DC-offset \"" << filename << ".\n";
|
||||
|
||||
string format;
|
||||
if (ecicpp_add_file_input(&eci, ecatools_fixdc_tempfile, &format) < 0) break;
|
||||
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
if (ecicpp_add_output(&eci, filename, format) < 0) break;
|
||||
|
||||
string dcfixstr;
|
||||
for(int n = 0; n < chcount; n++) {
|
||||
dcfixstr += kvu_numtostr(dcfix_values[n]) + ",";
|
||||
}
|
||||
|
||||
eci.command("cop-add -ezx:" + kvu_numtostr(chcount) + "," + dcfixstr);
|
||||
eci.command("cop-list");
|
||||
if (eci.last_string_list().size() != 1) {
|
||||
cerr << eci.last_error() << endl;
|
||||
cerr << "---\nError while adding DC-Fix (-ezx) chainop. Exiting...\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Starting processing...\n";
|
||||
|
||||
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
// blocks until processing is done
|
||||
eci.command("run");
|
||||
}
|
||||
|
||||
cout << "Processing finished.\n";
|
||||
|
||||
if (m == ECAFIXDC_PHASE_ANALYSIS) {
|
||||
DBC_CHECK(static_cast<int>(dcfix_values.size()) >= chcount);
|
||||
double maxoffset = 0.0f;
|
||||
for(int nm = 0; nm < chcount; nm++) {
|
||||
eci.command("cop-select 1");
|
||||
eci.command("copp-select " + kvu_numtostr(nm + 1));
|
||||
eci.command("copp-get");
|
||||
dcfix_values[nm] = eci.last_float();
|
||||
if (fabs(dcfix_values[nm]) > maxoffset) maxoffset = fabs(dcfix_values[nm]);
|
||||
cout << "DC-offset for channel " << nm + 1 << " is " <<
|
||||
kvu_numtostr(dcfix_values[nm], 4) << "." << endl;
|
||||
}
|
||||
|
||||
if (maxoffset <= 0.0f) {
|
||||
cout << "File \"" << filename << "\" has no DC-offset. Skipping.";
|
||||
|
||||
eci.command("cs-disconnect");
|
||||
eci.command("cs-select default");
|
||||
eci.command("cs-remove");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
eci.command("cs-disconnect");
|
||||
eci.command("cs-select default");
|
||||
eci.command("cs-remove");
|
||||
}
|
||||
|
||||
remove(ecatools_fixdc_tempfile.c_str());
|
||||
|
||||
cline.next();
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
static void ecafixdc_print_usage(void)
|
||||
{
|
||||
std::cerr << "****************************************************************************\n";
|
||||
std::cerr << "* ecafixdc, v" << ecatools_fixdc_version << " (" << VERSION << ")\n";
|
||||
std::cerr << "* (C) 1997-2004 Kai Vehmanen, released under the GPL license\n";
|
||||
std::cerr << "****************************************************************************\n";
|
||||
|
||||
std::cerr << "\nUSAGE: ecafixdc file1 [ file2, ... fileN ]\n\n";
|
||||
}
|
||||
|
||||
static void ecafixdc_signal_handler(int signum)
|
||||
{
|
||||
std::cerr << "Unexpected interrupt... cleaning up.\n";
|
||||
remove(ecatools_fixdc_tempfile.c_str());
|
||||
exit(1);
|
||||
}
|
|
@ -0,0 +1,340 @@
|
|||
/*
|
||||
This is ecalength, a few lines of code pompously named so because they
|
||||
let one retrieve the length of an audio file from the command line
|
||||
using ecasound's engine.
|
||||
|
||||
Limitations:
|
||||
- It will only work correctly if the audio file is at a sampling rate
|
||||
of 44100 hz, unless the file is a wave file; for other formats such
|
||||
as .au, .raw and .cdr that have a sr other than 44100 the format needs
|
||||
to be specified with the -a switch.
|
||||
NOTE: mp3 files do have sr information in their headers but
|
||||
unfortunately ecasound currently seems unable to parse this information
|
||||
correctly. :(
|
||||
- It is not foolproof, feeding it with something other than an audio
|
||||
file WILL result in ugly things being spewed back.
|
||||
(A bit better)
|
||||
- A thousand more that I haven't thought of.
|
||||
|
||||
Please post back any improvement you make; I can be reached at:
|
||||
observer@colba.net
|
||||
|
||||
note: Compile it with:
|
||||
gcc -Wall -o ecalength ecalength.c `libecasoundc-config --cflags --libs`
|
||||
|
||||
* updated: Thu May 10 15:56:18 EDT 2001
|
||||
- Now works with the new ai/ao scheme.
|
||||
- Switches implemented, made suitable for scripting.
|
||||
- Format querying/setting.
|
||||
- Better error handling.
|
||||
* updated: Wed Nov 14 23:26:19 EST 2001
|
||||
- New option -su lets us return the file's length in samples.
|
||||
(This breaks compatibility with stable series.)
|
||||
- Reworked the comment above to say that basically only wave files are able
|
||||
to self-adjust.
|
||||
- Started to wondered whether my nice options structure isn't a bit too
|
||||
unobvious for anyone else than me. (???)
|
||||
- Help screen's getting a bit long, I have to scrollback to see the error
|
||||
message. (???) (addressed)
|
||||
* updated: Thu Nov 15 11:51:35 EST 2001
|
||||
- Tried to format the code a bit better however hopeless it looks, tried to
|
||||
comment it a bit.
|
||||
- Tried to catch wrong switches a bit better.
|
||||
- Only print full help message when no other message is being spewed.
|
||||
* updated: Sun Jan 6 14:37:02 EST 2002
|
||||
- Woo! Ecasound's internals now support quoting, had to take advantage of this.
|
||||
* updated: Mon Apr 29 02:41:13 EEST 2002
|
||||
- Renamed to ecalength.cpp to avoid troubles with linking ecalength
|
||||
against uninstalled libecasoundc.
|
||||
* updated: Thu Oct 31 17:41:05 EET 2002
|
||||
- Renamed to ecalength.c. Updated the compilation instructions.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h> /* exit() */
|
||||
|
||||
#include "ecasoundc.h"
|
||||
|
||||
#define FALSE 0
|
||||
#define TRUE 1
|
||||
|
||||
void make_human(int length, unsigned int *min, unsigned char *sec);
|
||||
void print_help(char* name);
|
||||
void print_usage(char* name);
|
||||
|
||||
struct options {
|
||||
char adjust;
|
||||
char format;
|
||||
char total;
|
||||
char script;
|
||||
char human;
|
||||
char bits;
|
||||
char ccount;
|
||||
char rate;
|
||||
char samples;
|
||||
};
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
char cmd[512], fstring[16], status = 0, *optstr = "ftsmhbcra:u";
|
||||
int curopt, curarg;
|
||||
unsigned char sec;
|
||||
float curfilelength, totlength = 0;
|
||||
unsigned int min;
|
||||
FILE *file;
|
||||
struct options opts;
|
||||
|
||||
/* No surprises please */
|
||||
opts.adjust = FALSE;
|
||||
opts.format = FALSE;
|
||||
opts.total = FALSE;
|
||||
opts.script = FALSE;
|
||||
opts.human = FALSE;
|
||||
opts.bits = FALSE;
|
||||
opts.ccount = FALSE;
|
||||
opts.rate = FALSE;
|
||||
opts.samples = FALSE;
|
||||
|
||||
/* Now let's parse and set. */
|
||||
while ((curopt = getopt(argc, argv, optstr)) != -1) {
|
||||
switch (curopt) {
|
||||
case 'a' : opts.adjust = TRUE;
|
||||
strcpy(fstring, optarg);
|
||||
break;
|
||||
case 'f' : opts.format = TRUE;
|
||||
break;
|
||||
case 't' : opts.total = TRUE;
|
||||
break;
|
||||
case 's' : opts.script = TRUE;
|
||||
break;
|
||||
case 'm' : opts.human = TRUE;
|
||||
break;
|
||||
case 'b' : opts.bits = TRUE;
|
||||
break;
|
||||
case 'c' : opts.ccount = TRUE;
|
||||
break;
|
||||
case 'r' : opts.rate = TRUE;
|
||||
break;
|
||||
case 'u' : opts.samples = TRUE;
|
||||
break;
|
||||
case 'h' : print_help(argv[0]);
|
||||
exit(0);
|
||||
case '?' : print_usage(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* No file? */
|
||||
if (argc-optind == 0) {
|
||||
print_help(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* Well, let's not just shut up if options are out of context, let's whine
|
||||
* about it a bit so that people know why they're not getting what they
|
||||
* expected. */
|
||||
if (!opts.script) {
|
||||
/* If not in script mode then we should check and make sure that we warn
|
||||
* if script options have been set. I assume it's fine to spit to stdout
|
||||
* here. */
|
||||
/* Local string where we store naughty switches. */
|
||||
char badopts[10] = "\0";
|
||||
|
||||
/* Off we go. */
|
||||
if (opts.format) { strcat(badopts, "f"); }
|
||||
if (opts.bits) { strcat(badopts, "b"); }
|
||||
if (opts.ccount) { strcat(badopts, "c"); }
|
||||
if (opts.rate) { strcat(badopts, "r"); }
|
||||
if (opts.human) { strcat(badopts, "m"); }
|
||||
if (opts.samples) { strcat(badopts, "u"); }
|
||||
if (strlen(badopts)) {
|
||||
printf("-%s :: Out of context options will be ignored.\n",
|
||||
badopts);
|
||||
}
|
||||
} else {
|
||||
/* Now, if we're in script mode we want to make sure of a few things,
|
||||
* we also want to warn on stderr, of course. */
|
||||
char badopts[20] = "\0";
|
||||
|
||||
/* The whole format thing is a bit complex so I guess we want to help
|
||||
* out. */
|
||||
if (!opts.format) {
|
||||
if (opts.bits) { strcat(badopts, "b"); }
|
||||
if (opts.ccount) { strcat(badopts, "c"); }
|
||||
if (opts.rate) { strcat(badopts, "r"); }
|
||||
if (strlen(badopts) == 1) {
|
||||
fprintf(stderr, "You can't specify -%s just like that, you need to enter format mode with -f.\n", badopts);
|
||||
}
|
||||
if (strlen(badopts) > 1) {
|
||||
fprintf(stderr, "Look out, you're not in format mode and you have more than one format specifier anyway: just use the -h switch for now.\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* Catch-all piece of logic to filter errors. */
|
||||
if ((opts.script) && (((opts.format) && (opts.human)) || ((opts.format)
|
||||
&& (((opts.bits) && ((opts.ccount) ||
|
||||
(opts.rate))) ||
|
||||
((opts.ccount) && (opts.rate)))) ||
|
||||
(opts.samples && (opts.format || opts.human)))) {
|
||||
fprintf(stderr, "Error: In script mode not more than one further mode can be specified.\n");
|
||||
print_usage(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Setting things up. */
|
||||
eci_init();
|
||||
eci_command("cs-add main");
|
||||
eci_command("c-add main");
|
||||
eci_command("ao-add null");
|
||||
|
||||
/* Setting the format if needed. */
|
||||
if (opts.adjust) {
|
||||
if (strncmp(":", fstring, 1) == 0) { sprintf(cmd, "cs-set-audio-format %s", fstring+1); }
|
||||
else { sprintf(cmd, "cs-set-audio-format %s", fstring); }
|
||||
eci_command(cmd);
|
||||
if (strlen(eci_last_error()) != 0) {
|
||||
fprintf(stderr, "Argument to -a is badly formatted.\n");
|
||||
print_usage(argv[0]);
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
curarg = optind;
|
||||
|
||||
/* The real thing. */
|
||||
while(curarg < argc) {
|
||||
if ((file = fopen(argv[curarg], "r")) != NULL) {
|
||||
fclose(file);
|
||||
sprintf(cmd, "ai-add \"%s\"", argv[curarg]);
|
||||
eci_command(cmd);
|
||||
eci_command("cs-connect");
|
||||
if (strlen(eci_last_error()) == 0) {
|
||||
sprintf(cmd, "ai-select \"%s\"", argv[curarg]);
|
||||
eci_command(cmd);
|
||||
eci_command("ai-get-length");
|
||||
curfilelength = eci_last_float();
|
||||
if (opts.format) {
|
||||
eci_command("ai-get-format");
|
||||
strcpy(fstring, eci_last_string());
|
||||
}
|
||||
|
||||
/* We wanted to print the length in samples so we've done nothing
|
||||
* all along; let's act now. */
|
||||
if (opts.script && opts.samples) {
|
||||
long samplecount;
|
||||
|
||||
eci_command("ai-get-length-samples");
|
||||
samplecount = eci_last_long_integer();
|
||||
printf("%li", samplecount);
|
||||
}
|
||||
|
||||
/* Here cometh the cleansing. */
|
||||
eci_command("cs-disconnect");
|
||||
eci_command("ai-remove");
|
||||
|
||||
/* Need we humanize ourselves? */
|
||||
if (!(opts.script) || ((opts.script && opts.human))) {
|
||||
make_human((int)(curfilelength+0.5), &min, &sec);
|
||||
}
|
||||
|
||||
if (!(opts.script)) { printf("%s: ", argv[curarg]); }
|
||||
if (!(opts.script) ||
|
||||
((opts.script) && (!(opts.format) && !(opts.human) &&
|
||||
!(opts.samples)))) {
|
||||
printf("%.3f", curfilelength);
|
||||
}
|
||||
if (!(opts.script)) { printf("s \t("); }
|
||||
if (!(opts.script) || ((opts.script) && (opts.human))) {
|
||||
printf("%im%is", min, sec);
|
||||
}
|
||||
if (!(opts.script)) { printf(")"); }
|
||||
if ((opts.format) &&
|
||||
!((opts.format) && ((opts.bits) || (opts.ccount) || (opts.rate)))) {
|
||||
if (!(opts.script)) { printf(" \t"); }
|
||||
printf("%s", fstring);
|
||||
}
|
||||
|
||||
if ((opts.format) && (opts.script) && (opts.bits)) {
|
||||
printf("%s", strtok(fstring+1, "_"));
|
||||
}
|
||||
|
||||
if ((opts.script) && (opts.format) && (opts.ccount)) {
|
||||
strtok(fstring, ",");
|
||||
printf("%s", strtok(NULL, ","));
|
||||
}
|
||||
|
||||
if ((opts.format) && (opts.script) && (opts.rate)) {
|
||||
strtok(fstring, ",");
|
||||
strtok(NULL, ",");
|
||||
printf("%s", strtok(NULL, ","));
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
|
||||
if ((opts.total) && !(opts.script)) {
|
||||
totlength += curfilelength;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (opts.script) { printf("-2\n"); }
|
||||
else { printf("%s: Read error.\n", argv[curarg]); }
|
||||
status = -2;
|
||||
eci_command("ai-remove");
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (opts.script) { printf("-1\n"); }
|
||||
else { printf("%s: fopen error.\n", argv[curarg]); }
|
||||
status = -1;
|
||||
}
|
||||
curarg++;
|
||||
}
|
||||
|
||||
if ((opts.total) && !(opts.script)) {
|
||||
/* This could be made a script option as well, does anyone care? */
|
||||
make_human((int)(totlength+0.5), &min, &sec);
|
||||
printf("Total: %.3fs \t\t(%im%is)\n", totlength, min, sec);
|
||||
}
|
||||
|
||||
eci_command("cs-remove");
|
||||
eci_cleanup();
|
||||
exit(status);
|
||||
}
|
||||
|
||||
void make_human(int length, unsigned int *min, unsigned char *sec) {
|
||||
*min = (length/60);
|
||||
*sec = (length % 60);
|
||||
}
|
||||
|
||||
void print_help(char *name) {
|
||||
printf("Usage: %s [-ahtsfmbcru] FILE1 [FILE2] [FILEn]\n "
|
||||
"\t-h Prints this usage message. (help)\n"
|
||||
"\t-a[:]bits,channels,rate Changes the format assumed by default \n"
|
||||
"\t for headerless data. (adjust)\n"
|
||||
"\t-t Prints the summed length of all the files processed. (total)\n"
|
||||
"\t (Ignored if with -s) \n"
|
||||
"\t-s Enables script mode: One info type per file per line. (script)\n"
|
||||
"\t (Defaults to length in secs.) \n"
|
||||
"\t-f With -s will return the format string as info, alone it will \n"
|
||||
"\t add it to the main display. (format)\n"
|
||||
"\t -b If -s and -f are enabled with this the info printed will be \n"
|
||||
"\t the sample's bitwidth. (bits)\n"
|
||||
"\t -c If -s and -f are enabled with this the info printed will be \n"
|
||||
"\t the channel count. (channel count)\n"
|
||||
"\t -r If -s and -f are enabled with this the info printed will be \n"
|
||||
"\t the sampling rate. (rate)\n"
|
||||
"\t-m Will print human computable time as in main display but in \n"
|
||||
"\t batch fashion. (minutes)\n"
|
||||
"\t (Only with -s)\n"
|
||||
"\t-u This batchmode option returns the length of specified files \n"
|
||||
"\t in samples. (Smallest Unit)\n"
|
||||
"\t (This information is worthless if you don't know the sampling \n"
|
||||
"\t rate of the file.) (Only with -s)\n"
|
||||
"(Note that out of context options will be ignored.)\n\n", name);
|
||||
}
|
||||
|
||||
void print_usage(char *name) {
|
||||
printf("Usage: %s [-ahtsfmbcru] FILE1 [FILE2] [FILEn]\n\n\t Use the -h switch for help or see the man page.\n\n", name);
|
||||
}
|
|
@ -0,0 +1,237 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# ------------------------------------------------------------------------
|
||||
# ecamonitor: Ecasound monitor client implemented using NetECI
|
||||
# Copyright (C) 2002-2003,2009 Kai Vehmanen
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# ------------------------------------------------------------------------
|
||||
|
||||
import curses
|
||||
import re
|
||||
import socket
|
||||
import string
|
||||
import sys
|
||||
import time
|
||||
|
||||
ecamonitor_remote_host = "localhost"
|
||||
ecamonitor_remote_port = 2868
|
||||
ecamonitor_version = "v20090419-7"
|
||||
|
||||
# TODO:
|
||||
# - nothing at the moment
|
||||
|
||||
# References:
|
||||
# - http://www.python.org/doc/essays/styleguide.html
|
||||
# - http://py-howto.sourceforge.net/curses/curses.html
|
||||
# - http://www.python.org/doc/2.2.2/lib/module-curses.html
|
||||
# - http://py-howto.sourceforge.net/regex/regex.html
|
||||
# - http://www.python.org/doc/2.2.2/lib/module-re.html
|
||||
# - http://py-howto.sourceforge.net/sockets/sockets.html
|
||||
# - http://www.python.org/doc/2.2.2/lib/module-string.html
|
||||
|
||||
def connect_to_server(remote_host, remote_port):
|
||||
"""Connects to the ecasound server.
|
||||
|
||||
@return Socket object for the connection.
|
||||
"""
|
||||
|
||||
while 1:
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.connect((remote_host, remote_port))
|
||||
s.setblocking(1)
|
||||
return(s)
|
||||
|
||||
except Exception, e:
|
||||
if e[0] == 111: # 111 = connection refused
|
||||
time.sleep(1)
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
|
||||
def issue_eiam_command(s, cmd):
|
||||
"""Sends a command to ecasound and waits for an response.
|
||||
|
||||
@param s socket for an active connection
|
||||
@param cmd EIAM command to send
|
||||
|
||||
@return tuple of return value type and value
|
||||
"""
|
||||
|
||||
tm = ''
|
||||
counter = 0
|
||||
s.send(cmd + '\r\n')
|
||||
while counter < 16:
|
||||
count = counter + 1
|
||||
newdata = s.recv(4096)
|
||||
if len(newdata) == 0:
|
||||
return ('e','')
|
||||
|
||||
tm = tm + newdata
|
||||
|
||||
# lets test whether we have received a valid
|
||||
# EIAM command
|
||||
try:
|
||||
m = expand_eiam_response(tm)
|
||||
return parse_eiam_response(m, tm)
|
||||
|
||||
except Exception, e:
|
||||
pass
|
||||
|
||||
return ('e','')
|
||||
|
||||
def expand_eiam_response(str):
|
||||
"""Checks wheter 'str' is a valid EIAM response.
|
||||
|
||||
@return Regex match object.
|
||||
"""
|
||||
|
||||
m = re.match('256 ([0-9]{1,5}) (.+)\r\n(.*)\r\n\r\n.*', str, re.MULTILINE | re.S)
|
||||
return m
|
||||
|
||||
def parse_eiam_response(m, str):
|
||||
"""Parses a valid EIAM response.
|
||||
|
||||
@param m Valid regex match object.
|
||||
@param str The whole EIAM response.
|
||||
|
||||
@return tuple of return value type and value
|
||||
"""
|
||||
|
||||
if not m:
|
||||
m = re.match('256 ([0-9]{1,5}) (.+)\r\n(.*)', str, re.MULTILINE | re.S)
|
||||
if not m:
|
||||
raise Exception, 'Regexp failed!'
|
||||
|
||||
if m and len(m.groups()) == 0:
|
||||
print "(ecamonitor) Matching groups failed: ", m.groups()
|
||||
|
||||
if m and len(m.groups()) == 3:
|
||||
#print 'received=', len(m.group(3)), ', expected=', m.group(1)
|
||||
if int(m.group(1)) != len(m.group(3)):
|
||||
print "(ecamonitor) Response length error."
|
||||
|
||||
if m:
|
||||
return (m.group(2), m.group(3))
|
||||
|
||||
return ('e','')
|
||||
|
||||
def main():
|
||||
|
||||
s = None
|
||||
|
||||
remote_host = ecamonitor_remote_host
|
||||
remote_port = ecamonitor_remote_port
|
||||
|
||||
if not hasattr(sys, 'version_info') or (hasattr(sys, 'version_info') and sys.version_info[1] <2):
|
||||
print 'Error! Ecamonitor requires python-2.0 or newer to run!'
|
||||
return 1
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
destination = sys.argv[1]
|
||||
address = string.split(destination, ':')
|
||||
remote_host = address[0]
|
||||
if len(address) > 1:
|
||||
remote_port = int(address[1])
|
||||
|
||||
try:
|
||||
stdscr = curses.initscr()
|
||||
pad = curses.newpad(255, 80)
|
||||
pad.nodelay(1) # to make getch() nonblocking
|
||||
|
||||
while 1:
|
||||
try:
|
||||
pad.erase()
|
||||
pad.addstr(0, 0, "ecamonitor " + ecamonitor_version, curses.A_BOLD)
|
||||
|
||||
if s == None:
|
||||
pad.addstr(2, 0, "No connection. Trying to connect to " + remote_host + ":" + str(remote_port) + ".\n")
|
||||
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
|
||||
#time.sleep(3)
|
||||
s = connect_to_server(remote_host, remote_port)
|
||||
pad.addstr(3, 0, "Connection established.\n")
|
||||
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
|
||||
pad.addstr(1, 0, "")
|
||||
else:
|
||||
pad.addstr("\n")
|
||||
|
||||
pad.addstr("\n------------------------------------------------------------")
|
||||
pad.addstr("\nEngine status: ")
|
||||
pad.addstr((issue_eiam_command(s, 'engine-status')[1]), curses.A_BOLD)
|
||||
pad.addstr("\nConnected chainsetup: ")
|
||||
pad.addstr(issue_eiam_command(s, 'cs-connected')[1], curses.A_BOLD)
|
||||
pad.addstr("\nSelected chainsetup: ")
|
||||
pad.addstr(issue_eiam_command(s, 'cs-selected')[1], curses.A_BOLD)
|
||||
|
||||
#pad.addstr("\nSelected chainsetup status:: ")
|
||||
#pad.addstr(issue_eiam_command(s, 'cs-status')[1])
|
||||
|
||||
pad.addstr("\n\nPosition: ")
|
||||
pad.addstr(issue_eiam_command(s, 'cs-get-position')[1] + "s", curses.A_BOLD)
|
||||
pad.addstr(" / Length: ")
|
||||
pad.addstr(issue_eiam_command(s, 'cs-get-length')[1] + "s", curses.A_BOLD)
|
||||
pad.addstr("\nChains: ")
|
||||
pad.addstr(str(len(string.split(issue_eiam_command(s, 'c-list')[1],','))), curses.A_BOLD)
|
||||
pad.addstr(" / Inputs: ")
|
||||
pad.addstr(str(len(string.split(issue_eiam_command(s, 'ai-list')[1],','))), curses.A_BOLD)
|
||||
pad.addstr(" / Outputs: ")
|
||||
pad.addstr(str(len(string.split(issue_eiam_command(s, 'ao-list')[1],','))), curses.A_BOLD)
|
||||
|
||||
pad.addstr("\n\n------------------------------------------------------------\n")
|
||||
res = issue_eiam_command(s, 'aio-status')
|
||||
pad.addstr(res[1])
|
||||
|
||||
pad.addstr("\n\n------------------------------------------------------------\n")
|
||||
res = issue_eiam_command(s, 'cop-status')
|
||||
pad.addstr(res[1])
|
||||
|
||||
pad.addstr("\n\n------------------------------------------------------------\n")
|
||||
res = issue_eiam_command(s, 'ctrl-status')
|
||||
pad.addstr(res[1])
|
||||
|
||||
pad.addstr("\n\n------------------------------------------------------------\n")
|
||||
|
||||
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
|
||||
|
||||
time.sleep(1.0)
|
||||
|
||||
ch=pad.getch()
|
||||
if ch == ord('q'):
|
||||
break
|
||||
|
||||
except curses.error:
|
||||
raise
|
||||
|
||||
except socket.error, e:
|
||||
if e[0] == 32 or e[0] == 104 or e[0] == 111:
|
||||
s = None
|
||||
pass
|
||||
else:
|
||||
curses.endwin()
|
||||
print "Exception!" , e
|
||||
raise
|
||||
|
||||
except KeyboardInterrupt:
|
||||
break
|
||||
|
||||
|
||||
finally:
|
||||
if s != None:
|
||||
s.close()
|
||||
curses.endwin()
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
|
@ -0,0 +1,233 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecanormalize.cpp: A simple command-line tools for normalizing
|
||||
// sample volume.
|
||||
// Copyright (C) 1999-2006 Kai Vehmanen
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
#include <cstdio>
|
||||
#include <signal.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <kvutils/kvu_com_line.h>
|
||||
#include <kvutils/kvu_temporary_file_directory.h>
|
||||
#include <kvutils/kvu_numtostr.h>
|
||||
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
#include "ecicpp_helpers.h"
|
||||
|
||||
/**
|
||||
* Definitions and options
|
||||
*/
|
||||
|
||||
using std::cerr;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::string;
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
|
||||
static void ecanormalize_print_usage(void);
|
||||
static void ecanormalize_signal_handler(int signum);
|
||||
|
||||
/**
|
||||
* Definitions and options
|
||||
*/
|
||||
|
||||
#define ECANORMALIZE_PHASE_ANALYSIS 0
|
||||
#define ECANORMALIZE_PHASE_PROCESSING 1
|
||||
#define ECANORMALIZE_PHASE_MAX 2
|
||||
|
||||
/**
|
||||
* Global variables
|
||||
*/
|
||||
|
||||
static const string ecatools_normalize_version = "20050316-27";
|
||||
static string ecatools_normalize_tempfile;
|
||||
|
||||
/**
|
||||
* Function definitions
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
struct sigaction es_handler;
|
||||
es_handler.sa_handler = ecanormalize_signal_handler;
|
||||
sigemptyset(&es_handler.sa_mask);
|
||||
es_handler.sa_flags = 0;
|
||||
|
||||
sigaction(SIGTERM, &es_handler, 0);
|
||||
sigaction(SIGINT, &es_handler, 0);
|
||||
sigaction(SIGQUIT, &es_handler, 0);
|
||||
sigaction(SIGABRT, &es_handler, 0);
|
||||
|
||||
struct sigaction ign_handler;
|
||||
ign_handler.sa_handler = SIG_IGN;
|
||||
sigemptyset(&ign_handler.sa_mask);
|
||||
ign_handler.sa_flags = 0;
|
||||
|
||||
/* ignore the following signals */
|
||||
sigaction(SIGPIPE, &ign_handler, 0);
|
||||
sigaction(SIGFPE, &ign_handler, 0);
|
||||
|
||||
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
|
||||
|
||||
if (cline.size() < 2) {
|
||||
ecanormalize_print_usage();
|
||||
return(1);
|
||||
}
|
||||
|
||||
try {
|
||||
string filename;
|
||||
double multiplier = 1.0f;
|
||||
|
||||
TEMPORARY_FILE_DIRECTORY tempfile_dir_rep;
|
||||
string tmpdir ("ecatools-");
|
||||
char* tmp_p = getenv("LOGNAME");
|
||||
if (tmp_p == NULL) tmp_p = getenv("USER");
|
||||
if (tmp_p != NULL) {
|
||||
tmpdir += string(tmp_p);
|
||||
tempfile_dir_rep.reserve_directory(tmpdir);
|
||||
}
|
||||
if (tempfile_dir_rep.is_valid() != true) {
|
||||
cerr << "---\nError while creating temporary directory \"" << tmpdir << "\". Exiting...\n";
|
||||
return(0);
|
||||
}
|
||||
|
||||
ecatools_normalize_tempfile = tempfile_dir_rep.create_filename("normalize-tmp", ".wav");
|
||||
|
||||
ECA_CONTROL_INTERFACE eci;
|
||||
|
||||
cline.begin();
|
||||
cline.next(); // skip the program name
|
||||
while(cline.end() == false) {
|
||||
filename = cline.current();
|
||||
|
||||
for(int m = 0; m < ECANORMALIZE_PHASE_MAX; m++) {
|
||||
|
||||
eci.command("cs-add default");
|
||||
eci.command("c-add default");
|
||||
if (m == ECANORMALIZE_PHASE_ANALYSIS) {
|
||||
cout << "Analyzing file \"" << filename << "\".\n";
|
||||
|
||||
string format;
|
||||
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
cout << "Opening temp file \"" << ecatools_normalize_tempfile << "\".\n";
|
||||
if (ecicpp_add_output(&eci, ecatools_normalize_tempfile, format) < 0) break;
|
||||
|
||||
eci.command("cop-add -ev");
|
||||
eci.command("cop-list");
|
||||
if (eci.last_string_list().size() != 1) {
|
||||
cerr << eci.last_error() << endl;
|
||||
cerr << "---\nError while adding -ev chainop. Exiting...\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
string format;
|
||||
if (ecicpp_add_file_input(&eci, ecatools_normalize_tempfile, &format) < 0) break;
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
if (ecicpp_add_output(&eci, filename, format) < 0) break;
|
||||
|
||||
eci.command("cop-add -ea:" + kvu_numtostr(multiplier * 100.0f));
|
||||
eci.command("cop-list");
|
||||
if (eci.last_string_list().size() != 1) {
|
||||
cerr << eci.last_error() << endl;
|
||||
cerr << "---\nError while adding -ev chainop. Exiting...\n";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
cout << "Starting processing...\n";
|
||||
|
||||
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
|
||||
break;
|
||||
}
|
||||
else {
|
||||
// blocks until processing is done
|
||||
eci.command("run");
|
||||
}
|
||||
|
||||
cout << "Processing finished.\n";
|
||||
|
||||
if (m == ECANORMALIZE_PHASE_ANALYSIS) {
|
||||
eci.command("cop-select 1");
|
||||
eci.command("copp-select 2"); /* 2nd param of -ev, first one
|
||||
* sets the mode */
|
||||
eci.command("copp-get");
|
||||
multiplier = eci.last_float();
|
||||
if (multiplier <= 1.0) {
|
||||
cout << "File \"" << filename << "\" is already normalized.\n";
|
||||
|
||||
eci.command("cs-disconnect");
|
||||
eci.command("cs-select default");
|
||||
eci.command("cs-remove");
|
||||
break;
|
||||
}
|
||||
else {
|
||||
cout << "Normalizing file \"" << filename << "\" (amp-%: ";
|
||||
cout << multiplier * 100.0 << ").\n";
|
||||
}
|
||||
}
|
||||
|
||||
eci.command("cs-disconnect");
|
||||
eci.command("cs-select default");
|
||||
eci.command("cs-remove");
|
||||
}
|
||||
|
||||
cout << "Removing temp file \"" << ecatools_normalize_tempfile << "\".\n";
|
||||
|
||||
remove(ecatools_normalize_tempfile.c_str());
|
||||
|
||||
cline.next();
|
||||
}
|
||||
}
|
||||
catch(...) {
|
||||
cerr << "\nCaught an unknown exception.\n";
|
||||
}
|
||||
return(0);
|
||||
}
|
||||
|
||||
static void ecanormalize_print_usage(void)
|
||||
{
|
||||
cerr << "****************************************************************************\n";
|
||||
cerr << "* ecanormalize, v" << ecatools_normalize_version << " (" << VERSION << ")\n";
|
||||
cerr << "* (C) 1997-2004 Kai Vehmanen, released under the GPL license\n";
|
||||
cerr << "****************************************************************************\n";
|
||||
|
||||
cerr << "\nUSAGE: ecanormalize file1 [ file2, ... fileN ]\n\n";
|
||||
}
|
||||
|
||||
static void ecanormalize_signal_handler(int signum)
|
||||
{
|
||||
cerr << "Unexpected interrupt... cleaning up.\n";
|
||||
remove(ecatools_normalize_tempfile.c_str());
|
||||
exit(1);
|
||||
}
|
|
@ -0,0 +1,757 @@
|
|||
/**
|
||||
* ecaplay.c: A simple command-line tool for playing audio files.
|
||||
*
|
||||
* Copyright (C) 1999-2002,2004-2006 Kai Vehmanen
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
/**
|
||||
* TODO:
|
||||
* - show playlist length during runtime
|
||||
* - random start switch (both for cmdline and playlist modes)
|
||||
* - write some notes about locking issues
|
||||
*/
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h> /* ANSI-C: malloc(), free() */
|
||||
#include <string.h> /* ANSI-C: strlen(), strncmp() */
|
||||
|
||||
#include <unistd.h> /* POSIX: ... */
|
||||
#include <signal.h> /* POSIX: sigaction() */
|
||||
#include <sys/stat.h> /* POSIX: mkdir() */
|
||||
#include <sys/types.h> /* POSIX: mkdir() */
|
||||
|
||||
#include <ecasoundc.h>
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
|
||||
static void add_input_to_chainsetup(eci_handle_t eci, const char* nextrack);
|
||||
static int flush_tracks(void);
|
||||
static const char* get_next_track(int *tracknum, int argc, char *argv[], eci_handle_t *eci);
|
||||
static char* get_playlist_path(void);
|
||||
static const char* get_track_cmdline(int n, int argc, char *argv[]);
|
||||
static const char* get_track_playlist(int* next_track);
|
||||
static void initialize_chainsetup_for_playback(eci_handle_t* eci, const char* nexttrack, int tracknum);
|
||||
static void initialize_check_output(eci_handle_t* eci);
|
||||
static int list_tracks(void);
|
||||
static int play_tracks(int argc, char *argv[]);
|
||||
static void print_usage(FILE* stream);
|
||||
static int process_option(const char* option);
|
||||
static int queue_tracks(int argc, char *argv[]);
|
||||
static int set_audio_format(eci_handle_t* eci, const char* fmt);
|
||||
static void setup_signal_handling(void);
|
||||
static void signal_handler(int signum);
|
||||
|
||||
/**
|
||||
* Definitions and options
|
||||
*/
|
||||
|
||||
#define ECAPLAY_AFMT_MAXLEN 64
|
||||
#define ECAPLAY_EIAM_LOGLEVEL 256
|
||||
#define ECAPLAY_TIMEOUT 3
|
||||
|
||||
#define ECAPLAY_MODE_NORMAL 0
|
||||
#define ECAPLAY_MODE_PL_FLUSH 1
|
||||
#define ECAPLAY_MODE_PL_LIST 2
|
||||
#define ECAPLAY_MODE_PL_PLAY 3
|
||||
#define ECAPLAY_MODE_PL_QUEUE 4
|
||||
|
||||
#define ECAPLAY_PLAYLIST_BASEDIR ".ecasound"
|
||||
#define ECAPLAY_PLAYLIST_FILE "ecaplay_queue"
|
||||
|
||||
/**
|
||||
* Global variables
|
||||
*/
|
||||
|
||||
static const char* ecaplay_version = "20061206-45"; /* ecaplay version */
|
||||
static char ecaplay_next[PATH_MAX]; /* file to play next */
|
||||
static char ecaplay_audio_format[ECAPLAY_AFMT_MAXLEN]; /* audio format to use */
|
||||
static const char* ecaplay_output = NULL; /* output device to use */
|
||||
static int ecaplay_debuglevel = ECAPLAY_EIAM_LOGLEVEL; /* debug level to use */
|
||||
static int ecaplay_skip = 0; /* how many playlist items to skip */
|
||||
static int ecaplay_mode = ECAPLAY_MODE_NORMAL; /* playlist mode */
|
||||
/* FIX: static int ecaplay_list_len = -1; playlist length */
|
||||
static int ecaplay_initialized = 0; /* playlist mode */
|
||||
static sig_atomic_t ecaplay_skip_flag = 0; /* signal flag for ctrl-c */
|
||||
|
||||
/**
|
||||
* Function definitions
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int i, res = 0;
|
||||
|
||||
/* get the default output device */
|
||||
ecaplay_output = getenv("ECAPLAY_OUTPUT_DEVICE");
|
||||
|
||||
/* process command-line arguments */
|
||||
for(i = 1; i < argc; i++) { res += process_option(argv[i]); }
|
||||
|
||||
if (res == 0) {
|
||||
switch(ecaplay_mode) {
|
||||
case ECAPLAY_MODE_PL_FLUSH:
|
||||
res = flush_tracks();
|
||||
break;
|
||||
|
||||
case ECAPLAY_MODE_PL_LIST:
|
||||
res = list_tracks();
|
||||
break;
|
||||
|
||||
case ECAPLAY_MODE_PL_QUEUE:
|
||||
res = queue_tracks(argc, argv);
|
||||
break;
|
||||
|
||||
case ECAPLAY_MODE_NORMAL:
|
||||
case ECAPLAY_MODE_PL_PLAY:
|
||||
res = play_tracks(argc, argv);
|
||||
break;
|
||||
|
||||
default:
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (res != 0) {
|
||||
fprintf(stderr, "(ecaplay) Errors encountered, return code is %d.\n", res);
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds input 'nexttrack' to currently selected chainsetup
|
||||
* of 'eci'. Sets the global variable 'ecaplay_audio_format'.
|
||||
*/
|
||||
static void add_input_to_chainsetup(eci_handle_t eci, const char* nexttrack)
|
||||
{
|
||||
size_t len = strlen("ai-add '") + strlen(nexttrack) + strlen("'") + 1;
|
||||
char* tmpbuf = malloc(len);
|
||||
|
||||
assert(tmpbuf != NULL);
|
||||
snprintf(tmpbuf, len, "ai-add \"%s\"", nexttrack);
|
||||
eci_command_r(eci, tmpbuf);
|
||||
|
||||
/* check that add succeeded */
|
||||
eci_command_r(eci, "ai-list");
|
||||
if (eci_last_string_list_count_r(eci) != 1) {
|
||||
fprintf(stderr, "(ecaplay) Warning! Failed to add input '%s'.\n", nexttrack);
|
||||
}
|
||||
|
||||
/* we must connect to get correct input format */
|
||||
eci_command_r(eci, "ao-add null");
|
||||
eci_command_r(eci, "cs-connect");
|
||||
eci_command_r(eci, "ai-iselect 1");
|
||||
eci_command_r(eci, "ai-get-format");
|
||||
|
||||
strncpy(ecaplay_audio_format,
|
||||
eci_last_string_r(eci),
|
||||
ECAPLAY_AFMT_MAXLEN);
|
||||
ecaplay_audio_format[ECAPLAY_AFMT_MAXLEN - 1] = 0;
|
||||
|
||||
/* disconnect and remove the null output */
|
||||
eci_command_r(eci, "cs-disconnect");
|
||||
eci_command_r(eci, "ao-iselect 1");
|
||||
eci_command_r(eci, "ao-remove");
|
||||
|
||||
free(tmpbuf);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flushes the playlist contents.
|
||||
*
|
||||
* @return zero on success, non-zero otherwise
|
||||
*/
|
||||
static int flush_tracks(void)
|
||||
{
|
||||
char *path = get_playlist_path();
|
||||
if (truncate(path, 0) != 0) {
|
||||
printf("(ecaplay) Unable to flush playlist '%s'.\n", path);
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that current chainsetup has exactly one
|
||||
* output.
|
||||
*/
|
||||
static void initialize_check_output(eci_handle_t* eci)
|
||||
{
|
||||
eci_command_r(eci, "ao-list");
|
||||
if (eci_last_string_list_count_r(eci) != 1) {
|
||||
fprintf(stderr, "(ecaplay) Warning! Failed to add output device.\n");
|
||||
}
|
||||
else {
|
||||
static int once = 1;
|
||||
if (once) {
|
||||
eci_command_r(eci, "ao-iselect 1");
|
||||
eci_command_r(eci, "ao-describe");
|
||||
char *tmpstr = (char*)eci_last_string_r(eci);
|
||||
/* skip the "-x:" prefix where x is one of [io] */
|
||||
while(*tmpstr && *tmpstr++ != ':')
|
||||
;
|
||||
printf("(ecaplay) Output device: '%s'\n", tmpstr);
|
||||
once = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void initialize_chainsetup_for_playback(eci_handle_t* eci, const char* nexttrack, int tracknum)
|
||||
{
|
||||
const char* ret = NULL;
|
||||
|
||||
*eci = eci_init_r();
|
||||
ecaplay_initialized = 1;
|
||||
|
||||
if (ecaplay_debuglevel != -1) {
|
||||
char tmpbuf[32];
|
||||
snprintf(tmpbuf, 32, "debug %d", ecaplay_debuglevel);
|
||||
eci_command_r(*eci, tmpbuf);
|
||||
}
|
||||
|
||||
eci_command_r(*eci, "cs-add ecaplay_chainsetup");
|
||||
/* check that add succeeded */
|
||||
eci_command_r(*eci, "cs-list");
|
||||
if (eci_last_string_list_count_r(*eci) != 2) {
|
||||
fprintf(stderr, "(ecaplay) Warning! Failed to add a new chainsetup.\n");
|
||||
}
|
||||
|
||||
/* as this is a new chainsetup, we can assume that
|
||||
* adding chains succeeds */
|
||||
eci_command_r(*eci, "c-add ecaplay_chain");
|
||||
|
||||
add_input_to_chainsetup(*eci, nexttrack);
|
||||
set_audio_format(*eci, ecaplay_audio_format);
|
||||
|
||||
if (ecaplay_output == NULL) {
|
||||
eci_command_r(*eci, "ao-add-default");
|
||||
|
||||
/* check that add succeeded */
|
||||
initialize_check_output(*eci);
|
||||
}
|
||||
else {
|
||||
int len = strlen("ao-add ") + strlen(ecaplay_output) + 1;
|
||||
char* tmpbuf = (char*)malloc(len);
|
||||
snprintf(tmpbuf, len, "ao-add %s", ecaplay_output);
|
||||
eci_command_r(*eci, tmpbuf);
|
||||
initialize_check_output(*eci);
|
||||
free(tmpbuf);
|
||||
}
|
||||
|
||||
/* FIXME: add detection of consecutive errors */
|
||||
|
||||
eci_command_r(*eci, "cs-connect");
|
||||
if (eci_error_r(*eci)) {
|
||||
fprintf(stderr, "(ecaplay) Unable to play file '%s':\n%s\n", nexttrack, eci_last_error_r(*eci));
|
||||
}
|
||||
else {
|
||||
eci_command_r(*eci, "cs-connected");
|
||||
ret = eci_last_string_r(*eci);
|
||||
if (strncmp(ret, "ecaplay_chainsetup", strlen("ecaplay_chainsetup")) != 0) {
|
||||
fprintf(stderr, "(ecaplay) Error while playing file '%s' . Skipping...\n", nexttrack);
|
||||
}
|
||||
else {
|
||||
/* note: audio format set separately for each input file */
|
||||
printf("(ecaplay) Playing %d: '%s' (%s).\n", tracknum, nexttrack, ecaplay_audio_format);
|
||||
eci_command_r(*eci, "start");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static const char* get_next_track(int *tracknum, int argc, char *argv[], eci_handle_t *eci)
|
||||
{
|
||||
const char *nexttrack = NULL;
|
||||
|
||||
if (ecaplay_mode == ECAPLAY_MODE_PL_PLAY)
|
||||
nexttrack = get_track_playlist(tracknum);
|
||||
else
|
||||
nexttrack = get_track_cmdline(*tracknum, argc, argv);
|
||||
|
||||
if (nexttrack != NULL) {
|
||||
/* queue nexttrack for playing */
|
||||
if (ecaplay_initialized) {
|
||||
eci_cleanup_r(*eci);
|
||||
}
|
||||
initialize_chainsetup_for_playback(eci, nexttrack, *tracknum);
|
||||
}
|
||||
else {
|
||||
/* reached end of playlist */
|
||||
if (ecaplay_mode != ECAPLAY_MODE_PL_PLAY) {
|
||||
/* normal mode; end processing after all files played */
|
||||
/* printf("(ecaplay) No more files...\n"); */
|
||||
assert(nexttrack == NULL);
|
||||
}
|
||||
else {
|
||||
/* if in playlist mode, loop from beginning */
|
||||
*tracknum = 1;
|
||||
|
||||
/* FIXME: if in playlist mode; query the current lenght of
|
||||
* playlist and set 'tracknum = (tracknum % pllen)' */
|
||||
|
||||
if (ecaplay_mode == ECAPLAY_MODE_PL_PLAY)
|
||||
nexttrack = get_track_playlist(tracknum);
|
||||
else
|
||||
nexttrack = get_track_cmdline(*tracknum, argc, argv);
|
||||
|
||||
/* printf("(ecaplay) Looping back to start of playlist...(%s)\n", nexttrack); */
|
||||
|
||||
if (nexttrack != NULL) {
|
||||
/* queue nexttrack for playing */
|
||||
if (ecaplay_initialized) {
|
||||
eci_cleanup_r(*eci);
|
||||
}
|
||||
initialize_chainsetup_for_playback(eci, nexttrack, *tracknum);
|
||||
}
|
||||
else {
|
||||
/* get_next_track() failed two times, stopping processing */
|
||||
assert(nexttrack == NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nexttrack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the track number 'n' from the list
|
||||
* given in argc and argv.
|
||||
*
|
||||
* @return track name or NULL on error
|
||||
*/
|
||||
static const char* get_track_cmdline(int n, int argc, char *argv[])
|
||||
{
|
||||
int i, c = 0;
|
||||
|
||||
assert(n > 0 && n <= argc);
|
||||
|
||||
for(i = 1; i < argc; i++) {
|
||||
/* FIXME: add support for '-- -foo.wav' */
|
||||
if (argv[i][0] != '-') {
|
||||
if (++c == n) {
|
||||
return argv[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a string containing the full path to the
|
||||
* playlist file. Ownership of the string is transfered
|
||||
* to the caller (i.e. it must be free()'ed).
|
||||
*
|
||||
* @return full pathname or NULL if error has occured
|
||||
*/
|
||||
static char* get_playlist_path(void)
|
||||
{
|
||||
char *path = malloc(PATH_MAX);
|
||||
struct stat statbuf;
|
||||
|
||||
/* create pathname based on HOME */
|
||||
strncpy(path, getenv("HOME"), PATH_MAX);
|
||||
strncat(path, "/" ECAPLAY_PLAYLIST_BASEDIR, PATH_MAX - strlen(path) - 1);
|
||||
|
||||
/* make sure basedir exists */
|
||||
if (stat(path, &statbuf) != 0) {
|
||||
printf("(ecaplay) Creating directory %s.\n", path);
|
||||
mkdir(path, 0700);
|
||||
}
|
||||
else {
|
||||
if (!S_ISDIR(statbuf.st_mode)) {
|
||||
/* error, basedir exists but is not a directory */
|
||||
free(path);
|
||||
path = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
if (path != NULL) {
|
||||
/* add filename to basedir */
|
||||
strncat(path, "/" ECAPLAY_PLAYLIST_FILE, PATH_MAX - strlen(path) - 1);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the track from playlist matching number 'next_track'.
|
||||
*
|
||||
* In case 'next_track' is larger than the playlist length,
|
||||
* track 'next_track mod playlist_len' will be selected, and
|
||||
* the modified playlist item number stored to 'next_track'.
|
||||
*
|
||||
* Note: modifies global variable 'ecaplay_next'.
|
||||
*
|
||||
* @return track name or NULL on error
|
||||
*/
|
||||
static const char* get_track_playlist(int* next_track)
|
||||
{
|
||||
|
||||
const char *res = NULL;
|
||||
char *path;
|
||||
FILE *f1;
|
||||
int next = *next_track;
|
||||
|
||||
assert(next > 0);
|
||||
|
||||
path = get_playlist_path();
|
||||
if (path == NULL) {
|
||||
return path;
|
||||
}
|
||||
|
||||
f1 = fopen(path, "rb");
|
||||
if (f1 != NULL) {
|
||||
int c, w, cur_item = 1;
|
||||
|
||||
/* iterate through all data octet at a time */
|
||||
for(w = 0;;) {
|
||||
c = fgetc(f1);
|
||||
if (c == EOF) {
|
||||
if (next > cur_item) {
|
||||
/* next_track beyond playlist length, reset to valid track number */
|
||||
next = next % cur_item;
|
||||
*next_track = next;
|
||||
/* seek back to start and look again */
|
||||
fseek(f1, 0, SEEK_SET);
|
||||
cur_item = 1;
|
||||
w = 0;
|
||||
continue;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (cur_item == next) {
|
||||
if (c == '\n') {
|
||||
ecaplay_next[w] = 0;
|
||||
res = ecaplay_next;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
ecaplay_next[w] = c;
|
||||
}
|
||||
++w;
|
||||
}
|
||||
if (c == '\n') {
|
||||
++cur_item;
|
||||
}
|
||||
}
|
||||
|
||||
/* close the file and return results */
|
||||
fclose(f1);
|
||||
}
|
||||
|
||||
free(path);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Lists tracks on the playlist.
|
||||
*
|
||||
* @return zero on success, non-zero otherwise
|
||||
*/
|
||||
static int list_tracks(void)
|
||||
{
|
||||
FILE *f1;
|
||||
char *path = get_playlist_path();
|
||||
|
||||
f1 = fopen(path, "rb");
|
||||
if (f1 != NULL) {
|
||||
int c;
|
||||
while((c = fgetc(f1)) != EOF) {
|
||||
printf("%c", c);
|
||||
}
|
||||
fclose(f1);
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Play tracks using the Ecasound engine via the
|
||||
* ECI interface.
|
||||
*
|
||||
* Depending on the mode, tracks are selected either
|
||||
* from the command-line or from the playlist.
|
||||
*/
|
||||
static int play_tracks(int argc, char *argv[])
|
||||
{
|
||||
eci_handle_t eci = NULL;
|
||||
int tracknum = 1, stop = 0;
|
||||
const char* nexttrack = NULL;
|
||||
|
||||
assert(ecaplay_mode == ECAPLAY_MODE_NORMAL ||
|
||||
ecaplay_mode == ECAPLAY_MODE_PL_PLAY);
|
||||
|
||||
tracknum += ecaplay_skip;
|
||||
|
||||
nexttrack = get_next_track(&tracknum, argc, argv, &eci);
|
||||
|
||||
if (nexttrack != NULL) {
|
||||
setup_signal_handling();
|
||||
|
||||
while(nexttrack != NULL) {
|
||||
unsigned int timeleft = ECAPLAY_TIMEOUT;
|
||||
|
||||
while(timeleft > 0) {
|
||||
timeleft = sleep(timeleft);
|
||||
|
||||
if (timeleft > 0 && ecaplay_skip_flag > 1) {
|
||||
fprintf(stderr, "\n(ecaplay) Interrupted, exiting...\n");
|
||||
eci_cleanup_r(eci);
|
||||
stop = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* see above while() loop */
|
||||
if (stop) break;
|
||||
|
||||
if (ecaplay_skip_flag == 0) {
|
||||
eci_command_r(eci, "engine-status");
|
||||
}
|
||||
else {
|
||||
printf("(ecaplay) Skipping...\n");
|
||||
}
|
||||
|
||||
if (ecaplay_skip_flag != 0 || strcmp(eci_last_string_r(eci), "running") != 0) {
|
||||
ecaplay_skip_flag = 0;
|
||||
++tracknum;
|
||||
nexttrack = get_next_track(&tracknum, argc, argv, &eci);
|
||||
/* printf("Next track is %s.\n", nexttrack); */
|
||||
}
|
||||
}
|
||||
|
||||
fprintf(stderr, "exiting...\n");
|
||||
|
||||
/* see while() loop above */
|
||||
if (stop == 0) {
|
||||
eci_cleanup_r(eci);
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void print_usage(FILE* stream)
|
||||
{
|
||||
fprintf(stream, "Ecaplay v%s (%s)\n\n", ecaplay_version, VERSION);
|
||||
|
||||
fprintf(stream, "Copyright (C) 1997-2005 Kai Vehmanen, released under GPL licence \n");
|
||||
fprintf(stream, "Ecaplay comes with ABSOLUTELY NO WARRANTY.\n");
|
||||
fprintf(stream, "You may redistribute copies of ecasound under the terms of the GNU\n");
|
||||
fprintf(stream, "General Public License. For more information about these matters, see\n");
|
||||
fprintf(stream, "the file named COPYING.\n");
|
||||
|
||||
fprintf(stream, "\nUSAGE: ecaplay [-dfhklopq] [ file1 file2 ... fileN ]\n\n");
|
||||
|
||||
fprintf(stream, "See ecaplay(1) man page for more details.\n");
|
||||
}
|
||||
|
||||
static int process_option(const char* option)
|
||||
{
|
||||
if (option[0] == '-') {
|
||||
if (strncmp("--help", option, sizeof("--help")) == 0 ||
|
||||
strncmp("--version", option, sizeof("--version")) == 0) {
|
||||
print_usage(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch(option[1])
|
||||
{
|
||||
case 'd':
|
||||
{
|
||||
const char* level = &option[3];
|
||||
if (option[2] != 0 && option[3] != 0) {
|
||||
ecaplay_debuglevel |= atoi(level);
|
||||
printf("(ecaplay) Setting log level to %d.\n", ecaplay_debuglevel);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'f':
|
||||
{
|
||||
ecaplay_mode = ECAPLAY_MODE_PL_FLUSH;
|
||||
printf("(ecaplay) Flushing playlist.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
case 'h':
|
||||
{
|
||||
print_usage(stdout);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case 'k':
|
||||
{
|
||||
const char* skip = &option[3];
|
||||
if (option[2] != 0 && option[3] != 0) {
|
||||
ecaplay_skip = atoi(skip);
|
||||
printf("(ecaplay) Skipping the first %d files..\n", ecaplay_skip);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'l':
|
||||
{
|
||||
ecaplay_mode = ECAPLAY_MODE_PL_LIST;
|
||||
/* printf("(ecaplay) Listing playlist contents.\n"); */
|
||||
break;
|
||||
}
|
||||
|
||||
case 'o':
|
||||
{
|
||||
const char* output = &option[3];
|
||||
if (option[2] != 0 && option[3] != 0) {
|
||||
ecaplay_output = output;
|
||||
/* printf("(ecaplay) Output device: '%s'\n", ecaplay_output); */
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'p':
|
||||
{
|
||||
ecaplay_mode = ECAPLAY_MODE_PL_PLAY;
|
||||
printf("(ecaplay) Playlist mode selected (file: %s).\n",
|
||||
"~/" ECAPLAY_PLAYLIST_BASEDIR "/" ECAPLAY_PLAYLIST_FILE);
|
||||
break;
|
||||
}
|
||||
|
||||
case 'q':
|
||||
{
|
||||
ecaplay_mode = ECAPLAY_MODE_PL_QUEUE;
|
||||
printf("(ecaplay) Queuing tracks to playlist.\n");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
fprintf(stderr, "(ecaplay) Error! Unknown option '%s'.\n", option);
|
||||
print_usage(stderr);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int queue_tracks(int argc, char *argv[])
|
||||
{
|
||||
int i, res = 0;
|
||||
char *path;
|
||||
FILE *f1;
|
||||
|
||||
path = get_playlist_path();
|
||||
/* path maybe NULL but fopen can handle it */
|
||||
|
||||
f1 = fopen(path, "a+b");
|
||||
if (f1 != NULL) {
|
||||
for(i = 1; i < argc; i++) {
|
||||
char c = argv[i][0];
|
||||
/* printf("(ecaplay) processing arg '%s' (%c).\n", argv[i], c); */
|
||||
/* FIXME: add support for '-- -foo.wav' */
|
||||
if (c != '-') {
|
||||
/* printf("(ecaplay) 2:processing arg '%s' (%c).\n", argv[i], c); */
|
||||
if (c != '/') {
|
||||
/* reserve extra room for '/' */
|
||||
char* tmp = malloc(PATH_MAX + strlen(argv[i]) + 1);
|
||||
if (getcwd(tmp, PATH_MAX) != NULL) {
|
||||
strcat(tmp, "/");
|
||||
strcat(tmp, argv[i]);
|
||||
printf("(ecaplay) Track '%s' added to playlist.\n", argv[i]);
|
||||
fwrite(tmp, 1, strlen(tmp), f1);
|
||||
}
|
||||
free(tmp);
|
||||
}
|
||||
else {
|
||||
printf("(ecaplay) Track '%s' added to playlist.\n", argv[i]);
|
||||
fwrite(argv[i], 1, strlen(argv[i]), f1);
|
||||
}
|
||||
fwrite("\n", 1, 1, f1);
|
||||
}
|
||||
}
|
||||
fclose(f1);
|
||||
}
|
||||
else {
|
||||
res = -1;
|
||||
}
|
||||
|
||||
free(path); /* can be NULL */
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the chainsetup audio format to 'fmt'.
|
||||
*
|
||||
* @return zero on success, non-zero on error
|
||||
*/
|
||||
int set_audio_format(eci_handle_t* eci, const char* fmt)
|
||||
{
|
||||
size_t len = strlen("cs-set-audio-format -f:") + strlen(fmt) + 1;
|
||||
char* tmpbuf = malloc(len);
|
||||
int res = 0;
|
||||
|
||||
strcpy(tmpbuf, "cs-set-audio-format ");
|
||||
strcat(tmpbuf, fmt);
|
||||
tmpbuf[len - 1] = 0;
|
||||
eci_command_r(eci, tmpbuf);
|
||||
if (eci_error_r(eci)) {
|
||||
fprintf(stderr, "(ecaplay) Unknown audio format encountered.\n");
|
||||
res = -1;
|
||||
}
|
||||
free(tmpbuf);
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
static void setup_signal_handling(void)
|
||||
{
|
||||
struct sigaction es_handler_int;
|
||||
struct sigaction ign_handler;
|
||||
|
||||
es_handler_int.sa_handler = signal_handler;
|
||||
sigemptyset(&es_handler_int.sa_mask);
|
||||
es_handler_int.sa_flags = 0;
|
||||
|
||||
ign_handler.sa_handler = SIG_IGN;
|
||||
sigemptyset(&ign_handler.sa_mask);
|
||||
ign_handler.sa_flags = 0;
|
||||
|
||||
/* handle the follwing signals explicitly */
|
||||
sigaction(SIGINT, &es_handler_int, 0);
|
||||
|
||||
/* ignore the following signals */
|
||||
sigaction(SIGPIPE, &ign_handler, 0);
|
||||
sigaction(SIGFPE, &ign_handler, 0);
|
||||
}
|
||||
|
||||
static void signal_handler(int signum)
|
||||
{
|
||||
++ecaplay_skip_flag;
|
||||
}
|
|
@ -0,0 +1,593 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecasignalview.cpp: A simple command-line tools for monitoring
|
||||
// signal amplitude.
|
||||
// Copyright (C) 1999-2005,2007,2008 Kai Vehmanen
|
||||
// Copyright (C) 2005 Jeffrey Cunningham
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include <config.h>
|
||||
#endif
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <cassert>
|
||||
#include <cmath>
|
||||
#include <cstdio>
|
||||
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include <sys/time.h> /* POSIX: select() */
|
||||
#include <sys/select.h> /* POSIX: timeval struct */
|
||||
|
||||
#include <kvutils/kvu_com_line.h>
|
||||
#include <kvutils/kvu_utils.h>
|
||||
#include <kvutils/kvu_numtostr.h>
|
||||
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
#include "ecicpp_helpers.h"
|
||||
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
/* see: http://www.opengroup.org/onlinepubs/007908799/xsh/termios.h.html */
|
||||
#include <termios.h>
|
||||
#endif
|
||||
|
||||
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
|
||||
#define ECASV_USE_CURSES 1
|
||||
|
||||
#ifdef ECA_USE_NCURSES_H
|
||||
#include <ncurses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#elif ECA_USE_NCURSES_NCURSES_H
|
||||
#include <ncurses/ncurses.h>
|
||||
#include <ncurses/term.h> /* for setupterm() */
|
||||
#else
|
||||
#include <curses.h>
|
||||
#include <term.h> /* for setupterm() */
|
||||
#endif
|
||||
|
||||
#endif /* ECA_*CURSES_H */
|
||||
|
||||
#include <cstring>
|
||||
|
||||
/**
|
||||
* Import namespaces
|
||||
*/
|
||||
|
||||
using namespace std;
|
||||
|
||||
/**
|
||||
* Type definitions
|
||||
*/
|
||||
|
||||
struct ecasv_channel_stats {
|
||||
double last_peak;
|
||||
double drawn_peak;
|
||||
double max_peak;
|
||||
long int clipped_samples;
|
||||
vector<double> avg_peak; // jkc: addition
|
||||
int avg_peak_ptr; // jkc: addition
|
||||
double avg_peak_val; // jkc: addition
|
||||
};
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[]);
|
||||
void ecasv_parse_command_line(ECA_CONTROL_INTERFACE* cop, int argc, char *argv[]);
|
||||
void ecasv_fill_defaults(void);
|
||||
std::string ecasv_cop_to_string(ECA_CONTROL_INTERFACE* cop);
|
||||
void ecasv_output_init(void);
|
||||
void ecasv_output_cleanup(void);
|
||||
int ecasv_print_vu_meters(ECA_CONTROL_INTERFACE* eci,
|
||||
std::vector<struct ecasv_channel_stats>* chstats);
|
||||
void ecasv_update_chstats(std::vector<struct ecasv_channel_stats>* chstats,
|
||||
int ch, double value);
|
||||
void ecasv_create_bar(double value, int barlen, unsigned char* barbuf);
|
||||
void ecasv_print_usage(void);
|
||||
void ecasv_signal_handler(int signum);
|
||||
void reset_stats_fcn(vector<struct ecasv_channel_stats>* chstats); // jkc: addition
|
||||
float dB(float v) { return 10.0*log10(v*v); } // jkc: addition
|
||||
void ecasv_set_buffered(void);
|
||||
void ecasv_set_unbuffered(void);
|
||||
int ecasv_kbhit();
|
||||
|
||||
/**
|
||||
* Static global variables
|
||||
*/
|
||||
|
||||
static const string ecatools_signalview_version = "20051112-10";
|
||||
static bool ecasv_log_display_mode = false; // jkc: addition
|
||||
static const double ecasv_clipped_threshold_const = 1.0f - 1.0f / 16384.0f;
|
||||
static const int ecasv_bar_length_const = 32;
|
||||
static const int ecasv_header_height_const = 9;
|
||||
static const long int ecasv_rate_default_const = 50;
|
||||
static const long int ecasv_buffersize_default_const = 128;
|
||||
|
||||
static unsigned char ecasv_bar_buffer[ecasv_bar_length_const + 1] = { 0 };
|
||||
static bool ecasv_enable_debug, ecasv_enable_cumulative_mode;
|
||||
static long int ecasv_buffersize, ecasv_rate_msec;
|
||||
static string ecasv_input, ecasv_output, ecasv_format_string;
|
||||
static int ecasv_chcount = 0;
|
||||
|
||||
static ECA_CONTROL_INTERFACE* ecasv_eci_repp = 0;
|
||||
|
||||
static sig_atomic_t done = 0;
|
||||
static sig_atomic_t reset_stats = 0;
|
||||
static int avg_peak_buffer_sz=100; // jkc: addition
|
||||
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
struct termios old_term, new_term;
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Function definitions
|
||||
*/
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
int res;
|
||||
struct sigaction es_handler;
|
||||
es_handler.sa_handler = ecasv_signal_handler;
|
||||
sigemptyset(&es_handler.sa_mask);
|
||||
es_handler.sa_flags = 0;
|
||||
|
||||
sigaction(SIGTERM, &es_handler, 0);
|
||||
sigaction(SIGINT, &es_handler, 0);
|
||||
sigaction(SIGQUIT, &es_handler, 0);
|
||||
sigaction(SIGABRT, &es_handler, 0);
|
||||
sigaction(SIGHUP, &es_handler, 0);
|
||||
|
||||
struct sigaction ign_handler;
|
||||
ign_handler.sa_handler = SIG_IGN;
|
||||
sigemptyset(&ign_handler.sa_mask);
|
||||
ign_handler.sa_flags = 0;
|
||||
|
||||
/* ignore the following signals */
|
||||
sigaction(SIGPIPE, &ign_handler, 0);
|
||||
sigaction(SIGFPE, &ign_handler, 0);
|
||||
|
||||
ECA_CONTROL_INTERFACE eci;
|
||||
|
||||
eci.command("cs-add default");
|
||||
eci.command("c-add default");
|
||||
|
||||
/* set engine buffersize */
|
||||
eci.command("cs-set-param -b:" + kvu_numtostr(ecasv_buffersize));
|
||||
/* in case JACK is used, do not send nor receive transport events */
|
||||
eci.command("cs-set-param -G:jack,ecasignalview,notransport");
|
||||
|
||||
/* note: might change the cs options (-G, -z, etc) */
|
||||
ecasv_parse_command_line(&eci,argc,argv);
|
||||
|
||||
if (ecasv_format_string.size() > 0) {
|
||||
eci.command("cs-set-audio-format " + ecasv_format_string);
|
||||
}
|
||||
|
||||
string format;
|
||||
if (ecicpp_add_input(&eci, ecasv_input, &format) < 0) return -1;
|
||||
|
||||
cout << "Using audio format -f:" << format << "\n";
|
||||
|
||||
ecasv_chcount = ecicpp_format_channels(format);
|
||||
cout << "Setting up " << ecasv_chcount << " separate channels for analysis." << endl;
|
||||
|
||||
if (ecicpp_add_output(&eci, ecasv_output, format) < 0) return -1;
|
||||
|
||||
ecasv_eci_repp = &eci;
|
||||
|
||||
vector<struct ecasv_channel_stats> chstats;
|
||||
|
||||
eci.command("cop-add -evp");
|
||||
eci.command("cop-add -ev");
|
||||
if (ecasv_enable_cumulative_mode == true) {
|
||||
eci.command("cop-set 2,1,1");
|
||||
}
|
||||
|
||||
eci.command("cop-select 1");
|
||||
|
||||
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
int secs = 0, msecs = ecasv_rate_msec;
|
||||
while(msecs > 999) {
|
||||
++secs;
|
||||
msecs -= 1000;
|
||||
}
|
||||
|
||||
ecasv_output_init();
|
||||
|
||||
eci.command("start");
|
||||
|
||||
int chr=0; // jkc: addition
|
||||
int rv=0; // jkc: addition
|
||||
while(! done ) {
|
||||
kvu_sleep(secs, msecs * 1000000);
|
||||
res = ecasv_print_vu_meters(&eci, &chstats);
|
||||
if (res < 0)
|
||||
break;
|
||||
|
||||
#if defined(ECASV_USE_CURSES)
|
||||
// jkc: addition until noted
|
||||
if (ecasv_kbhit()) {
|
||||
/* note: getch() is a curses.h function */
|
||||
switch (chr=getch()) {
|
||||
case 'q':
|
||||
case 27: /* Esc */
|
||||
case 'Q':
|
||||
done=true;
|
||||
break;
|
||||
case ' ':
|
||||
reset_stats_fcn(&chstats);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// jkc: end of addition
|
||||
#endif
|
||||
}
|
||||
|
||||
ecasv_output_cleanup();
|
||||
#ifdef ECASV_USE_CURSES
|
||||
endwin();
|
||||
#endif
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
void ecasv_parse_command_line(ECA_CONTROL_INTERFACE *eci, int argc, char *argv[])
|
||||
{
|
||||
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
|
||||
if (cline.size() == 0 ||
|
||||
cline.has("--version") ||
|
||||
cline.has("--help") ||
|
||||
cline.has("-h")) {
|
||||
ecasv_print_usage();
|
||||
exit(1);
|
||||
}
|
||||
|
||||
ecasv_enable_debug = false;
|
||||
ecasv_enable_cumulative_mode = false;
|
||||
ecasv_rate_msec = 0;
|
||||
ecasv_buffersize = 0;
|
||||
|
||||
cline.begin();
|
||||
cline.next(); // 1st argument
|
||||
while (cline.end() != true) {
|
||||
string arg = cline.current();
|
||||
if (arg.size() > 0) {
|
||||
if (arg[0] != '-') {
|
||||
if (ecasv_input == "")
|
||||
ecasv_input = arg;
|
||||
else
|
||||
if (ecasv_output == "")
|
||||
ecasv_output = arg;
|
||||
}
|
||||
else {
|
||||
string prefix = kvu_get_argument_prefix(arg);
|
||||
if (prefix == "b")
|
||||
ecasv_buffersize = atol(kvu_get_argument_number(1, arg).c_str());
|
||||
if (prefix == "c") ecasv_enable_cumulative_mode = true;
|
||||
if (prefix == "d") ecasv_enable_debug = true;
|
||||
if (prefix == "f")
|
||||
ecasv_format_string = string(arg.begin() + 3, arg.end());
|
||||
if (prefix == "I") ecasv_log_display_mode = false; // jkc: addition
|
||||
if (prefix == "L") ecasv_log_display_mode = true; // jkc: addition
|
||||
if (prefix == "r")
|
||||
ecasv_rate_msec = atol(kvu_get_argument_number(1, arg).c_str());
|
||||
if (prefix == "G" ||
|
||||
prefix == "B" ||
|
||||
(prefix.size() > 0 && prefix[0] == 'M') ||
|
||||
prefix == "r" ||
|
||||
prefix == "z") {
|
||||
eci->command("cs-option " + arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
cline.next();
|
||||
}
|
||||
|
||||
ecasv_fill_defaults();
|
||||
}
|
||||
|
||||
void ecasv_fill_defaults(void)
|
||||
{
|
||||
// ECA_RESOURCES ecarc;
|
||||
|
||||
if (ecasv_input.size() == 0) ecasv_input = "/dev/dsp";
|
||||
if (ecasv_output.size() == 0) ecasv_output = "null";
|
||||
if (ecasv_buffersize == 0) ecasv_buffersize = ecasv_buffersize_default_const;
|
||||
if (ecasv_rate_msec == 0) ecasv_rate_msec = ecasv_rate_default_const;
|
||||
if (ecasv_format_string.size() == 0) ecasv_format_string = "s16_le,2,44100,i";
|
||||
|
||||
// ecarc.resource("default-audio-format");
|
||||
}
|
||||
|
||||
string ecasv_cop_to_string(ECA_CONTROL_INTERFACE* eci)
|
||||
{
|
||||
eci->command("cop-status");
|
||||
return(eci->last_string());
|
||||
}
|
||||
|
||||
void ecasv_output_init(void)
|
||||
{
|
||||
#ifdef ECASV_USE_CURSES
|
||||
initscr();
|
||||
erase();
|
||||
int r=0; // jkc: added r for row indexing here and below
|
||||
mvprintw(r++, 0, "ecasignalview v%s (%s) -- (C) K.Vehmanen, J.Cunningham", ecatools_signalview_version.c_str(), VERSION);
|
||||
//mvprintw(r++, 0, "* (C) 1999-2005 Kai Vehmanen, Jeff Cunningham *\n");
|
||||
//mvprintw(r++, 0, "******************************************************\n\n");
|
||||
|
||||
++r;
|
||||
mvprintw(r++, 2, "Input/output: \"%s\" => \"%s\"",
|
||||
ecasv_input.c_str(),ecasv_output.c_str());
|
||||
double avg_length = (double)ecasv_rate_msec * avg_peak_buffer_sz;
|
||||
mvprintw(r++, 2,
|
||||
"Settings: %s refresh=%ldms bsize=%ld avg-length=%.0fms",
|
||||
ecasv_format_string.c_str(), ecasv_rate_msec, ecasv_buffersize, avg_length);
|
||||
/* mvprintw(r++, 0, "refresh rate = %ld (msec), buffer size = %ld, "
|
||||
"avg-length = %.0f (msec)",
|
||||
ecasv_rate_msec, ecasv_buffersize, avg_length); */
|
||||
++r;
|
||||
const char* bar="------------------------------------------------------------------------------\n";
|
||||
mvprintw(r++, 0, bar);
|
||||
mvprintw(r, 0, "channel");
|
||||
if (ecasv_log_display_mode)
|
||||
mvprintw(r++,38, "%s avg-peak dB max-peak dB clipped\n", ecasv_bar_buffer);
|
||||
else
|
||||
mvprintw(r++,38, "%s avg-peak max-peak clipped\n", ecasv_bar_buffer);
|
||||
mvprintw(r++, 0, bar);
|
||||
|
||||
memset(ecasv_bar_buffer, ' ', ecasv_bar_length_const - 4);
|
||||
ecasv_bar_buffer[ecasv_bar_length_const - 4] = 0;
|
||||
mvprintw(r + ecasv_chcount + 3, 0, "Press spacebar to reset stats"); // jkc: addition
|
||||
move(r + ecasv_chcount - 2, 0);
|
||||
|
||||
// 13 + 12
|
||||
|
||||
refresh();
|
||||
#endif
|
||||
}
|
||||
|
||||
void ecasv_output_cleanup(void)
|
||||
{
|
||||
#ifdef ECASV_USE_CURSES
|
||||
endwin();
|
||||
#endif
|
||||
|
||||
// FIXME: should be enabled
|
||||
#if 0
|
||||
if (ecasv_eci_repp != 0) {
|
||||
cout << endl << endl << endl;
|
||||
ecasv_eci_repp->command("cop-status");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// jkc: addition of reset_stats function
|
||||
void reset_stats_fcn(vector<struct ecasv_channel_stats>* chstats)
|
||||
{
|
||||
#ifdef ECASV_USE_CURSES
|
||||
vector<struct ecasv_channel_stats>::iterator s=chstats->begin();
|
||||
while (s!=chstats->end()) {
|
||||
s->last_peak=0;
|
||||
s->max_peak=0;
|
||||
s->drawn_peak=0;
|
||||
s->clipped_samples=0;
|
||||
s++;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
// jkc: end of addition
|
||||
|
||||
int ecasv_print_vu_meters(ECA_CONTROL_INTERFACE* eci, vector<struct ecasv_channel_stats>* chstats)
|
||||
{
|
||||
int result = 0;
|
||||
|
||||
/* check wheter to reset peaks */
|
||||
if (reset_stats) {
|
||||
reset_stats = 0;
|
||||
for(int n = 0; n < ecasv_chcount; n++) {
|
||||
(*chstats)[n].max_peak = 0;
|
||||
(*chstats)[n].clipped_samples = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ECASV_USE_CURSES
|
||||
for(int n = 0; n < ecasv_chcount; n++) {
|
||||
eci->command("copp-select " + kvu_numtostr(n + 1));
|
||||
eci->command("copp-get");
|
||||
|
||||
if (eci->error()) {
|
||||
result = -1;
|
||||
break;
|
||||
}
|
||||
|
||||
double value = eci->last_float();
|
||||
|
||||
ecasv_update_chstats(chstats, n, value);
|
||||
|
||||
ecasv_create_bar((*chstats)[n].drawn_peak, ecasv_bar_length_const, ecasv_bar_buffer);
|
||||
// jkc: commented out following two lines and substituted what follows until noted
|
||||
// mvprintw(ecasv_header_height_const+n, 0, "Ch-%02d: %s| %.5f %ld\n",
|
||||
// n + 1, ecasv_bar_buffer, (*chstats)[n].max_peak, (*chstats)[n].clipped_samples);
|
||||
// Calculate average peak value
|
||||
|
||||
if (ecasv_log_display_mode)
|
||||
mvprintw(ecasv_header_height_const+n, 0,
|
||||
"Ch-%02d: %s %.2f %.2f %ld\n",
|
||||
n+1, ecasv_bar_buffer,
|
||||
dB((*chstats)[n].avg_peak_val),
|
||||
dB((*chstats)[n].max_peak),
|
||||
(*chstats)[n].clipped_samples);
|
||||
else
|
||||
mvprintw(ecasv_header_height_const+n, 0,
|
||||
"Ch-%02d: %s %.5f %.5f %ld\n",
|
||||
n+1, ecasv_bar_buffer,
|
||||
(*chstats)[n].avg_peak_val,
|
||||
(*chstats)[n].max_peak,
|
||||
(*chstats)[n].clipped_samples);
|
||||
// jkc: end of substitution
|
||||
}
|
||||
move(ecasv_header_height_const + 2 + ecasv_chcount, 0);
|
||||
refresh();
|
||||
#else
|
||||
cout << ecasv_cop_to_string(eci) << endl;
|
||||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void ecasv_update_chstats(vector<struct ecasv_channel_stats>* chstats, int ch, double value)
|
||||
{
|
||||
/* 1. in case a new channel is encoutered */
|
||||
if (static_cast<int>(chstats->size()) <= ch) {
|
||||
chstats->resize(ch + 1);
|
||||
// jkc: added until noted
|
||||
(*chstats)[ch].last_peak=0;
|
||||
(*chstats)[ch].drawn_peak=0;
|
||||
(*chstats)[ch].max_peak=0;
|
||||
(*chstats)[ch].clipped_samples=0;
|
||||
(*chstats)[ch].avg_peak.resize(avg_peak_buffer_sz,0);
|
||||
(*chstats)[ch].avg_peak_ptr=0;
|
||||
// jkc: end of additions
|
||||
}
|
||||
|
||||
/* 2. update last_peak and drawn_peak */
|
||||
(*chstats)[ch].last_peak = value;
|
||||
if ((*chstats)[ch].last_peak < (*chstats)[ch].drawn_peak) {
|
||||
(*chstats)[ch].drawn_peak *= ((*chstats)[ch].last_peak / (*chstats)[ch].drawn_peak);
|
||||
}
|
||||
else {
|
||||
(*chstats)[ch].drawn_peak = (*chstats)[ch].last_peak;
|
||||
}
|
||||
|
||||
/* 3. update max_peak */
|
||||
if (value > (*chstats)[ch].max_peak) {
|
||||
(*chstats)[ch].max_peak = value;
|
||||
}
|
||||
|
||||
/* 4. update clipped_samples counter */
|
||||
if (value > ecasv_clipped_threshold_const) {
|
||||
(*chstats)[ch].clipped_samples++;
|
||||
}
|
||||
|
||||
// jkc: added until noted
|
||||
/* 5. update running average vector */
|
||||
(*chstats)[ch].avg_peak[(*chstats)[ch].avg_peak_ptr] = value;
|
||||
(*chstats)[ch].avg_peak_ptr = ((*chstats)[ch].avg_peak_ptr == avg_peak_buffer_sz-1)?
|
||||
0 : (*chstats)[ch].avg_peak_ptr+1;
|
||||
vector<double>::iterator p=(*chstats)[ch].avg_peak.begin();
|
||||
(*chstats)[ch].avg_peak_val=0;
|
||||
while (p!=(*chstats)[ch].avg_peak.end()) { (*chstats)[ch].avg_peak_val+=*p++; }
|
||||
(*chstats)[ch].avg_peak_val/=avg_peak_buffer_sz;
|
||||
// jkc; end of addition
|
||||
}
|
||||
|
||||
void ecasv_create_bar(double value, int barlen, unsigned char* barbuf)
|
||||
{
|
||||
int curlen = static_cast<int>(rint(((value / 1.0f) * barlen)));
|
||||
for(int n = 0; n < barlen; n++) {
|
||||
if (n <= curlen)
|
||||
barbuf[n] = '*';
|
||||
else
|
||||
barbuf[n] = ' ';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets terminal to unbuffered mode (no echo,
|
||||
* non-canonical input). -jkc
|
||||
*/
|
||||
void ecasv_set_unbuffered(void)
|
||||
{
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
tcgetattr( STDIN_FILENO, &old_term );
|
||||
new_term = old_term;
|
||||
new_term.c_lflag &= ~( ICANON | ECHO );
|
||||
tcsetattr( STDIN_FILENO, TCSANOW, &new_term );
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets terminal to buffered mode -jkc
|
||||
*/
|
||||
void ecasv_set_buffered(void)
|
||||
{
|
||||
#ifdef HAVE_TERMIOS_H
|
||||
tcsetattr( STDIN_FILENO, TCSANOW, &old_term );
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a character from the terminal console. -jkc
|
||||
*/
|
||||
int ecasv_kbhit(void)
|
||||
{
|
||||
int result;
|
||||
fd_set set;
|
||||
struct timeval tv;
|
||||
|
||||
FD_ZERO(&set);
|
||||
FD_SET(STDIN_FILENO,&set); /* watch stdin */
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0; /* don't wait */
|
||||
|
||||
/* quick peek at the input, to see if anything is there */
|
||||
ecasv_set_unbuffered();
|
||||
result = select( STDIN_FILENO+1,&set,NULL,NULL,&tv);
|
||||
ecasv_set_buffered();
|
||||
|
||||
return result == 1;
|
||||
}
|
||||
|
||||
void ecasv_print_usage(void)
|
||||
{
|
||||
cerr << "****************************************************************************\n";
|
||||
cerr << "* ecasignalview, v" << ecatools_signalview_version << " (" << VERSION << ")\n";
|
||||
cerr << "* Copyright 1999-2005 Kai Vehmanen, Jeffrey Cunningham\n";
|
||||
cerr << "* Licensed under the terms of the GNU General Public License\n";
|
||||
cerr << "****************************************************************************\n";
|
||||
|
||||
cerr << "\nUSAGE: ecasignalview [options] [input] [output] \n";
|
||||
cerr << "\nOptions:\n";
|
||||
cerr << "\t-b:buffersize\n";
|
||||
// cerr << "\t\t-c (cumulative mode)\n";
|
||||
cerr << "\t-d (debug mode)\n";
|
||||
cerr << "\t-f:bits,channels,samplerate\n";
|
||||
cerr << "\t-r:refresh_msec\n\n";
|
||||
cerr << "\t-I (linear-scale)\n";
|
||||
cerr << "\t-L (logarithmic-scale)\n";
|
||||
}
|
||||
|
||||
void ecasv_signal_handler(int signum)
|
||||
{
|
||||
if (signum == SIGHUP) {
|
||||
reset_stats = 1;
|
||||
}
|
||||
else {
|
||||
cerr << "Interrupted... cleaning up.\n";
|
||||
done=1;
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,120 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// ecicpp_helper.cpp: Helper routines for C++ ECI programming.
|
||||
// Copyright (C) 2002-2007 Kai Vehmanen
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include <kvu_dbc.h>
|
||||
#include <kvu_utils.h>
|
||||
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
#include "ecicpp_helpers.h"
|
||||
|
||||
/**
|
||||
* Definitions and options
|
||||
*/
|
||||
|
||||
using std::cerr;
|
||||
using std::cout;
|
||||
using std::endl;
|
||||
using std::string;
|
||||
|
||||
/**
|
||||
* Function declarations
|
||||
*/
|
||||
|
||||
int ecicpp_add_file_input(ECA_CONTROL_INTERFACE* eci, const string& filename, string* format)
|
||||
{
|
||||
if (filename.find(',') != string::npos) {
|
||||
cerr << "Error: Unable to handle filenames with commas. Exiting...\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
return ecicpp_add_input(eci, filename, format);
|
||||
}
|
||||
|
||||
int ecicpp_add_input(ECA_CONTROL_INTERFACE* eci, const string& input, string* format)
|
||||
{
|
||||
eci->command("ai-add " + input);
|
||||
bool error = eci->error();
|
||||
eci->command("ai-list");
|
||||
if (error == true || eci->last_string_list().size() != 1) {
|
||||
cerr << eci->last_error() << endl;
|
||||
cerr << "---\nError while processing input " << input << ". Exiting...\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* we must connect to get correct input format */
|
||||
eci->command("ao-add null");
|
||||
eci->command("cs-connect");
|
||||
|
||||
eci->command("ai-iselect 1");
|
||||
eci->command("ai-get-format");
|
||||
*format = eci->last_string();
|
||||
|
||||
/* disconnect and remove the null output */
|
||||
eci->command("cs-disconnect");
|
||||
eci->command("ao-iselect 1");
|
||||
eci->command("ao-remove");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ecicpp_add_output(ECA_CONTROL_INTERFACE* eci, const string& output, const string& format)
|
||||
{
|
||||
eci->command("cs-set-audio-format " + format);
|
||||
|
||||
eci->command("ao-add " + output);
|
||||
bool error = eci->error();
|
||||
eci->command("ao-list");
|
||||
if (error == true || eci->last_string_list().size() != 1) {
|
||||
cerr << eci->last_error() << endl;
|
||||
cerr << "---\nError while processing output " << output << ". Exiting...\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ecicpp_connect_chainsetup(ECA_CONTROL_INTERFACE* eci, const string& csname)
|
||||
{
|
||||
eci->command("cs-connect");
|
||||
bool error = eci->error();
|
||||
string errorstr = eci->last_error();
|
||||
eci->command("cs-connected");
|
||||
if (error == true || eci->last_string() != csname) {
|
||||
cerr << endl << errorstr << endl;
|
||||
cerr << "---\nUnable to start processing. Exiting...\n";
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int ecicpp_format_channels(const string& format)
|
||||
{
|
||||
std::vector<std::string> tokens = kvu_string_to_vector(format, ',');
|
||||
DBC_CHECK(tokens.size() >= 3);
|
||||
return atoi(tokens[1].c_str());
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
#ifndef INCLUDED_ECICPP_HELPERS_H
|
||||
#define INCLUDED_ECICPP_HELPERS_H
|
||||
|
||||
using std::string;
|
||||
|
||||
class ECA_CONTROL_INTERFACE;
|
||||
|
||||
int ecicpp_add_file_input(ECA_CONTROL_INTERFACE* eci, const string& filename, string* format);
|
||||
int ecicpp_add_input(ECA_CONTROL_INTERFACE* eci, const string& input, string* format);
|
||||
int ecicpp_add_output(ECA_CONTROL_INTERFACE* eci, const string& output, const string& format);
|
||||
int ecicpp_connect_chainsetup(ECA_CONTROL_INTERFACE* eci, const string& csname);
|
||||
int ecicpp_format_channels(const string& format);
|
||||
|
||||
#endif /* INCLUDED_ECICPP_HELPERS_H */
|
|
@ -0,0 +1,212 @@
|
|||
# --------------------------------------------------------------------
|
||||
# ecasound effect presets definitions
|
||||
# --------------------------------------------------------------------
|
||||
#
|
||||
# - all lines beginning with a '#' are ignored
|
||||
# - preset format:
|
||||
# "preset_name_or_number = <chain-1object> | ... | <chain-N objects>"
|
||||
# - you can use '\' sign to split lines
|
||||
# - preset parameters and available descriptors:
|
||||
# -efl:%1,100 = first param of -efl is a public preset parameter
|
||||
# -pd:name_of_preset = preset description
|
||||
# -ppn:par1,...,parN = parameter names (public params)
|
||||
# -ppd:val1,...,valN = default param values
|
||||
# -ppl:val1,...,valN = lower bounds for param values
|
||||
# -ppu:val1,...,valN = upper bounds for param values
|
||||
# -ppt:flags1,...,flagsN = special flags for parameter N
|
||||
# ('i'=integer, 'l'=logarithmic, 'o'=output, 't'=toggle)
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
# ======
|
||||
# Compression/dynamics (dyn_)
|
||||
#
|
||||
|
||||
dyn_compress_supersoft = -eca:69,0,0.25,0.25 -ea:%1 \
|
||||
-pd:Supersoft_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
dyn_compress_soft = -eca:69,0,0.25,0.5 -ea:%1 \
|
||||
-pd:Soft_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
dyn_compress_medium = -eca:69,0,0.25,1.0 -ea:%1 \
|
||||
-pd:Medium_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
dyn_compress_hard = -eca:69,0,0.5,1.0 -ea:%1 \
|
||||
-pd:Hard_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
dyn_compress_infinite = -eca:69,0,1.0,1.0 -ea:%1 \
|
||||
-pd:Infinite_to_one_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
dyn_compress_brutal = -ec:999,10 -ea:%1 \
|
||||
-pd:Ultra_brutal_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
|
||||
|
||||
# ======
|
||||
# EQ (eq_)
|
||||
#
|
||||
eq_template = -efb:10,20 -ea:%1 | \
|
||||
-efb:40,40 -ea:%2 | \
|
||||
-efb:100,80 -ea:%3 | \
|
||||
-efb:220,160 -ea:%4 | \
|
||||
-efb:460,320 -ea:%5 | \
|
||||
-efb:940,640 -ea:%6 | \
|
||||
-efb:1900,1280 -ea:%7 | \
|
||||
-efb:3800,2520 -ea:%8 | \
|
||||
-efb:7620,5120 -ea:%9 | \
|
||||
-efb:15300,10240 -ea:%10 \
|
||||
-pd:Big_eq_template \
|
||||
-ppn:10hz,40hz,100hz,220hz,460hz,940hz,1900hz,3800hz,7620hz,15300hz \
|
||||
-ppd:100,100,100,100,100,100,100,100,100,100 \
|
||||
-ppl:0,0,0,0,0,0,0,0,0,0 \
|
||||
-ppu:500,500,500,500,500,500,500,500,500,500
|
||||
eq_template2 = -efb:1000,2000 -ea:%1 | \
|
||||
-efb:4000,2000 -ea:%2 \
|
||||
-pd:Dual_band_eq_template \
|
||||
-ppn:1000hz,4000hz -ppd:100,100 \
|
||||
-ppl:0,0 -ppu:500,500
|
||||
|
||||
# ======
|
||||
# Filters (f_)
|
||||
#
|
||||
|
||||
f_lowp_sine = -ef3:800,1.5,0.9 -kos:1,400,4200,0.2,0 \
|
||||
-pd:Reson_lowpass_filter_controlled_by_a_sine_oscillator
|
||||
f_lowp_sine2 = -efl:400 -kos:1,200,2000,0.5,0 \
|
||||
-pd:Lowpass_filter_controlled_by_a_sine_oscillator
|
||||
f_high_and_low = -efl:400 | -efh:4000 -ea:800 \
|
||||
-pd:Parallel_high_and_lowpass_filters
|
||||
f_res_bandpass = -ef1:%1,%2 \
|
||||
-pd:Reson_bandpass_filter -ppn:freq,width -ppd:1500,700 -ppl:0,1
|
||||
f_res_lowpass = -ef3:%1,1.5,0.7 \
|
||||
-pd:Reson_lowpass_filter -ppd:800 -ppl:0
|
||||
f_lowpass = -efl:%1 -ppn:freq_hz -ppd:300 -pd:Simple_lowpass_filter
|
||||
f_bandpass = -efb:%1,%2 \
|
||||
-pd:Bandpass_filter -ppn:freq,width -ppd:1500,700 -ppl:0,1
|
||||
f_rejectband = -efr:1500,1000 -pd:Band_reject_filter
|
||||
f_highpass = -efh:2000 \
|
||||
-pd:Reson_lowpass -ppd:1500 -ppl:0
|
||||
f_inverse_comb = -efi:8,0.999 \
|
||||
-pd:Inverse_comb_filter
|
||||
f_resonator = -efs:1500,1000 -pd:Resonator_filter
|
||||
f_two_filters = -efl:800 -ea:%1 | -efh:800 -ea:%2 \
|
||||
-pd:Parallel_highpass_and_lowpass_filters \
|
||||
-ppl:0,0 -ppu:1000,- \
|
||||
-ppd:100,100 -ppn:lowgain,highgain
|
||||
f_two_filters_pareq = -efl:%1 -ea:%2 | \
|
||||
-efh:%3 -ea:%4 \
|
||||
-ppn:lowfreq,lowgain,highfreq,highgain \
|
||||
-ppd:200,100,2000,100 \
|
||||
-pd:Two_paraller_filters_with_gain_controls
|
||||
f_filtertest = -efl:%1 -ea:100 | \
|
||||
-efh:%2 -ea:100 | \
|
||||
-ea:100 -ppd:100 -ppn:freq1,freq2 \
|
||||
-pd:Two_paraller_filters
|
||||
|
||||
# ======
|
||||
# Gates (gate_)
|
||||
|
||||
gate_noisegate_1 = -enm:18,20,50,50,50 -pd:Noise_gate
|
||||
gate_noisegate_delanalog = -enm:0.20,0.1,1000,50,0 -pd:Noise_gate_for_analog_hum_removal
|
||||
gate_crop = -gc:1,0.5 -pd:Crop_gate_example
|
||||
gate_threshold = -ge:15,20,1 -pd:Threshold_gate_example
|
||||
|
||||
# ======
|
||||
# Time/delay effects (time_)
|
||||
|
||||
time_reverb1 = -etr:40,0,85 -pd:Bathroom_reverb
|
||||
time_reverb2 = -etr:60,0,70 -pd:Plain_reverb
|
||||
time_reverb3 = -etf:30 -pd:Fake_stereo
|
||||
time_reverb4 = -pn:reverb1 -pn:reverb2 -pd:Reverb_combo
|
||||
time_delay1 = -etd:200,0,3,60 -pd:200ms_triple_delay
|
||||
time_delay2 = -etm:200,3,60 -pd:200ms_triple_multidelay
|
||||
time_wicked_dub = -etm:500,1,90 -epp:100 -kos:1,0,100,0.3,0.5 | \
|
||||
-etm:333,1,90 -epp:0 -kos:1,0,100,0.8,0 | -ea:90 \
|
||||
-pd:Wicked_dub_mix
|
||||
time_flanger1 = -etl:2,20,50,0.5 -pd:Flanger
|
||||
time_chorus1 = -etc:2,20,50,0.5 -pd:Chorus
|
||||
time_phaser1 = -etp:2,50,50,0.05 -pd:Phaser
|
||||
|
||||
# ======
|
||||
# Various / mixes (var_)
|
||||
|
||||
var_sweeping_pan = -epp:0 -kos:1,0,100,%1,5 \
|
||||
-pd:Sweeping_pan_envelope -ppn:speed_hz -ppd:0.2
|
||||
var_switching_pan = -epp:0 -kf:1,0,100,%1,0,0 \
|
||||
-pd:Panner_that_alternates_between_left_and_right -ppn:speed_hz -ppd:0.2
|
||||
var_chipmunk = -ei:400 -efl:400 -kos:1,400,10000,2,0 \
|
||||
-pd:Chipmunk_generator
|
||||
var_parchip = -ei:%1 -efl:400 -kos:1,400,10000,%2,0 \
|
||||
-ppn:pitch,modfreq -ppd:100,0.5 \
|
||||
-pd:Chipmunk_sweep
|
||||
var_paralmadness = -efb:0,2000 -kos:1,1,3000,%1,0 -ea:150 | \
|
||||
-efb:0,2000 -kos:1,3000,5000,%2,0 -ea:150 | \
|
||||
-efh:0 -kos:1,3000,5000,%3,0 -ea:200 \
|
||||
-ppn:freq1,freq2,freq3 -ppd:0.2,0.2,0.2 \
|
||||
-pd:Parallel_madness
|
||||
|
||||
# ======
|
||||
# Contributed / Arto Hamara [artham]
|
||||
|
||||
var_stretched_tape = -ei:100 -kos:1,93,100,.5,0 -kx -kos:4,.1,1,.1 \
|
||||
-pd:Stretched_tape
|
||||
var_molten_tape = -ei:100 -kos:1,85,105,.5,0 -kx -kos:4,.1,2,.1 \
|
||||
-pd:Molten_tape
|
||||
var_dali = -ei:100 -kos:1,85,105,.5,0 -kx -kos:4,.1,2,.1 \
|
||||
-etd:100,1,0,70 -epp:0 -kos:1,20,80,.5,0 -kx -kos:4,.1,2,.1 \
|
||||
-pd:Dali
|
||||
|
||||
# ======
|
||||
# Contributed / S.Massy [smassy]
|
||||
# Results of spending an hour messing around.
|
||||
#
|
||||
|
||||
var_aw = -efl:0 -kos:1,500,5500,%1,0 -ppn:speed -ppd:0.5 \
|
||||
-pd:Classic_auto_wah
|
||||
var_aw_custom = -efl:0 -kos:1,%1,%2,%3,0 -ppn:low,high,speed -ppd:100,8000,0.5 \
|
||||
-pd:Class_auto_wah_with_controls
|
||||
|
||||
# Now the autowah again but with the triangular osc which gives a sharper
|
||||
# movement. It really depends of what you're playing, can sound as good as it
|
||||
# can sound bad. That's the joy of autowahs.
|
||||
var_aw_tri = -efl:0 -kf:1,500,5500,%1,1,0 -ppn:speed -ppd:0.5 \
|
||||
-pd:Auto_wah_triangular_osc
|
||||
|
||||
# Now once again we define another version with more definable params.
|
||||
var_aw_tri_custom = -efl:0 -kf:1,%low,%high,%1,1,0 -ppn:speed -ppd:0.5 \
|
||||
-pd:Auto_wah_triangular_osc_with_control
|
||||
|
||||
# Experimental stuff:
|
||||
# I was trying to have a wah reacting to the volume, it doesn't work very
|
||||
# well but I still end up with a "to dig up" envelope shaper.
|
||||
var_aw_ksv = -eS:0 -efl:0 -ksv:1,1000,6000,0,1 \
|
||||
-pd:Volume_sensitive_wah
|
||||
|
||||
# ======
|
||||
# Presets using LADSPA plugins (lad_)
|
||||
|
||||
lad_hermes = \
|
||||
-eli:1200,3,%1,0.27,%2,100,%3,40,%4,1.5,1,2,-4,-4,-50,-20,-20,-20,200,1000,3,1,3,5,1500,0.65,0,130,0,5,400,0.8,0,0,-177,1,150,0.9,0.97,30,30,0.025,0.9,0.5,0.05,0.7,0.5,0.1,0.5,0.5,0,20,20 \
|
||||
-pd:LADSPA_hermesFilter -ppn:p1,p2,p3,p4 -ppd:1,1,1,1
|
||||
lad_sc4 = \
|
||||
-eli:1882,0,40,40,-18,6,6,6,%1,%2 \
|
||||
-pd:LADSPA_SC4_compressor -ppn:output-amplitude-dB,output-gain-reduction-dB \
|
||||
-ppd:0,0 -ppt:lo,lo
|
||||
lad_sc4_rg = \
|
||||
-eli:1882,0,40,40,-18,%1,6,%2,%3,%4 \
|
||||
-pd:LADSPA_SC4_compressor -ppn:ratio,gain-dB,output-amplitude-dB,output-gain-reduction-dB \
|
||||
-ppd:6,3,0,0 -ppl:1,-40 -ppu:20,12 -ppt:-,-,lo,lo
|
||||
lad_metronome = -el:sine_fcac,880,1 -eemb:%1,10 -efl:2000 \
|
||||
-pd:LADSPA_sineosc_metronome -ppn:bpm -ppd:120 -ppl:1
|
||||
lad_oscillator_test = -eli:1205,%1,0 -ea:%2 \
|
||||
-pd:LADSPA_Oscillator_test \
|
||||
-ppn:freq,gain1 \
|
||||
-ppd:200,100 \
|
||||
-ppl:1,0 -ppu:1300,1000 \
|
||||
-ppt:-,-
|
||||
lad_oscillator_stack = -el:analogueOsc,%1,%2 -ea:%4 | \
|
||||
-el:analogueOsc,%1,%3 -ea:%5 \
|
||||
-pd:LADSPA_stack_of_analogue_oscillators \
|
||||
-ppn:freq,osctype1,osctype2,gain1,gain2 \
|
||||
-ppd:200,0,0,100,100 \
|
||||
-ppl:1,0,0,0,0 -ppu:1300,3,3,1000,1000 \
|
||||
-ppt:-,i,i,-
|
||||
|
||||
# ======
|
||||
# Other / compatibility presets
|
||||
|
||||
metronome = -el:sine_fcac,880,1 -eemb:%1,10 -efl:2000 \
|
||||
-ppn:bpm -ppd:100 -pd:Sineosc_metronome
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue