Merge branch 'master' of dev.sourcefabric.org:airtime
This commit is contained in:
commit
ea93535846
|
@ -64,8 +64,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
$formRepeats->removeDecorator('DtDdWrapper');
|
||||
$formStyle->removeDecorator('DtDdWrapper');
|
||||
$formRecord->removeDecorator('DtDdWrapper');
|
||||
$formAbsoluteRebroadcast->removeDecorator('DtDdWrapper');
|
||||
$formRebroadcast->removeDecorator('DtDdWrapper');
|
||||
|
||||
|
||||
$this->view->what = $formWhat;
|
||||
$this->view->when = $formWhen;
|
||||
|
@ -169,8 +168,10 @@ class ScheduleController extends Zend_Controller_Action
|
|||
|
||||
}
|
||||
|
||||
if(!$show->isRecorded()) {
|
||||
$menu[] = array('action' => array('type' => 'ajax', 'url' => '/Schedule/show-content-dialog'.$params,
|
||||
'callback' => 'window["buildContentDialog"]'), 'title' => 'Show Content');
|
||||
}
|
||||
|
||||
|
||||
if (strtotime($show->getShowStart()) <= strtotime($today_timestamp) &&
|
||||
|
@ -368,6 +369,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
$this->view->rr = $formRecord;
|
||||
$this->view->absoluteRebroadcast = $formAbsoluteRebroadcast;
|
||||
$this->view->rebroadcast = $formRebroadcast;
|
||||
|
||||
$what = $formWhat->isValid($data);
|
||||
$when = $formWhen->isValid($data);
|
||||
if($when) {
|
||||
|
@ -386,8 +388,11 @@ class ScheduleController extends Zend_Controller_Action
|
|||
|
||||
$who = $formWho->isValid($data);
|
||||
$style = $formStyle->isValid($data);
|
||||
$record = $formRecord->isValid($data);
|
||||
$rebroadAb = $formAbsoluteRebroadcast->isValid($data);
|
||||
$rebroad = $formRebroadcast->isValid($data);
|
||||
|
||||
if ($what && $when && $repeats && $who && $style) {
|
||||
if ($what && $when && $repeats && $who && $style && $record && $rebroadAb && $rebroad) {
|
||||
|
||||
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
|
||||
$user = new User($userInfo->id);
|
||||
|
@ -405,6 +410,9 @@ class ScheduleController extends Zend_Controller_Action
|
|||
$formRepeats->reset();
|
||||
$formRepeats->populate(array('add_show_end_date' => date("Y-m-d")));
|
||||
$formStyle->reset();
|
||||
$formRecord->reset();
|
||||
$formAbsoluteRebroadcast->reset();
|
||||
$formRebroadcast->reset();
|
||||
|
||||
$this->view->newForm = $this->view->render('schedule/add-show-form.phtml');
|
||||
}
|
||||
|
|
|
@ -5,31 +5,177 @@ class Application_Form_AddShowAbsoluteRebroadcastDates extends Zend_Form_SubForm
|
|||
|
||||
public function init()
|
||||
{
|
||||
//$this->setDisableLoadDefaultDecorators(true);
|
||||
|
||||
$this->setDecorators(array(
|
||||
array('ViewScript', array('viewScript' => 'form/add-show-rebroadcast-absolute.phtml'))
|
||||
));
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_date_1', array(
|
||||
'label' => 'Rebroadcast Date:',
|
||||
'class' => 'input_text',
|
||||
'required' => true,
|
||||
'value' => date("Y-m-d"),
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('YYYY-MM-DD'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_time_1', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
'class' => 'input_text',
|
||||
'required' => true,
|
||||
'value' => '0:00',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_date_2', array(
|
||||
'label' => 'Rebroadcast Date:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('YYYY-MM-DD'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_time_2', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_date_3', array(
|
||||
'label' => 'Rebroadcast Date:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('YYYY-MM-DD'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_time_3', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_date_4', array(
|
||||
'label' => 'Rebroadcast Date:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('YYYY-MM-DD'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_time_4', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_date_5', array(
|
||||
'label' => 'Rebroadcast Date:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('YYYY-MM-DD'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_absolute_time_5', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -5,33 +5,164 @@ class Application_Form_AddShowRebroadcastDates extends Zend_Form_SubForm
|
|||
|
||||
public function init()
|
||||
{
|
||||
//Add type select
|
||||
$this->setDecorators(array(
|
||||
array('ViewScript', array('viewScript' => 'form/add-show-rebroadcast.phtml'))
|
||||
));
|
||||
|
||||
//Add date select
|
||||
$this->addElement('select', 'add_show_rebroadcast_date_1', array(
|
||||
'label' => 'Rebroadcast Day:',
|
||||
'required' => true,
|
||||
'required' => false,
|
||||
'class' => ' input_select',
|
||||
'multiOptions' => array(
|
||||
"0 days" => "+0 days ",
|
||||
"1 day" => "+1 day ",
|
||||
"" => "",
|
||||
"0 days" => "+0 days",
|
||||
"1 day" => "+1 day",
|
||||
"2 days" => "+2 days",
|
||||
"3 days" => "+3 days"
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_start_time_1', array(
|
||||
'label' => 'Rebroadcast Time:',
|
||||
$this->addElement('text', 'add_show_rebroadcast_time_1', array(
|
||||
'class' => 'input_text',
|
||||
'required' => true,
|
||||
'value' => '0:00',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
//Add date select
|
||||
$this->addElement('select', 'add_show_rebroadcast_date_2', array(
|
||||
'required' => false,
|
||||
'class' => ' input_select',
|
||||
'multiOptions' => array(
|
||||
"" => "",
|
||||
"0 days" => "+0 days",
|
||||
"1 day" => "+1 day",
|
||||
"2 days" => "+2 days",
|
||||
"3 days" => "+3 days"
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_time_2', array(
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
//Add date select
|
||||
$this->addElement('select', 'add_show_rebroadcast_date_3', array(
|
||||
'required' => false,
|
||||
'class' => ' input_select',
|
||||
'multiOptions' => array(
|
||||
"" => "",
|
||||
"0 days" => "+0 days",
|
||||
"1 day" => "+1 day",
|
||||
"2 days" => "+2 days",
|
||||
"3 days" => "+3 days"
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_time_3', array(
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
//Add date select
|
||||
$this->addElement('select', 'add_show_rebroadcast_date_4', array(
|
||||
'required' => false,
|
||||
'class' => ' input_select',
|
||||
'multiOptions' => array(
|
||||
"" => "",
|
||||
"0 days" => "+0 days",
|
||||
"1 day" => "+1 day",
|
||||
"2 days" => "+2 days",
|
||||
"3 days" => "+3 days"
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_time_4', array(
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
//Add date select
|
||||
$this->addElement('select', 'add_show_rebroadcast_date_5', array(
|
||||
'required' => false,
|
||||
'class' => ' input_select',
|
||||
'multiOptions' => array(
|
||||
"" => "",
|
||||
"0 days" => "+0 days",
|
||||
"1 day" => "+1 day",
|
||||
"2 days" => "+2 days",
|
||||
"3 days" => "+3 days"
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
|
||||
// Add start time element
|
||||
$this->addElement('text', 'add_show_rebroadcast_time_5', array(
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'value' => '',
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array(
|
||||
'NotEmpty',
|
||||
array('date', false, array('HH:mm'))
|
||||
),
|
||||
'decorators' => array(
|
||||
'ViewHelper'
|
||||
)
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -14,13 +14,14 @@ class Application_Form_AddShowWhat extends Zend_Form_SubForm
|
|||
'validators' => array('NotEmpty')
|
||||
));
|
||||
|
||||
$nameInput = $this->getElement('add_show_name');
|
||||
|
||||
$nameInput->setDecorators(array(array('ViewScript', array(
|
||||
'viewScript' => 'form/add-show-block.phtml',
|
||||
'class' => 'block-display'
|
||||
))));
|
||||
|
||||
// Add URL element
|
||||
$this->addElement('text', 'add_show_url', array(
|
||||
'label' => 'Show URL:',
|
||||
'class' => 'input_text',
|
||||
'required' => false,
|
||||
'filters' => array('StringTrim'),
|
||||
'validators' => array('NotEmpty')
|
||||
));
|
||||
|
||||
// Add the description element
|
||||
$this->addElement('textarea', 'add_show_description', array(
|
||||
|
|
|
@ -5,6 +5,10 @@ class Application_Form_AddShowWhen extends Zend_Form_SubForm
|
|||
|
||||
public function init()
|
||||
{
|
||||
|
||||
//$this->setDisableLoadDefaultDecorators(true);
|
||||
//$this->removeDecorator('DtDdWrapper');
|
||||
|
||||
// Add start date element
|
||||
$this->addElement('text', 'add_show_start_date', array(
|
||||
'label' => 'Date Start:',
|
||||
|
|
|
@ -111,6 +111,7 @@ class Show {
|
|||
$show = new CcShow();
|
||||
$show->setDbName($data['add_show_name']);
|
||||
$show->setDbDescription($data['add_show_description']);
|
||||
$show->setDbUrl($data['add_show_url']);
|
||||
$show->setDbColor($data['add_show_color']);
|
||||
$show->setDbBackgroundColor($data['add_show_background_color']);
|
||||
$show->save();
|
||||
|
@ -174,20 +175,23 @@ class Show {
|
|||
}
|
||||
|
||||
//adding rows to cc_show_rebroadcast
|
||||
if($repeat_type != -1) {
|
||||
if($data['add_show_record'] && $data['add_show_rebroadcast'] && $repeat_type != -1) {
|
||||
|
||||
for($i=1; $i<=1; $i++) {
|
||||
for($i=1; $i<=5; $i++) {
|
||||
|
||||
if($data['add_show_rebroadcast_date_'.$i]) {
|
||||
|
||||
$showRebroad = new CcShowRebroadcast();
|
||||
$showRebroad->setDbDayOffset($data['add_show_rebroadcast_date_'.$i]);
|
||||
$showRebroad->setDbStartTime($data['add_show_start_time_'.$i]);
|
||||
$showRebroad->setDbStartTime($data['add_show_rebroadcast_time_'.$i]);
|
||||
$showRebroad->setDbShowId($showId);
|
||||
$showRebroad->save();
|
||||
}
|
||||
}
|
||||
else {
|
||||
}
|
||||
else if($data['add_show_record'] && $data['add_show_rebroadcast'] && $repeat_type == -1){
|
||||
|
||||
for($i=1; $i<=1; $i++) {
|
||||
for($i=1; $i<=5; $i++) {
|
||||
|
||||
if($data['add_show_rebroadcast_absolute_date_'.$i]) {
|
||||
|
||||
|
@ -229,7 +233,7 @@ class Show {
|
|||
if($onlyRecord) {
|
||||
|
||||
$sql = $sql." WHERE (starts >= '{$start_timestamp}' AND starts < timestamp '{$start_timestamp}' + interval '2 hours')";
|
||||
$sql = $sql." AND (record = TRUE)";
|
||||
$sql = $sql." AND (record = 1)";
|
||||
}
|
||||
else {
|
||||
|
||||
|
@ -510,7 +514,7 @@ class ShowInstance {
|
|||
|
||||
public function isRebroadcast() {
|
||||
$showInstance = CcShowInstancesQuery::create()->findPK($this->_instanceId);
|
||||
return $showInstance->getDbRebroadcast();
|
||||
return $showInstance->getDbOriginalShow();
|
||||
}
|
||||
|
||||
public function isRecorded() {
|
||||
|
@ -587,6 +591,16 @@ class ShowInstance {
|
|||
return "Should not overlap shows";
|
||||
}
|
||||
|
||||
$rebroadcast = $this->isRebroadcast();
|
||||
if($rebroadcast) {
|
||||
$sql = "SELECT timestamp '{$new_starts}' < (SELECT starts FROM cc_show_instances WHERE id = {$rebroadcast})";
|
||||
$isBeforeRecordedOriginal = $CC_DBC->GetOne($sql);
|
||||
|
||||
if($isBeforeRecordedOriginal === 't'){
|
||||
return "Cannot move a rebroadcast show before its original";
|
||||
}
|
||||
}
|
||||
|
||||
$this->moveScheduledShowContent($deltaDay, $hours, $mins);
|
||||
$this->setShowStart($new_starts);
|
||||
$this->setShowEnd($new_ends);
|
||||
|
|
|
@ -40,6 +40,7 @@ class CcShowTableMap extends TableMap {
|
|||
// columns
|
||||
$this->addPrimaryKey('ID', 'DbId', 'INTEGER', true, null, null);
|
||||
$this->addColumn('NAME', 'DbName', 'VARCHAR', true, 255, '');
|
||||
$this->addColumn('URL', 'DbUrl', 'VARCHAR', false, 255, '');
|
||||
$this->addColumn('DESCRIPTION', 'DbDescription', 'VARCHAR', false, 512, null);
|
||||
$this->addColumn('COLOR', 'DbColor', 'VARCHAR', false, 6, null);
|
||||
$this->addColumn('BACKGROUND_COLOR', 'DbBackgroundColor', 'VARCHAR', false, 6, null);
|
||||
|
|
|
@ -37,6 +37,13 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
*/
|
||||
protected $name;
|
||||
|
||||
/**
|
||||
* The value for the url field.
|
||||
* Note: this column has a database default value of: ''
|
||||
* @var string
|
||||
*/
|
||||
protected $url;
|
||||
|
||||
/**
|
||||
* The value for the description field.
|
||||
* @var string
|
||||
|
@ -98,6 +105,7 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
public function applyDefaultValues()
|
||||
{
|
||||
$this->name = '';
|
||||
$this->url = '';
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -130,6 +138,16 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
return $this->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [url] column value.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getDbUrl()
|
||||
{
|
||||
return $this->url;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the [description] column value.
|
||||
*
|
||||
|
@ -200,6 +218,26 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
return $this;
|
||||
} // setDbName()
|
||||
|
||||
/**
|
||||
* Set the value of [url] column.
|
||||
*
|
||||
* @param string $v new value
|
||||
* @return CcShow The current object (for fluent API support)
|
||||
*/
|
||||
public function setDbUrl($v)
|
||||
{
|
||||
if ($v !== null) {
|
||||
$v = (string) $v;
|
||||
}
|
||||
|
||||
if ($this->url !== $v || $this->isNew()) {
|
||||
$this->url = $v;
|
||||
$this->modifiedColumns[] = CcShowPeer::URL;
|
||||
}
|
||||
|
||||
return $this;
|
||||
} // setDbUrl()
|
||||
|
||||
/**
|
||||
* Set the value of [description] column.
|
||||
*
|
||||
|
@ -274,6 +312,10 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
return false;
|
||||
}
|
||||
|
||||
if ($this->url !== '') {
|
||||
return false;
|
||||
}
|
||||
|
||||
// otherwise, everything was equal, so return TRUE
|
||||
return true;
|
||||
} // hasOnlyDefaultValues()
|
||||
|
@ -298,9 +340,10 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
|
||||
$this->id = ($row[$startcol + 0] !== null) ? (int) $row[$startcol + 0] : null;
|
||||
$this->name = ($row[$startcol + 1] !== null) ? (string) $row[$startcol + 1] : null;
|
||||
$this->description = ($row[$startcol + 2] !== null) ? (string) $row[$startcol + 2] : null;
|
||||
$this->color = ($row[$startcol + 3] !== null) ? (string) $row[$startcol + 3] : null;
|
||||
$this->background_color = ($row[$startcol + 4] !== null) ? (string) $row[$startcol + 4] : null;
|
||||
$this->url = ($row[$startcol + 2] !== null) ? (string) $row[$startcol + 2] : null;
|
||||
$this->description = ($row[$startcol + 3] !== null) ? (string) $row[$startcol + 3] : null;
|
||||
$this->color = ($row[$startcol + 4] !== null) ? (string) $row[$startcol + 4] : null;
|
||||
$this->background_color = ($row[$startcol + 5] !== null) ? (string) $row[$startcol + 5] : null;
|
||||
$this->resetModified();
|
||||
|
||||
$this->setNew(false);
|
||||
|
@ -309,7 +352,7 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
$this->ensureConsistency();
|
||||
}
|
||||
|
||||
return $startcol + 5; // 5 = CcShowPeer::NUM_COLUMNS - CcShowPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
return $startcol + 6; // 6 = CcShowPeer::NUM_COLUMNS - CcShowPeer::NUM_LAZY_LOAD_COLUMNS).
|
||||
|
||||
} catch (Exception $e) {
|
||||
throw new PropelException("Error populating CcShow object", $e);
|
||||
|
@ -687,12 +730,15 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
return $this->getDbName();
|
||||
break;
|
||||
case 2:
|
||||
return $this->getDbDescription();
|
||||
return $this->getDbUrl();
|
||||
break;
|
||||
case 3:
|
||||
return $this->getDbColor();
|
||||
return $this->getDbDescription();
|
||||
break;
|
||||
case 4:
|
||||
return $this->getDbColor();
|
||||
break;
|
||||
case 5:
|
||||
return $this->getDbBackgroundColor();
|
||||
break;
|
||||
default:
|
||||
|
@ -720,9 +766,10 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
$result = array(
|
||||
$keys[0] => $this->getDbId(),
|
||||
$keys[1] => $this->getDbName(),
|
||||
$keys[2] => $this->getDbDescription(),
|
||||
$keys[3] => $this->getDbColor(),
|
||||
$keys[4] => $this->getDbBackgroundColor(),
|
||||
$keys[2] => $this->getDbUrl(),
|
||||
$keys[3] => $this->getDbDescription(),
|
||||
$keys[4] => $this->getDbColor(),
|
||||
$keys[5] => $this->getDbBackgroundColor(),
|
||||
);
|
||||
return $result;
|
||||
}
|
||||
|
@ -761,12 +808,15 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
$this->setDbName($value);
|
||||
break;
|
||||
case 2:
|
||||
$this->setDbDescription($value);
|
||||
$this->setDbUrl($value);
|
||||
break;
|
||||
case 3:
|
||||
$this->setDbColor($value);
|
||||
$this->setDbDescription($value);
|
||||
break;
|
||||
case 4:
|
||||
$this->setDbColor($value);
|
||||
break;
|
||||
case 5:
|
||||
$this->setDbBackgroundColor($value);
|
||||
break;
|
||||
} // switch()
|
||||
|
@ -795,9 +845,10 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
|
||||
if (array_key_exists($keys[0], $arr)) $this->setDbId($arr[$keys[0]]);
|
||||
if (array_key_exists($keys[1], $arr)) $this->setDbName($arr[$keys[1]]);
|
||||
if (array_key_exists($keys[2], $arr)) $this->setDbDescription($arr[$keys[2]]);
|
||||
if (array_key_exists($keys[3], $arr)) $this->setDbColor($arr[$keys[3]]);
|
||||
if (array_key_exists($keys[4], $arr)) $this->setDbBackgroundColor($arr[$keys[4]]);
|
||||
if (array_key_exists($keys[2], $arr)) $this->setDbUrl($arr[$keys[2]]);
|
||||
if (array_key_exists($keys[3], $arr)) $this->setDbDescription($arr[$keys[3]]);
|
||||
if (array_key_exists($keys[4], $arr)) $this->setDbColor($arr[$keys[4]]);
|
||||
if (array_key_exists($keys[5], $arr)) $this->setDbBackgroundColor($arr[$keys[5]]);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -811,6 +862,7 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
|
||||
if ($this->isColumnModified(CcShowPeer::ID)) $criteria->add(CcShowPeer::ID, $this->id);
|
||||
if ($this->isColumnModified(CcShowPeer::NAME)) $criteria->add(CcShowPeer::NAME, $this->name);
|
||||
if ($this->isColumnModified(CcShowPeer::URL)) $criteria->add(CcShowPeer::URL, $this->url);
|
||||
if ($this->isColumnModified(CcShowPeer::DESCRIPTION)) $criteria->add(CcShowPeer::DESCRIPTION, $this->description);
|
||||
if ($this->isColumnModified(CcShowPeer::COLOR)) $criteria->add(CcShowPeer::COLOR, $this->color);
|
||||
if ($this->isColumnModified(CcShowPeer::BACKGROUND_COLOR)) $criteria->add(CcShowPeer::BACKGROUND_COLOR, $this->background_color);
|
||||
|
@ -876,6 +928,7 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
public function copyInto($copyObj, $deepCopy = false)
|
||||
{
|
||||
$copyObj->setDbName($this->name);
|
||||
$copyObj->setDbUrl($this->url);
|
||||
$copyObj->setDbDescription($this->description);
|
||||
$copyObj->setDbColor($this->color);
|
||||
$copyObj->setDbBackgroundColor($this->background_color);
|
||||
|
@ -1472,6 +1525,7 @@ abstract class BaseCcShow extends BaseObject implements Persistent
|
|||
{
|
||||
$this->id = null;
|
||||
$this->name = null;
|
||||
$this->url = null;
|
||||
$this->description = null;
|
||||
$this->color = null;
|
||||
$this->background_color = null;
|
||||
|
|
|
@ -26,7 +26,7 @@ abstract class BaseCcShowPeer {
|
|||
const TM_CLASS = 'CcShowTableMap';
|
||||
|
||||
/** The total number of columns. */
|
||||
const NUM_COLUMNS = 5;
|
||||
const NUM_COLUMNS = 6;
|
||||
|
||||
/** The number of lazy-loaded columns. */
|
||||
const NUM_LAZY_LOAD_COLUMNS = 0;
|
||||
|
@ -37,6 +37,9 @@ abstract class BaseCcShowPeer {
|
|||
/** the column name for the NAME field */
|
||||
const NAME = 'cc_show.NAME';
|
||||
|
||||
/** the column name for the URL field */
|
||||
const URL = 'cc_show.URL';
|
||||
|
||||
/** the column name for the DESCRIPTION field */
|
||||
const DESCRIPTION = 'cc_show.DESCRIPTION';
|
||||
|
||||
|
@ -62,12 +65,12 @@ abstract class BaseCcShowPeer {
|
|||
* e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id'
|
||||
*/
|
||||
private static $fieldNames = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbName', 'DbDescription', 'DbColor', 'DbBackgroundColor', ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbName', 'dbDescription', 'dbColor', 'dbBackgroundColor', ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID, self::NAME, self::DESCRIPTION, self::COLOR, self::BACKGROUND_COLOR, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'NAME', 'DESCRIPTION', 'COLOR', 'BACKGROUND_COLOR', ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id', 'name', 'description', 'color', 'background_color', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId', 'DbName', 'DbUrl', 'DbDescription', 'DbColor', 'DbBackgroundColor', ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId', 'dbName', 'dbUrl', 'dbDescription', 'dbColor', 'dbBackgroundColor', ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID, self::NAME, self::URL, self::DESCRIPTION, self::COLOR, self::BACKGROUND_COLOR, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID', 'NAME', 'URL', 'DESCRIPTION', 'COLOR', 'BACKGROUND_COLOR', ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id', 'name', 'url', 'description', 'color', 'background_color', ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, )
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -77,12 +80,12 @@ abstract class BaseCcShowPeer {
|
|||
* e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0
|
||||
*/
|
||||
private static $fieldKeys = array (
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbName' => 1, 'DbDescription' => 2, 'DbColor' => 3, 'DbBackgroundColor' => 4, ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbName' => 1, 'dbDescription' => 2, 'dbColor' => 3, 'dbBackgroundColor' => 4, ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::NAME => 1, self::DESCRIPTION => 2, self::COLOR => 3, self::BACKGROUND_COLOR => 4, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'NAME' => 1, 'DESCRIPTION' => 2, 'COLOR' => 3, 'BACKGROUND_COLOR' => 4, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'name' => 1, 'description' => 2, 'color' => 3, 'background_color' => 4, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, )
|
||||
BasePeer::TYPE_PHPNAME => array ('DbId' => 0, 'DbName' => 1, 'DbUrl' => 2, 'DbDescription' => 3, 'DbColor' => 4, 'DbBackgroundColor' => 5, ),
|
||||
BasePeer::TYPE_STUDLYPHPNAME => array ('dbId' => 0, 'dbName' => 1, 'dbUrl' => 2, 'dbDescription' => 3, 'dbColor' => 4, 'dbBackgroundColor' => 5, ),
|
||||
BasePeer::TYPE_COLNAME => array (self::ID => 0, self::NAME => 1, self::URL => 2, self::DESCRIPTION => 3, self::COLOR => 4, self::BACKGROUND_COLOR => 5, ),
|
||||
BasePeer::TYPE_RAW_COLNAME => array ('ID' => 0, 'NAME' => 1, 'URL' => 2, 'DESCRIPTION' => 3, 'COLOR' => 4, 'BACKGROUND_COLOR' => 5, ),
|
||||
BasePeer::TYPE_FIELDNAME => array ('id' => 0, 'name' => 1, 'url' => 2, 'description' => 3, 'color' => 4, 'background_color' => 5, ),
|
||||
BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, )
|
||||
);
|
||||
|
||||
/**
|
||||
|
@ -156,12 +159,14 @@ abstract class BaseCcShowPeer {
|
|||
if (null === $alias) {
|
||||
$criteria->addSelectColumn(CcShowPeer::ID);
|
||||
$criteria->addSelectColumn(CcShowPeer::NAME);
|
||||
$criteria->addSelectColumn(CcShowPeer::URL);
|
||||
$criteria->addSelectColumn(CcShowPeer::DESCRIPTION);
|
||||
$criteria->addSelectColumn(CcShowPeer::COLOR);
|
||||
$criteria->addSelectColumn(CcShowPeer::BACKGROUND_COLOR);
|
||||
} else {
|
||||
$criteria->addSelectColumn($alias . '.ID');
|
||||
$criteria->addSelectColumn($alias . '.NAME');
|
||||
$criteria->addSelectColumn($alias . '.URL');
|
||||
$criteria->addSelectColumn($alias . '.DESCRIPTION');
|
||||
$criteria->addSelectColumn($alias . '.COLOR');
|
||||
$criteria->addSelectColumn($alias . '.BACKGROUND_COLOR');
|
||||
|
|
|
@ -8,12 +8,14 @@
|
|||
*
|
||||
* @method CcShowQuery orderByDbId($order = Criteria::ASC) Order by the id column
|
||||
* @method CcShowQuery orderByDbName($order = Criteria::ASC) Order by the name column
|
||||
* @method CcShowQuery orderByDbUrl($order = Criteria::ASC) Order by the url column
|
||||
* @method CcShowQuery orderByDbDescription($order = Criteria::ASC) Order by the description column
|
||||
* @method CcShowQuery orderByDbColor($order = Criteria::ASC) Order by the color column
|
||||
* @method CcShowQuery orderByDbBackgroundColor($order = Criteria::ASC) Order by the background_color column
|
||||
*
|
||||
* @method CcShowQuery groupByDbId() Group by the id column
|
||||
* @method CcShowQuery groupByDbName() Group by the name column
|
||||
* @method CcShowQuery groupByDbUrl() Group by the url column
|
||||
* @method CcShowQuery groupByDbDescription() Group by the description column
|
||||
* @method CcShowQuery groupByDbColor() Group by the color column
|
||||
* @method CcShowQuery groupByDbBackgroundColor() Group by the background_color column
|
||||
|
@ -43,12 +45,14 @@
|
|||
*
|
||||
* @method CcShow findOneByDbId(int $id) Return the first CcShow filtered by the id column
|
||||
* @method CcShow findOneByDbName(string $name) Return the first CcShow filtered by the name column
|
||||
* @method CcShow findOneByDbUrl(string $url) Return the first CcShow filtered by the url column
|
||||
* @method CcShow findOneByDbDescription(string $description) Return the first CcShow filtered by the description column
|
||||
* @method CcShow findOneByDbColor(string $color) Return the first CcShow filtered by the color column
|
||||
* @method CcShow findOneByDbBackgroundColor(string $background_color) Return the first CcShow filtered by the background_color column
|
||||
*
|
||||
* @method array findByDbId(int $id) Return CcShow objects filtered by the id column
|
||||
* @method array findByDbName(string $name) Return CcShow objects filtered by the name column
|
||||
* @method array findByDbUrl(string $url) Return CcShow objects filtered by the url column
|
||||
* @method array findByDbDescription(string $description) Return CcShow objects filtered by the description column
|
||||
* @method array findByDbColor(string $color) Return CcShow objects filtered by the color column
|
||||
* @method array findByDbBackgroundColor(string $background_color) Return CcShow objects filtered by the background_color column
|
||||
|
@ -200,6 +204,28 @@ abstract class BaseCcShowQuery extends ModelCriteria
|
|||
return $this->addUsingAlias(CcShowPeer::NAME, $dbName, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the url column
|
||||
*
|
||||
* @param string $dbUrl The value to use as filter.
|
||||
* Accepts wildcards (* and % trigger a LIKE)
|
||||
* @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
|
||||
*
|
||||
* @return CcShowQuery The current query, for fluid interface
|
||||
*/
|
||||
public function filterByDbUrl($dbUrl = null, $comparison = null)
|
||||
{
|
||||
if (null === $comparison) {
|
||||
if (is_array($dbUrl)) {
|
||||
$comparison = Criteria::IN;
|
||||
} elseif (preg_match('/[\%\*]/', $dbUrl)) {
|
||||
$dbUrl = str_replace('*', '%', $dbUrl);
|
||||
$comparison = Criteria::LIKE;
|
||||
}
|
||||
}
|
||||
return $this->addUsingAlias(CcShowPeer::URL, $dbUrl, $comparison);
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter the query on the description column
|
||||
*
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
<fieldset>
|
||||
<dl>
|
||||
<dt id="add_show_hosts_rebroadcast_day-label" class="block-display">
|
||||
<label for="add_show_rebroadcast_day" class="optional">Choose Days:</label>
|
||||
</dt>
|
||||
<dd id="add_show_rebroadcast_day-element" class="block-display clearfix">
|
||||
<ul class="formrow-repeat">
|
||||
<?php for($i=1; $i<=5; $i++): ?>
|
||||
<li>
|
||||
<?php echo $this->element->getElement('add_show_rebroadcast_absolute_date_'.$i) ?>
|
||||
<span class="inline-text">@</span>
|
||||
<?php echo $this->element->getElement('add_show_rebroadcast_absolute_time_'.$i) ?>
|
||||
<?php if($this->element->getElement('add_show_rebroadcast_absolute_time_'.$i)->hasErrors()) : ?>
|
||||
<?php echo var_dump($this->element->getElement('add_show_rebroadcast_absolute_time_'.$i)->getMessages()); ?>
|
||||
<?php endif; ?>
|
||||
</li>
|
||||
<?php endfor; ?>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
|
@ -0,0 +1,18 @@
|
|||
<fieldset>
|
||||
<dl>
|
||||
<dt id="add_show_hosts_rebroadcast_repeat_day-label" class="block-display">
|
||||
<label for="add_show_rebroadcast_repeat_day" class="optional">Repeat Days:</label>
|
||||
</dt>
|
||||
<dd id="add_show_rebroadcast_repeat_day-element" class="block-display clearfix">
|
||||
<ul class="formrow-repeat">
|
||||
<?php for($i=1; $i<=5; $i++): ?>
|
||||
<li>
|
||||
<?php echo $this->element->getElement('add_show_rebroadcast_date_'.$i) ?>
|
||||
<span class="inline-text">@</span>
|
||||
<?php echo $this->element->getElement('add_show_rebroadcast_time_'.$i) ?>
|
||||
</li>
|
||||
<?php endfor; ?>
|
||||
</ul>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
|
@ -124,6 +124,7 @@
|
|||
<table name="cc_show" phpName="CcShow">
|
||||
<column name="id" phpName="DbId" type="INTEGER" primaryKey="true" autoIncrement="true" required="true"/>
|
||||
<column name="name" phpName="DbName" type="VARCHAR" size="255" required="true" defaultValue=""/>
|
||||
<column name="url" phpName="DbUrl" type="VARCHAR" size="255" required="false" defaultValue=""/>
|
||||
<column name="description" phpName="DbDescription" type="VARCHAR" size="512" required="false"/>
|
||||
<column name="color" phpName="DbColor" type="VARCHAR" size="6" required="false"/>
|
||||
<column name="background_color" phpName="DbBackgroundColor" type="VARCHAR" size="6" required="false"/>
|
||||
|
|
|
@ -162,6 +162,7 @@ CREATE TABLE "cc_show"
|
|||
(
|
||||
"id" serial NOT NULL,
|
||||
"name" VARCHAR(255) default '' NOT NULL,
|
||||
"url" VARCHAR(255) default '',
|
||||
"description" VARCHAR(512),
|
||||
"color" VARCHAR(6),
|
||||
"background_color" VARCHAR(6),
|
||||
|
|
|
@ -1,278 +0,0 @@
|
|||
=======================================================================
|
||||
*** 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.
|
|
@ -1,58 +0,0 @@
|
|||
-----------------------------------------------------------------------
|
||||
*** 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
|
|
@ -1,18 +0,0 @@
|
|||
=======================================================================
|
||||
*** 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.
|
||||
|
||||
=======================================================================
|
|
@ -1,340 +0,0 @@
|
|||
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.
|
|
@ -1,502 +0,0 @@
|
|||
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!
|
|
@ -1,128 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# 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
|
|
@ -1,662 +0,0 @@
|
|||
# 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:
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,76 +0,0 @@
|
|||
.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>>
|
|
@ -1,95 +0,0 @@
|
|||
<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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,722 +0,0 @@
|
|||
.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>>
|
|
@ -1,775 +0,0 @@
|
|||
<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
|
@ -1,226 +0,0 @@
|
|||
.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>>
|
|
@ -1,252 +0,0 @@
|
|||
<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>>
|
|
@ -1,220 +0,0 @@
|
|||
.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>>
|
|
@ -1,248 +0,0 @@
|
|||
<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>>
|
|
@ -1,50 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# 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/*
|
|
@ -1,435 +0,0 @@
|
|||
# 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
|
@ -1,714 +0,0 @@
|
|||
\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}
|
|
@ -1,50 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# 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/*
|
||||
|
|
@ -1,432 +0,0 @@
|
|||
# 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
|
@ -1,279 +0,0 @@
|
|||
=======================================================================
|
||||
*** 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.
|
|
@ -1,43 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# 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
|
|
@ -1,726 +0,0 @@
|
|||
# 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
|
@ -1,323 +0,0 @@
|
|||
=======================================================================
|
||||
*** 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.
|
||||
|
||||
=======================================================================
|
|
@ -1,23 +0,0 @@
|
|||
-----------------------------------------------------------------------
|
||||
*** 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).
|
|
@ -1,219 +0,0 @@
|
|||
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
|
@ -1,142 +0,0 @@
|
|||
#! /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
|
@ -1,269 +0,0 @@
|
|||
/* 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
|
@ -1,530 +0,0 @@
|
|||
#! /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:
|
|
@ -1,297 +0,0 @@
|
|||
# ---
|
||||
# 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.
|
|
@ -1,297 +0,0 @@
|
|||
# ---
|
||||
# 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.
|
|
@ -1,52 +0,0 @@
|
|||
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
|
|
@ -1,586 +0,0 @@
|
|||
# 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:
|
|
@ -1,170 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
#ifndef INCLUDED_ECA_COMHELP_H
|
||||
#define INCLUDED_ECA_COMHELP_H
|
||||
|
||||
const char* ecasound_parameter_help(void);
|
||||
|
||||
#endif
|
|
@ -1,44 +0,0 @@
|
|||
#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 */
|
|
@ -1,220 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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 */
|
|
@ -1,60 +0,0 @@
|
|||
#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 */
|
|
@ -1,557 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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);
|
||||
}
|
|
@ -1,78 +0,0 @@
|
|||
#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 */
|
|
@ -1,81 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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;
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
#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 */
|
|
@ -1,925 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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;
|
||||
}
|
|
@ -1,72 +0,0 @@
|
|||
#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 */
|
|
@ -1,222 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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();
|
||||
}
|
|
@ -1,28 +0,0 @@
|
|||
#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 */
|
|
@ -1,31 +0,0 @@
|
|||
# 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 -
|
|
@ -1,94 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# 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
|
|
@ -1,736 +0,0 @@
|
|||
# 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:
|
|
@ -1,117 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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";
|
||||
}
|
|
@ -1,244 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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);
|
||||
}
|
|
@ -1,340 +0,0 @@
|
|||
/*
|
||||
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);
|
||||
}
|
|
@ -1,237 +0,0 @@
|
|||
#!/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()
|
|
@ -1,233 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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);
|
||||
}
|
|
@ -1,757 +0,0 @@
|
|||
/**
|
||||
* 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;
|
||||
}
|
|
@ -1,593 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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
|
@ -1,120 +0,0 @@
|
|||
// ------------------------------------------------------------------------
|
||||
// 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());
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
#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 */
|
|
@ -1,212 +0,0 @@
|
|||
# --------------------------------------------------------------------
|
||||
# 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
|
|
@ -1,13 +0,0 @@
|
|||
# ----------------------------------------------------------------------
|
||||
# File: ecasound/examples/Makefile.am
|
||||
# Description: Example applications that use Ecasound libraries
|
||||
# License: GPL (see ecasound/{AUTHORS,COPYING})
|
||||
# ----------------------------------------------------------------------
|
||||
|
||||
EXTRA_DIST = README \
|
||||
ecatrimsilence.sh \
|
||||
ecidoc_example.c \
|
||||
ecidoc_example.cpp \
|
||||
ecidoc_example.py \
|
||||
normalize.py
|
||||
AUTOMAKE_OPTIONS = foreign
|
|
@ -1,396 +0,0 @@
|
|||
# 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/examples/Makefile.am
|
||||
# Description: Example applications that use 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@
|
||||
subdir = examples
|
||||
DIST_COMMON = README $(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 = README \
|
||||
ecatrimsilence.sh \
|
||||
ecidoc_example.c \
|
||||
ecidoc_example.cpp \
|
||||
ecidoc_example.py \
|
||||
normalize.py
|
||||
|
||||
AUTOMAKE_OPTIONS = foreign
|
||||
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 examples/Makefile'; \
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --foreign examples/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)
|
||||
|
||||
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
|
||||
|
||||
# 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:
|
|
@ -1,21 +0,0 @@
|
|||
=======================================================================
|
||||
*** Ecasound - Miscellanous example source code ***
|
||||
=======================================================================
|
||||
|
||||
This directory contains various clips of example code demonstrating
|
||||
the use of libecasound and the ecasound control interface (ECI).
|
||||
To see examples of ecasound use (not programming related), see
|
||||
the file 'Documentation/examples.html'.
|
||||
|
||||
-----------------------------------------------------------------------
|
||||
Included files
|
||||
-----------------------------------------------------------------------
|
||||
|
||||
- example programs from the "Ecasound Control Interface Documentation"
|
||||
- ecadoc_example.c [C]
|
||||
- ecadoc_example.cpp [C++]
|
||||
- ecadoc_example.py [Python]
|
||||
- Python scripts
|
||||
- normalize.py
|
||||
|
||||
=======================================================================
|
|
@ -1,30 +0,0 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# description: removes silence from the beginning and the end
|
||||
# of a file
|
||||
# version: 20050807-3
|
||||
# usage: ecatrimsilence.sh <inputfile>
|
||||
|
||||
tmp=ecatrimsilence-tmp.wav
|
||||
ECASOUND=ecasound
|
||||
|
||||
if test -e $tmp ; then
|
||||
echo "error: temp file $tmp exists, unable to continue..."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if test ! -e $1 ; then
|
||||
echo "error: input file $1 does not exist, unable to continue..."
|
||||
exit 2
|
||||
fi
|
||||
|
||||
format=`ecalength -sf $1`
|
||||
|
||||
echo "Trimming file ${1}."
|
||||
echo "Removing silence at the end..."
|
||||
$ECASOUND -q -f:${format} -i reverse,${1} -o ${tmp} -ge:1,0,1 -b:64
|
||||
rm -f ${1}
|
||||
echo "Removing silence at the beginning..."
|
||||
$ECASOUND -q -f:${format} -i reverse,${tmp} -o ${1} -ge:1,0,1 -b:64
|
||||
rm -f ${tmp}
|
||||
echo "Done."
|
|
@ -1,59 +0,0 @@
|
|||
/*************************************************************************
|
||||
* 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.
|
||||
************************************************************************/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <ecasoundc.h>
|
||||
|
||||
/* compile with:
|
||||
*
|
||||
* gcc -o ecidoc_example ecidoc_example.c `libecasoundc-config --cflags --libs`
|
||||
*/
|
||||
|
||||
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 foo.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);
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
/*************************************************************************
|
||||
* 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.
|
||||
************************************************************************/
|
||||
|
||||
#include <iostream>
|
||||
#include <unistd.h>
|
||||
#include <eca-control-interface.h>
|
||||
|
||||
/* compile with:
|
||||
*
|
||||
* c++ -o ecidoc_example ecidoc_example.cpp `libecasoundc-config --cflags --libs`
|
||||
*/
|
||||
|
||||
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 foo.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");
|
||||
std::cerr << "Chain operator status: " << e.last_string() << std::endl;
|
||||
|
||||
return(0);
|
||||
}
|
|
@ -1,42 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# 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.
|
||||
# -----------------------------------------------------------------------
|
||||
|
||||
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 foo.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()
|
|
@ -1,67 +0,0 @@
|
|||
#!/usr/local/bin/python
|
||||
|
||||
# -----------------------------------------------------------------------
|
||||
# Example of an audio file volume normalizer (peak amplitude).
|
||||
#
|
||||
# 1. Takes the filename to be processed from the command line.
|
||||
# 2. Runs the audio file through ecasound's volume analyzer.
|
||||
# 3. If the signal isn't normalized (gain factor > 1), it is amplified
|
||||
# (gain factor from the analyzer) and the original file is replaced.
|
||||
# 4. Removes the temp file and exits.
|
||||
#
|
||||
# Known "bugs":
|
||||
# - if ecasound's internal sample rate doesn't match audio file's
|
||||
# sample rate, signal will get resampled twice
|
||||
# - might change the audio format of the processed files
|
||||
# -----------------------------------------------------------------------
|
||||
|
||||
import os
|
||||
import sys
|
||||
from tempfile import mktemp
|
||||
from pyeca import *
|
||||
|
||||
# check arguments
|
||||
if len(sys.argv) < 2: sys.exit(-1)
|
||||
filename = sys.argv[1]
|
||||
if not os.path.isfile(filename): sys.exit(-1)
|
||||
tmpfile = mktemp(".wav")
|
||||
|
||||
# create and configure the 'analyze' chainsetup
|
||||
e = ECA_CONTROL_INTERFACE()
|
||||
e.command("cs-add analyze")
|
||||
e.command("c-add 1")
|
||||
print "Normalizing file " + filename
|
||||
print "Using tempfile " + tmpfile
|
||||
e.command("ai-add " + filename)
|
||||
e.command("ao-add " + tmpfile)
|
||||
e.command("cop-add -ev")
|
||||
print "Analyzing sample data."
|
||||
e.command("cs-connect")
|
||||
e.command("run")
|
||||
e.command("cop-select 1")
|
||||
e.command("copp-select 2")
|
||||
e.command("copp-get")
|
||||
gain_factor = e.last_float()
|
||||
e.command("cs-disconnect")
|
||||
if gain_factor <= 1:
|
||||
print "File already normalized!"
|
||||
sys.exit(0)
|
||||
|
||||
# create and config the 'apply' chainsetup
|
||||
a = ECA_CONTROL_INTERFACE()
|
||||
a.command("cs-add apply")
|
||||
a.command("c-add 1")
|
||||
a.command("ai-add " + tmpfile)
|
||||
a.command("ao-add " + filename)
|
||||
print "Applying gain factor: ", gain_factor
|
||||
a.command("cop-add -ea:100")
|
||||
a.command("cop-select 1")
|
||||
a.command("copp-select 1")
|
||||
a.command_float_arg("copp-set", gain_factor * 100)
|
||||
a.command("cs-connect")
|
||||
a.command("run")
|
||||
|
||||
# remove the tempfile and exit
|
||||
os.remove(tmpfile)
|
||||
print "Done!"
|
||||
sys.exit(0)
|
|
@ -1,21 +0,0 @@
|
|||
# --------------------------------------------------------------------
|
||||
# ecasound / generic oscillator presets
|
||||
# --------------------------------------------------------------------
|
||||
#
|
||||
# - all lines beginning with a '#' are ignored
|
||||
# - '\' can be used to break long lines
|
||||
# - preset format:
|
||||
# "preset_number start_value end_value pos1 value1 pos2 value2 ..."
|
||||
# - requirements:
|
||||
# - all specified positions and values must be between 0.0 and 1.0
|
||||
# - pos1 < pos2 < ... < posN
|
||||
# - there must be a posN for every valueN
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
#
|
||||
# a triangle wave - start=0.0, end=0.0, pos1=0.5, value1=1.00
|
||||
0 = 0.0 0.0 0.5 1.00
|
||||
# linear wave - start=0.0 end=1.0
|
||||
1 = 0.0 1.0
|
||||
# random bounces
|
||||
2 = 0.5 0.5 0.2 0.1 0.3 0.7 0.4 0.1 0.5 0.9 0.6 0.05 0.8 0.9 0.2
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue