Merge branch 'master' of dev.sourcefabric.org:airtime

This commit is contained in:
paul.baranowski 2011-03-06 11:05:23 -05:00
commit 3727195c54
548 changed files with 192982 additions and 161 deletions

View File

@ -100,6 +100,10 @@
<actionMethod actionName="index"/>
<actionMethod actionName="help"/>
</controllerFile>
<controllerFile controllerName="Recorder">
<actionMethod actionName="index"/>
<actionMethod actionName="getShowSchedule"/>
</controllerFile>
</controllersDirectory>
<formsDirectory>
<formFile formName="Login"/>
@ -325,6 +329,12 @@
<viewControllerScriptsDirectory forControllerName="Schedule">
<viewScriptFile forActionName="cancelShow"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Recorder">
<viewScriptFile forActionName="index"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Recorder">
<viewScriptFile forActionName="getShowSchedule"/>
</viewControllerScriptsDirectory>
</viewScriptsDirectory>
<viewHelpersDirectory/>
<viewFiltersDirectory enabled="false"/>
@ -370,6 +380,7 @@
<testApplicationControllerFile filesystemName="NowplayingControllerTest.php"/>
<testApplicationControllerFile filesystemName="PreferenceControllerTest.php"/>
<testApplicationControllerFile filesystemName="DashboardControllerTest.php"/>
<testApplicationControllerFile filesystemName="RecorderControllerTest.php"/>
</testApplicationControllerDirectory>
</testApplicationDirectory>
<testLibraryDirectory>

View File

@ -28,6 +28,10 @@ Linked code:
- Note: Only used for development, not needed to run Airtime.
- License: LGPLv3
* Soundcloud php api wrapper
- https://github.com/mptre/php-soundcloud/blob/master/Services/Soundcloud.php
- License: MIT
----------------
Non-linked code:
----------------

View File

@ -21,7 +21,8 @@ $ccAcl->add(new Zend_Acl_Resource('library'))
->add(new Zend_Acl_Resource('nowplaying'))
->add(new Zend_Acl_Resource('search'))
->add(new Zend_Acl_Resource('dashboard'))
->add(new Zend_Acl_Resource('preference'));
->add(new Zend_Acl_Resource('preference'))
->add(new Zend_Acl_Resource('recorder'));
/** Creating permissions */
$ccAcl->allow('G', 'index')
@ -29,13 +30,13 @@ $ccAcl->allow('G', 'index')
->allow('G', 'error')
->allow('G', 'nowplaying')
->allow('G', 'api')
->allow('G', 'recorder')
->allow('G', 'schedule')
->allow('G', 'dashboard')
->allow('H', 'library')
->allow('H', 'search')
->allow('H', 'plupload')
->allow('H', 'playlist')
->allow('H', 'sideplaylist')
->allow('A', 'user')
->allow('A', 'preference');

View File

@ -0,0 +1,32 @@
<?php
class RecorderController extends Zend_Controller_Action
{
public function init()
{
$ajaxContext = $this->_helper->getHelper('contextSwitch');
$ajaxContext->addActionContext('get-show-schedule', 'json')
->initContext();
}
public function indexAction()
{
// action body
}
public function getShowScheduleAction()
{
//$from = $this->_getParam("from");
//$to = $this->_getParam("to");
$today_timestamp = date("Y-m-d H:i:s");
$this->view->shows = Show::getShows($today_timestamp, null, $excludeInstance=NULL, $onlyRecord=TRUE);
}
}

View File

@ -188,7 +188,7 @@ class ScheduleController extends Zend_Controller_Action
$this->view->showContent = $show->getShowContent();
$this->view->timeFilled = $show->getTimeScheduled();
$this->view->percentFilled = $show->getPercentScheduledInRange();
$this->view->percentFilled = $show->getPercentScheduled();
$this->view->chosen = $this->view->render('schedule/scheduled-content.phtml');
unset($this->view->showContent);
@ -237,7 +237,7 @@ class ScheduleController extends Zend_Controller_Action
$this->view->showContent = $show->getShowContent();
$this->view->timeFilled = $show->getTimeScheduled();
$this->view->percentFilled = $show->getPercentScheduledInRange();
$this->view->percentFilled = $show->getPercentScheduled();
$this->view->chosen = $this->view->render('schedule/scheduled-content.phtml');
unset($this->view->showContent);
}
@ -268,7 +268,7 @@ class ScheduleController extends Zend_Controller_Action
$this->view->timeFilled = $show->getTimeScheduled();
$this->view->showName = $show->getName();
$this->view->showLength = $show->getShowLength();
$this->view->percentFilled = $show->getPercentScheduledInRange();
$this->view->percentFilled = $show->getPercentScheduled();
$this->view->s_wday = $dateInfo_s['weekday'];
$this->view->s_month = $dateInfo_s['month'];

View File

@ -110,10 +110,11 @@ class Zend_Controller_Plugin_Acl extends Zend_Controller_Plugin_Abstract
{
$controller = strtolower($request->getControllerName());
if ($controller == 'api'){
$this->setRoleName("G");
} else if (!Zend_Auth::getInstance()->hasIdentity()){
if ($controller == 'api' || $controller == 'recorder'){
$this->setRoleName("G");
}
else if (!Zend_Auth::getInstance()->hasIdentity()){
if ($controller !== 'login') {

View File

@ -2,92 +2,91 @@
class Application_Model_Nowplaying
{
/*
public static function InsertBlankRow($i, $rows){
$startDateFull = $rows[$i-1][3];
$endDateFull = $rows[$i][2];
$startDate = explode(".", $startDateFull);
$endDate = explode(".", $endDateFull);
public static function FindBeginningOfShow($rows){
$numRows = count($rows);
$epochStartMS = strtotime($startDate[0])*1000;
$epochEndMS = strtotime($endDate[0])*1000;
$newCopy = array();
if (count($startDate) > 1)
$epochStartMS += $startDate[1];
if (count($endDate) > 1)
$epochEndMS += $endDate[1];
for ($i=0; $i<$numRows; $i++){
$currentRow = $rows[$i];
if ($i == 0 || ($i != 0 && $currentRow['instance_id'] != $rows[$i-1]['instance_id'])){
//$currentRow is first instance of a show.
$group = $currentRow;
$group['group'] = 'x';
$group['item_starts'] = $group['show_starts'];
$group['item_ends'] = $group['show_ends'];
$blankRow = array(array("b", $startDateFull, $startDateFull, $endDate, Application_Model_DateHelper::ConvertMSToHHMMSSmm($epochEndMS - $epochStartMS), "-", "-", "-", "-" , "-", "", ""));
array_splice($rows, $i, 0, $blankRow);
return $rows;
}
public static function FindGaps($rows){
$n = count($rows);
$blankRowIndices = array();
$arrayIndexOffset = 0;
if ($n < 2)
return $rows;
for ($i=1; $i<$n; $i++){
if ($rows[$i-1][3] != $rows[$i][2])
array_push($blankRowIndices, $i);
array_push($newCopy, $group);
}
array_push($newCopy, $currentRow);
}
for ($i=0, $n=count($blankRowIndices); $i<$n; $i++){
$rows = Application_Model_Nowplaying::InsertBlankRow($blankRowIndices[$i]+$arrayIndexOffset, $rows);
$arrayIndexOffset++;
}
return $rows;
return $newCopy;
}
*/
/*
public static function FindGapsBetweenShows($showsMap){
public static function FindGapAtEndOfShow($rows){
$numRows = count($rows);
$previousShow = null;
foreach($showsMap as $k => $show){
$currentShow = $showsMap[$k];
$newCopy = array();
if (!is_null($previousShow)){
$diff = strtotime($currentShow['starts']) - strtotime($previousShow['ends'])
if ($$diff != 0){
//array_splice($showsMap, $i, 0, $blankRow);
for ($i=0; $i<$numRows; $i++){
$currentRow = $rows[$i];
array_push($newCopy, $currentRow);
if ($i+1 == $numRows || ($i+1 !=$numRows && $currentRow['instance_id'] != $rows[$i+1]['instance_id'])){
//$row is the last instance in the show.
if ($currentRow['item_ends'] == ""){
//show is empty and has no scheduled items in it. Therefore
//the gap is the entire length of the show.
$currentRow['item_ends'] = $currentRow['show_starts'];
}
$diff = strtotime($currentRow['show_ends']) - strtotime($currentRow['item_ends']);
if ($diff > 0){
//gap at the end of show. Lets create a "gap" row
$gap = $currentRow;
$gap['gap'] = '';
$gap['item_starts'] = $diff;
array_push($newCopy, $gap);
}
}
$previousShow = $showsMap[$k];
}
return $showsMap;
return $newCopy;
}
*/
public static function FindGapAtEndOfShow($show, $rows){
$showStartTime = $show['starts'];
$showEndTime = $show['ends'];
if (count($rows) > 1){
$lastItem = $rows[count($rows)-1];
$lastItemEndTime = $lastItem['ends'];
} else {
$lastItemEndTime = $showStartTime;
public static function FilterRowsByDate($rows, $date, $startCutoff, $endCutoff){
$dateNow = new Application_Model_DateHelper;
$timeNow = $dateNow->getDate();
$data = array();
//iterate over each show, and calculate information for it.
$numItems = count($rows);
for ($i=0; $i<$numItems; $i++){
$item = $rows[$i];
if ((strtotime($item['item_ends']) > $date->getEpochTime() - $startCutoff
&& strtotime($item['item_starts']) < $date->getEpochTime() + $endCutoff) || array_key_exists("group", $item) || array_key_exists("gap", $item)){
if (array_key_exists("group", $item)){
$type = "g";
} else if (array_key_exists("gap", $item)){
$type = "b";
} else if (strtotime($item['item_ends']) < strtotime($timeNow)){
$type = "p";
} else if (strtotime($item['item_starts']) < strtotime($timeNow) && strtotime($timeNow) < strtotime($item['item_ends'])
&& strtotime($item['show_starts']) < strtotime($timeNow) && strtotime($timeNow) < strtotime($item['show_ends'])){
$type = "c";
} else {
$type = "n";
}
array_push($data, array($type, $item["item_starts"], $item["item_starts"], $item["item_ends"], $item["clip_length"], $item["track_title"], $item["artist_name"], $item["album_title"], $item["playlist_name"], $item["show_name"], $item["instance_id"]));
}
}
$diff = Application_Model_DateHelper::TimeDiff($lastItemEndTime, $showEndTime);
if ($diff <= 0){
//ok!
return null;
} else {
//There is a gap at the end of the show. Return blank row
return array("b", $diff, "-", "-", "-", "-", "-", "-", "-", "-", "-", "-");
}
return $data;
}
public static function GetDataGridData($viewType, $dateString){
@ -105,44 +104,19 @@ class Application_Model_Nowplaying
$timeNow = $date->getDate();
$startCutoff = $date->getNowDayStartDiff();
$endCutoff = $date->getNowDayEndDiff();
$endCutoff = $date->getNowDayEndDiff();
}
$showsMap = Show_DAL::GetShowsInRange($timeNow, $startCutoff, $endCutoff);
$rows = Show_DAL::GetShowsInRange($timeNow, $startCutoff, $endCutoff);
$rows = Application_Model_Nowplaying::FindBeginningOfShow($rows);
$rows = Application_Model_Nowplaying::FindGapAtEndOfShow($rows);
//$rows = FindGapsBetweenShows
$data = Application_Model_Nowplaying::FilterRowsByDate($rows, $date, $startCutoff, $endCutoff);
//iterate over each show, and calculate information for it.
foreach($showsMap as $k => $show){
$rows = Schedule::GetShowInstanceItems($k);
$gapRow = Application_Model_Nowplaying::FindGapAtEndOfShow($showsMap[$k], $rows);
foreach ($rows as $item){
//check if this item is in todays date range
if (strtotime($item['ends']) > $date->getEpochTime() - $startCutoff
&& strtotime($item['starts']) < $date->getEpochTime() + $endCutoff){
if ($item['ends'] < $timeNow){
$type = "p";
} else if ($item['starts'] < $timeNow && $timeNow < $item['ends']){
$type = "c";
} else {
$type = "n";
}
array_push($showsMap[$k]['items'], array($type, $item["starts"], $item["starts"], $item["ends"], $item["clip_length"], $item["track_title"], $item["artist_name"],
$item["album_title"], $item["name"], $item["show_name"], $item["instance_id"], $item["group_id"]));
}
}
if (!is_null($gapRow))
array_push($showsMap[$k]['items'], $gapRow);
}
//$showsMap = Application_Model_Nowplaying::FindGapsBetweenShows($showsMap);
$date = new Application_Model_DateHelper;
$timeNow = $date->getDate();
return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$showsMap);
return array("currentShow"=>Show_DAL::GetCurrentShow($timeNow), "rows"=>$data);
}
}

View File

@ -278,12 +278,11 @@ class Schedule {
return ($count == '0');
}
public static function getTimeUnScheduledInRange($s_datetime, $e_datetime) {
public static function getTimeUnScheduledInRange($instance_id, $s_datetime, $e_datetime) {
global $CC_CONFIG, $CC_DBC;
$sql = "SELECT SUM(clip_length) FROM ".$CC_CONFIG["scheduleTable"]."
WHERE (starts >= '{$s_datetime}')
AND (ends <= '{$e_datetime}')";
$sql = "SELECT SUM(clip_length) FROM $CC_CONFIG[scheduleTable]"
." WHERE instance_id = $instance_id";
$time = $CC_DBC->GetOne($sql);
@ -313,6 +312,20 @@ class Schedule {
return $res;
}
public static function GetTotalShowTime($instance_id) {
global $CC_CONFIG, $CC_DBC;
$sql = "SELECT SUM(clip_length) FROM $CC_CONFIG[scheduleTable]"
." WHERE instance_id = $instance_id";
$res = $CC_DBC->GetOne($sql);
if(is_null($res))
return 0;
return $res;
}
public static function getPercentScheduledInRange($s_datetime, $e_datetime) {
@ -337,6 +350,25 @@ class Schedule {
return $percent;
}
public static function GetPercentScheduled($instance_id, $s_datetime, $e_datetime){
$time = Schedule::GetTotalShowTime($instance_id);
$s_epoch = strtotime($s_datetime);
$e_epoch = strtotime($e_datetime);
$con = Propel::getConnection(CcSchedulePeer::DATABASE_NAME);
$sql = "SELECT EXTRACT(EPOCH FROM INTERVAL '{$time}')";
$r = $con->query($sql);
$i_epoch = $r->fetchColumn(0);
$percent = ceil(($i_epoch / ($e_epoch - $s_epoch)) * 100);
if ($percent > 100)
$percent = 100;
return $percent;
}
/**
* Return TRUE if file is going to be played in the future.
@ -490,7 +522,8 @@ class Schedule {
." WHERE st.playlist_id = pt.id"
." AND st.file_id = ft.id"
." AND st.instance_id = si.id"
." AND si.show_id = show.id";
." AND si.show_id = show.id"
." AND st.starts < si.ends";
if ($timePeriod < 0){
$sql .= " AND st.ends < TIMESTAMP '$timeStamp'"

View File

@ -175,15 +175,26 @@ class Show {
Show::populateShowUntilLastGeneratedDate($showId);
}
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL) {
public static function getShows($start_timestamp, $end_timestamp, $excludeInstance=NULL, $onlyRecord=FALSE) {
global $CC_DBC;
$sql = "SELECT starts, ends, show_id, name, description, color, background_color, cc_show_instances.id AS instance_id
FROM cc_show_instances
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id
WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
LEFT JOIN cc_show ON cc_show.id = cc_show_instances.show_id";
//only want shows that are starting at the time or later.
if($onlyRecord) {
$sql = $sql." WHERE (starts >= '{$start_timestamp}' AND starts < timestamp '{$start_timestamp}' + interval '2 hours')";
$sql = $sql." AND (record = TRUE)";
}
else {
$sql = $sql." WHERE ((starts >= '{$start_timestamp}' AND starts < '{$end_timestamp}')
OR (ends > '{$start_timestamp}' AND ends <= '{$end_timestamp}')
OR (starts <= '{$start_timestamp}' AND ends >= '{$end_timestamp}'))";
}
if(isset($excludeInstance)) {
foreach($excludeInstance as $instance) {
@ -196,7 +207,6 @@ class Show {
}
//echo $sql;
return $CC_DBC->GetAll($sql);
}
@ -446,6 +456,10 @@ class ShowInstance {
return $showInstance->getDbShowId();
}
public function getShowInstanceId() {
return $this->_instanceId;
}
public function getName() {
$show = CcShowQuery::create()->findPK($this->getShowId());
return $show->getDbName();
@ -625,11 +639,8 @@ class ShowInstance {
}
public function getTimeScheduled() {
$start_timestamp = $this->getShowStart();
$end_timestamp = $this->getShowEnd();
$time = Schedule::getTimeScheduledInRange($start_timestamp, $end_timestamp);
$instance_id = $this->getShowInstanceId();
$time = Schedule::GetTotalShowTime($instance_id);
return $time;
}
@ -638,8 +649,9 @@ class ShowInstance {
$start_timestamp = $this->getShowStart();
$end_timestamp = $this->getShowEnd();
$instance_id = $this->getShowInstanceId();
$time = Schedule::getTimeUnScheduledInRange($start_timestamp, $end_timestamp);
$time = Schedule::getTimeUnScheduledInRange($instance_id, $start_timestamp, $end_timestamp);
return $time;
}
@ -652,6 +664,14 @@ class ShowInstance {
return Schedule::getPercentScheduledInRange($start_timestamp, $end_timestamp);
}
public function getPercentScheduled(){
$start_timestamp = $this->getShowStart();
$end_timestamp = $this->getShowEnd();
$instance_id = $this->getShowInstanceId();
return Schedule::GetPercentScheduled($instance_id, $start_timestamp, $end_timestamp);
}
public function getShowLength(){
global $CC_DBC;
@ -760,32 +780,34 @@ class Show_DAL{
public static function GetShowsInRange($timeNow, $start, $end){
global $CC_CONFIG, $CC_DBC;
$sql = "SELECT *,"
." si.starts as start_timestamp,"
." si.ends as end_timestamp,"
." si.id as instance_id"
." FROM "
." $CC_CONFIG[showInstances] si,"
." $CC_CONFIG[showTable] s"
." WHERE si.show_id = s.id"
." AND ((si.starts < TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends > TIMESTAMP '$timeNow' - INTERVAL '$start seconds')"
$sql = "SELECT"
." si.starts as show_starts,"
." si.ends as show_ends,"
." st.starts as item_starts,"
." st.ends as item_ends,"
." st.clip_length as clip_length,"
." ft.track_title as track_title,"
." ft.artist_name as artist_name,"
." ft.album_title as album_title,"
." s.name as show_name,"
." si.id as instance_id,"
." pt.name as playlist_name"
." FROM $CC_CONFIG[showInstances] si"
." LEFT JOIN $CC_CONFIG[scheduleTable] st"
." ON st.instance_id = si.id"
." LEFT JOIN $CC_CONFIG[playListTable] pt"
." ON st.playlist_id = pt.id"
." LEFT JOIN $CC_CONFIG[filesTable] ft"
." ON st.file_id = ft.id"
." LEFT JOIN $CC_CONFIG[showTable] s"
." ON si.show_id = s.id"
." WHERE ((si.starts < TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends > TIMESTAMP '$timeNow' - INTERVAL '$start seconds')"
." OR (si.starts > TIMESTAMP '$timeNow' - INTERVAL '$start seconds' AND si.ends < TIMESTAMP '$timeNow' + INTERVAL '$end seconds')"
." OR (si.starts < TIMESTAMP '$timeNow' + INTERVAL '$end seconds' AND si.ends > TIMESTAMP '$timeNow' + INTERVAL '$end seconds'))"
." ORDER BY si.starts";
." AND (st.starts < si.ends)"
." ORDER BY st.starts";
$rows = $CC_DBC->GetAll($sql);
$showsMap = array();
$rowsCount = count($rows);
for ($i=0; $i<$rowsCount; $i++){
$rows[$i]['items'] = array();
array_push($rows[$i]['items'],
array("s", $rows[$i]["starts"], $rows[$i]["starts"], $rows[$i]["ends"], "", "", "", "", "", $rows[$i]["name"], $rows[$i]["instance_id"], ""));
$showsMap[$rows[$i]['instance_id']] = $rows[$i];
}
return $showsMap;
return $CC_DBC->GetAll($sql);
}
}

View File

@ -1655,7 +1655,7 @@ class StoredFile {
$fromTable = "cc_playlist AS pl LEFT JOIN cc_playlisttimes AS plt USING(id) LEFT JOIN cc_subjs AS sub ON pl.editedby = sub.id";
$datatables["optWhere"][] = "plt.length <= INTERVAL '{$p_length}'";
$datatables["optWhere"][] = "INTERVAL '{$p_length}' > INTERVAL '00:00:00'";
$datatables["optWhere"][] = "plt.length > INTERVAL '00:00:00'";
return StoredFile::searchFiles($fromTable, $datatables);

View File

@ -0,0 +1,22 @@
<?php
require_once 'soundcloud-api/Services/Soundcloud.php';
class Airtime_View_Helper_SoundCloudLink extends Zend_View_Helper_Abstract
{
public function soundCloudLink()
{
$request = Zend_Controller_Front::getInstance()->getRequest();
$host = $request->getHttpHost();
$controller = $request->getControllerName();
$action = $request->getActionName();
$redirectUrl = "http://{$host}/{$controller}/{$action}";
$soundcloud = new Services_Soundcloud('2CLCxcSXYzx7QhhPVHN4A', 'pZ7beWmF06epXLHVUP1ufOg2oEnIt9XhE8l8xt0bBs', $redirectUrl);
$authorizeUrl = $soundcloud->getAuthorizeUrl();
return $authorizeUrl;
}
}

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>AirtimeRecorder</b> and script/action name <b>index</b></center>

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>getShowSchedule</b></center>

View File

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Recorder</b> and script/action name <b>index</b></center>

View File

@ -28,6 +28,7 @@
<div id="show_progressbar"></div>
<span id="show_length" class="time"><?php echo $this->showLength; ?></span>
</div>
<div id="show_time_warning"></div>
</div>
</div>
</div>

278
ecasound-2.7.2/AUTHORS Normal file
View File

@ -0,0 +1,278 @@
=======================================================================
*** Ecasound - AUTHORS file ***
=======================================================================
Note about author information in version control (git)
------------------------------------------------------
For recent development history (since August 2008), the Ecasound git
repository (see:
- http://ecasound.git.sourceforge.net/git/gitweb.cgi?p=ecasound )
... contains accurate author information. For earlier commits, the git
repository does not provide an accurate view, as all of these
pre-2008/Aug patches were committed by the release manager. However,
even in the older commits, the original author (if different from
commit author), is identified in the patch description (e.g. "Patch
from.." or "Patch by..").
Main author, coordination of development
========================================
Kai Vehmanen [kaiv] (kvehmanen -at- eca -dot- cx)
New functionality, refactoring old code
=======================================
Allie, Stuart [allies] (stuart -dot- allie -at- hydro -dot- com -dot- au)
Added EIAM command set for controller parameters (ctrlp-*), bugfixes.
Bowman, Brad [bowman]
Perl ECI binding, bug hunting.
Chappell, Jesse [jesse] (jesse -at- essej -dot- net)
Improvements to libsndfile support, various bugfixes.
Coker, Rob [rcs] (rcs -at- birch -dot- net)
Pulse gate (-eemp) code.
Cunningham, Jeffrey [jeffrey] (jeffrey -at- cunningham -dot- net)
Various improvements to ecasignalview.
Dobson, Julian [juliand]
Improved mechanism for mp3 header parsing.
Ewe, Michael [mewe]
Signal handling bugfixes to ecasignalview and the ECI C impl.
Fendt, Stefan (stefan -at- lionfish -dot- ping -dot- de)
Original code for reverb (-ete) and RC-lowpass filter (-ef4).
Hall, Jeremy [jhall] (jhall -at- maoz -dot- com)
Extensive testing, ALSA 0.6.x support, many design ideas.
Halttunen, Janne [jhalttun]
Helped in developing the EIAM, and specifically the
new ECI concept. Wrote the native Python ECI implementation.
Hamara, Arto [artham] (artham -at- utu -dot- fi)
Ecasound logo(s), preset params, general linear
envelope support, various bug fixes!
Jeanneau, Aymeric [ajeanneau] (ajeanneau -at- cvf -dot- fr)
Reentrant libecasoundc (C ECI) implementation.
Lang, Mario [mlang]
Ecasound.el, the ecasound emacs module.
Leake, Tony [tonyleake]
PHP ECI extension.
Lees, Andrew [andrewl]
Reopen functionality to threshold gate (-ge).
Linson, Adam [alinson]
Adding the cop-get command
Lopez-Cabanillas, Pedro [pedrolc] (pedro -dot- lopez-cabanillas -at- gmail -dot -com)
ALSA sequencer interface support.
Massy, S. [smassy]
Ecalength utility, extensive testing and debugging.
Poelstra, Remco [rjpoelstra]
ECI C API bug hunting.
Polton, Richard [rpolton]
The 250k gcc3.x patch. :)
Tiedemann, Eric S. [est]
Wrote the eci.py interface.
Uekawa, Junichi [juekawa]
Maintainer for Ecasound's Debian package. Improvements to build
system and numerous bugfixes.
Weil, Jan [janweil] (Jan -dot- Weil -at- web -dot- de)
Wrote the Ruby ECI implementation.
Contributions
==============
Anarcat [anarcat]
Work on Ecasound's FreeBSD port.
Amundsen, Eric [amundsen]
Bug hunting.
Beaupre, Antoine [beaupran]
Patches for FreeBSD compatibility.
Berndtgen, Manfred [mb]
Bugfix to ecasignalview.
Bolton, Sean [smbolton]
Patches for Mac OS X compability.
Brulebois, Cyril [cyrilbrulebois]
Patches for issues reported by GCC 3.4.
Campbell, Ross [rcampbel]
Tips concerning Solaris compatibility.
Carmack, Michael [karmak]
Tips concerning Solaris.
Claassen, Julien [julien]
Ideas for interface development, marketing work.
Darilek, Nolan [nolan_d]
Ogg vorbis fixes.
Dye, Rob [rob]
OSS compilation fixes.
Eure, Ian [ieure]
Work on the Ecasound debian packages.
Fischer, Hans-Georg [hgfischer]
Bug fix that solved edi-1.
Grabner Markus [grabner]
Updated RPM spec-file for x86_64 platforms.
Groffen, Fabian [grobian] (grobian -at- gentoo -dot- org)
OS X build fixes.
Head, Chris [hawk777]
Patches fixing ecasignalview build errors.
Heller, Aaron [aheller]
Fixes to big-endian support.
Harris, Steve [swharris]
gcc 2.96 (RH7.0) testing and fixes.
Hughes, Jeremy [jedahu]
Bugfix for JACK port muting
Lavallée, Marc
Rpm-spec for Mandrake.
Merino, Pedro Antonio Fructuoso [pfructuoso]
Various bugfix patches.
Morris, Steve [smorris]
Ewf-handling fixes.
O'Toole David [dto]
Patches to ecasound.el.
Petit, Bertrand
Helped with POSIX-compatibility issues.
Poulton, Ron [thok]
Helped to track down the mysterious chain-bug.
Rzewnicki, Eric Dantan [ericdr]
Lots of typo fixes and corrections to Ecasound docs.
Sacré, Dominic [dsacre]
Fixes to 'jack_generic'.
Sassmannshausen, Ruediger [rsassman]
Mp3 filename parsing fixes.
Shchepin, Alexey [alexey]
Bugfix to time crop gate operator (-gc).
Sijrier, Remon [remon]
Fix to a bug in setting -eca initial values.
Smith, Richard A.
Helped in solving the "gcc 2.95" bug.
Sousa, Rui
OSS bug fixes.
Stradling, Rob [robstr]
MIDI-MMC bug fixes.
Tkachenko, Vadim -
Helped to get started with autoconf.
Yee-king, Matt [yeeking]
Helped debugging big-endian troubles on PowerPC.
Westbrook, Tim [iondiode]
Autoconf 2.5x fixes.
Wever, Mark de [koraq]
Bugs in libecasoundc-config.
Wróblewski, Artur [wrobell]
PLD-Linux RPM-specfile, readline and destdir patches.
Contributions - Patches, Bug Hunting and Feature Proposals
==========================================================
Starting from 2.2.1 release (in Feb/2003), contributors have
been listed in the release notes. For all past releases notes,
see:
- http://eca.cx/relnotes/
Below is a list of all contributors to 2.2.1 and beyond, collected
from the published releases notes, and listed in the order they appear
in the release notes:
Junichi Uekawa
Kai Vehmanen
Janne Halttunen
Antti Boman
William Goldsmith
Oliver Thuns
Mario Lang
Michael Hellwig
Janno Liivak
Raoul Megelas
Jan Stary
Daniel Kruszyna
Jeremy Hall
Vegard Lima
Carsten Bauer
Ismail Donmez
Lars Henrik Mai
Stephan Niemz
Al Oemens
Tommi Uimonen
Hirendra Hindocha
Stefan Bundt
Dave Phillips
Jan Weil
Mark de Wever
Fernando Pablo Lopez-Lezcano
Michael Ewe
Eric Dantan Rzewnicki
Pierre Lorenzon
Jesse Chappell
Sean Bolton
Adam Linson
Paul Winkler
Didier Bellamy
Manfred Berndtgen
Stéphane Letz
Paul Marquardt
kito -at- gentoo-org
jcwjcw -at- qwest-net
Vitaly Belostotsky
Steve Harris
Tim Blechmann
Aaron Heller
Kamil Wencel
Julien Claassen
Erik de Castro Lopo
Frederik Eaton
Philippe Schelté aka Dubphil
Julian Dobson
Alexey Shchepin
Brad Fuller
Peter Lutek
Stuart Allie
Jeffrey Cunningham
Kyle Kirkland
Olivier Guilyardi
Jack O'Quin
Pierre Lorenzon
Pedro Lopez-Cabanillas
Pedro Antonio Fructuoso Merino
Arieh Skliarouk
Tom Rosenfeld
Valery -at- vslash -dot com
Markus Grabner
Michael Willoughby
Rocco <linuxmedia -at- netscape-net>
Dave Serls
Stephen Stocker
Aaron Heller
Chris Head
Zrajm Akfohg
Florian Ladstaedter
Koen <kbr -at- patat-org>
Kurt Konolige
Brad Bowman
Joel Roth
Martin Michlmayr
Joe Planisky
Rémi Rouaud
Etienne Deleflie
Klaus Schulz
Keith Creasy
Cyril Brulebois
Fabian Groffen
Andrew Lees
Sergei Steshenko
Alexis Ballier
Avuton Olrich
Dominic Sacré
Erik Nomitch
Code from other projects
========================
Davis Paul
pthread_mutex_spinlock() from libpbd.
Dyson, John S.
The original advanced compressor (-eca) code.
Furse, Richard W.E.
Sine tone generation code from Computer Music Toolkit
LADSPA plugin set is used in AUDIO_IO_TONE.
Harris, Steve and Tim Blechmann
Denormal handling code from swh-plugins package.
Laydier, Antoine [SMF]
Mp3 header parsing (layer.cpp).
Note! The developer tags (for example [kaiv] is one) are used
throughout Ecasound docs: NEWS, TODO-list, edi-list.txt,
ChangeLog files and so on.

58
ecasound-2.7.2/BUGS Normal file
View File

@ -0,0 +1,58 @@
-----------------------------------------------------------------------
*** Ecasound - Known Bugs/Features ***
-----------------------------------------------------------------------
Reporting bugs
-----------------------------------------------------------------------
Please send your bug reports to the ecasound-list mailing list (see
README or http://eca.cx/ecasound/mlists.php for list contact information).
If the bug (or feature request) cannot be solved immediately (or
getting a response takes longer than you care to wait for), feel free
to add the item to the sourceforge.net tracker (see below). It is
also a good idea to send a note to the list that you have added
a new item as the sourceforge.net tracker is not monitored by
all developers.
To get the best results, see for example Simon Tatham's excellent
article on 'How to Report Bugs Effectively' (if you are in a hurry,
skip to the summary at the end of the article :)):
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
Ecasound bug tracker at sourceforge.net
-----------------------------------------------------------------------
Ecasound has used the sourceforge.net bug tracker since Jan/2006:
https://sourceforge.net/tracker/?group_id=4605&atid=104605
This tracker is used to monitor longstanding bugs and
feature/improvement items. It replaces the old Ecasound Development
Item practise (items marked with 'edi-x' tags) that was used
between 2002-08.
Known Bugs and Features (not in other issue trackers)
-----------------------------------------------------------------------
In addition to the below items, some known missing features have been
listed in the 'TODO' file (in same directory as this file).
- commas in filenames given as arguments to '-i' and '-o' options need
to be either escaped with backslashes (-i foo\\,bar.wav) or quoted
with doublequotes (-i "foo,bar.wav")
- certain combinations of glibc and linux-2.6 kernels cause the 'cs-edit'
EIAM command to fail (ecasound exits back to shell after the command);
as a workaround, set the LD_ASSUME_KERNEL=2.2.5 environment variable
before running ecasound; see http://people.redhat.com/drepper/assumekernel.html
for background information on LD_ASSUME_KERNEL
- ecasound cannot parse ogg and flac headers so correct audio
format parameters must be set manually with ecasound's '-f' option
- pitch shifter (-ei) doesn't work with all real-time audio object
types (for instance JACK)
- ecasound crashes if /dev/midi points to an invalid rawmidi device
- MIDI-ops like '-km' cannot be used in presets
- controller sources and big buffersizes
- distortion results for example if sine-oscillators
are used with big buffersize (-b:X) settings

18
ecasound-2.7.2/COPYING Normal file
View File

@ -0,0 +1,18 @@
=======================================================================
*** Ecasound - Licensing/distribution policy ***
=======================================================================
Copyright (C) 1997-2006 Kai Vehmanen and others (see ecasound/AUTHORS).
Ecasound is freely distributable according to the terms of the
GNU General Public License (see the file 'COPYING.GPL').
This program is distributed without any warranty. See the file
'COPYING.GPL' for details.
As an exception to the above, the C, C++ and python implementations
of the Ecasound Control Interface (ECI) are licensed under the LGPL
(see the file 'COPYING.LGPL'). This allows writing ECI applications
that are not licensed under GPL.
=======================================================================

340
ecasound-2.7.2/COPYING.GPL Normal file
View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

502
ecasound-2.7.2/COPYING.LGPL Normal file
View File

@ -0,0 +1,502 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the Lesser GPL. It also counts
as the successor of the GNU Library Public License, version 2, hence
the version number 2.1.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
When we speak of free software, we are referring to freedom of use,
not price. Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.
To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights. These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.
To protect each distributor, we want to make it very clear that
there is no warranty for the free library. Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.
Finally, software patents pose a constant threat to the existence of
any free program. We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder. Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.
Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License. This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License. We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.
When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library. The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom. The Lesser General
Public License permits more lax criteria for linking other code with
the library.
We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License. It also provides other free software developers Less
of an advantage over competing non-free programs. These disadvantages
are the reason we use the ordinary General Public License for many
libraries. However, the Lesser license provides advantages in certain
special circumstances.
For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard. To achieve this, non-free programs must be
allowed to use the library. A more frequent case is that a free
library does the same job as widely used non-free libraries. In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.
In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software. For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.
Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.
GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Use a suitable shared library mechanism for linking with the
Library. A suitable mechanism is one that (1) uses at run time a
copy of the library already present on the user's computer system,
rather than copying library functions into the executable, and (2)
will operate properly with a modified version of the library, if
the user installs one, as long as the modified version is
interface-compatible with the version that the work was made with.
c) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
d) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
e) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@ -0,0 +1,662 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Documentation/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# ----------------------------------------------------------------------
# File: ecasound/Documentation/Makefile.am
# Description: Ecasound documentation files
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = .
top_srcdir = ..
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
subdir = Documentation
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
SUBDIRS = users_guide programmers_guide
# ---------------------------------------------------------------------
# Files going into distribution:
man1_pages_to_install = \
ecasound.1 \
ecasound-iam.1 \
ecatools.1 \
ecaconvert.1 \
ecafixdc.1 \
ecalength.1 \
ecaplay.1 \
ecamonitor.1 \
ecanormalize.1 \
ecasignalview.1
man5_pages_to_install = \
ecasoundrc.5
html_man_pages = \
ecasound_manpage.html \
ecasoundrc_manpage.html \
ecatools_manpage.html \
ecalength_manpage.html \
ecasound-iam_manpage.html
EXTRA_DIST = $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-data-local
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-local
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-libtool clean-recursive ctags \
ctags-recursive distclean distclean-generic distclean-libtool \
distclean-recursive distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-data-local install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am uninstall-info-am \
uninstall-local
$(srcdir)/ecasound_manpage.yo \
$(srcdir)/ecasoundrc_manpage.yo \
$(srcdir)/ecasound-iam_manpage.yo \
$(srcdir)/ecatools_manpage.yo \
$(srcdir)/ecalength_manpage.yo \
$(srcdir)/index.html \
$(srcdir)/examples.html \
$(srcdir)/manpages.html \
$(srcdir)/tutorials.html \
$(srcdir)/style_ecasound.css \
$(srcdir)/ecasound_osc_interface.txt
# ---------------------------------------------------------------------
# local targets for generating docs from latex and yodl sources
all:
docs: docs-guides docs-manpages
docs-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
docs-manpages: $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Man pages
# following are copies of ecatools.1
ecaconvert.1: ecatools.1
cp ecatools.1 ecaconvert.1
ecafixdc.1: ecatools.1
cp ecatools.1 ecafixdc.1
ecamonitor.1: ecatools.1
cp -v ecatools.1 ecamonitor.1
ecanormalize.1: ecatools.1
cp -v ecatools.1 ecanormalize.1
ecaplay.1: ecatools.1
cp -v ecatools.1 ecaplay.1
ecasignalview.1: ecatools.1
cp -v ecatools.1 ecasignalview.1
%.1: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.5: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.html: $(srcdir)/%.yo
yodl2html -o $@ $<
# ---------------------------------------------------------------------
# doxygen (target removed 2009/Feb)
#doxygen:
# doxygen doxygen_libkvutils_config
# doxygen doxygen_libecasound_config
# ---------------------------------------------------------------------
# Clean targets
clean:
clean-docs: clean-manpages clean-guides
clean-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
clean-manpages:
rm -f $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Install targets
install-data-local:
mkdir -p $(DESTDIR)$(mandir)/man1
mkdir -p $(DESTDIR)$(mandir)/man5
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
# ---------------------------------------------------------------------
# Uninstall targets
uninstall-local:
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,128 @@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/Makefile.am
# Description: Ecasound documentation files
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
prefix = @prefix@
mandir = @mandir@
PACKAGE = @PACKAGE@
VERSION = @VERSION@
SUBDIRS = users_guide programmers_guide
# ---------------------------------------------------------------------
# Files going into distribution:
man1_pages_to_install = \
ecasound.1 \
ecasound-iam.1 \
ecatools.1 \
ecaconvert.1 \
ecafixdc.1 \
ecalength.1 \
ecaplay.1 \
ecamonitor.1 \
ecanormalize.1 \
ecasignalview.1
man5_pages_to_install = \
ecasoundrc.5
html_man_pages = \
ecasound_manpage.html \
ecasoundrc_manpage.html \
ecatools_manpage.html \
ecalength_manpage.html \
ecasound-iam_manpage.html
EXTRA_DIST = $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
$(srcdir)/ecasound_manpage.yo \
$(srcdir)/ecasoundrc_manpage.yo \
$(srcdir)/ecasound-iam_manpage.yo \
$(srcdir)/ecatools_manpage.yo \
$(srcdir)/ecalength_manpage.yo \
$(srcdir)/index.html \
$(srcdir)/examples.html \
$(srcdir)/manpages.html \
$(srcdir)/tutorials.html \
$(srcdir)/style_ecasound.css \
$(srcdir)/ecasound_osc_interface.txt
# ---------------------------------------------------------------------
# local targets for generating docs from latex and yodl sources
all:
docs: docs-guides docs-manpages
docs-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
docs-manpages: $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Man pages
# following are copies of ecatools.1
ecaconvert.1: ecatools.1
cp ecatools.1 ecaconvert.1
ecafixdc.1: ecatools.1
cp ecatools.1 ecafixdc.1
ecamonitor.1: ecatools.1
cp -v ecatools.1 ecamonitor.1
ecanormalize.1: ecatools.1
cp -v ecatools.1 ecanormalize.1
ecaplay.1: ecatools.1
cp -v ecatools.1 ecaplay.1
ecasignalview.1: ecatools.1
cp -v ecatools.1 ecasignalview.1
%.1: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.5: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.html: $(srcdir)/%.yo
yodl2html -o $@ $<
# ---------------------------------------------------------------------
# doxygen (target removed 2009/Feb)
#doxygen:
# doxygen doxygen_libkvutils_config
# doxygen doxygen_libecasound_config
# ---------------------------------------------------------------------
# Clean targets
clean:
clean-docs: clean-manpages clean-guides
clean-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
clean-manpages:
rm -f $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Install targets
install-data-local:
mkdir -p $(DESTDIR)$(mandir)/man1
mkdir -p $(DESTDIR)$(mandir)/man5
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
# ---------------------------------------------------------------------
# Uninstall targets
uninstall-local:
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done

View File

@ -0,0 +1,662 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/Makefile.am
# Description: Ecasound documentation files
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = Documentation
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
SUBDIRS = users_guide programmers_guide
# ---------------------------------------------------------------------
# Files going into distribution:
man1_pages_to_install = \
ecasound.1 \
ecasound-iam.1 \
ecatools.1 \
ecaconvert.1 \
ecafixdc.1 \
ecalength.1 \
ecaplay.1 \
ecamonitor.1 \
ecanormalize.1 \
ecasignalview.1
man5_pages_to_install = \
ecasoundrc.5
html_man_pages = \
ecasound_manpage.html \
ecasoundrc_manpage.html \
ecatools_manpage.html \
ecalength_manpage.html \
ecasound-iam_manpage.html
EXTRA_DIST = $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
all: all-recursive
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-recursive
all-am: Makefile
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-recursive
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool \
distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-data-local
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-local
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \
clean clean-generic clean-libtool clean-recursive ctags \
ctags-recursive distclean distclean-generic distclean-libtool \
distclean-recursive distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-data-local install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
installdirs-am maintainer-clean maintainer-clean-generic \
maintainer-clean-recursive mostlyclean mostlyclean-generic \
mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
tags tags-recursive uninstall uninstall-am uninstall-info-am \
uninstall-local
$(srcdir)/ecasound_manpage.yo \
$(srcdir)/ecasoundrc_manpage.yo \
$(srcdir)/ecasound-iam_manpage.yo \
$(srcdir)/ecatools_manpage.yo \
$(srcdir)/ecalength_manpage.yo \
$(srcdir)/index.html \
$(srcdir)/examples.html \
$(srcdir)/manpages.html \
$(srcdir)/tutorials.html \
$(srcdir)/style_ecasound.css \
$(srcdir)/ecasound_osc_interface.txt
# ---------------------------------------------------------------------
# local targets for generating docs from latex and yodl sources
all:
docs: docs-guides docs-manpages
docs-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) docs
docs-manpages: $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Man pages
# following are copies of ecatools.1
ecaconvert.1: ecatools.1
cp ecatools.1 ecaconvert.1
ecafixdc.1: ecatools.1
cp ecatools.1 ecafixdc.1
ecamonitor.1: ecatools.1
cp -v ecatools.1 ecamonitor.1
ecanormalize.1: ecatools.1
cp -v ecatools.1 ecanormalize.1
ecaplay.1: ecatools.1
cp -v ecatools.1 ecaplay.1
ecasignalview.1: ecatools.1
cp -v ecatools.1 ecasignalview.1
%.1: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.5: $(srcdir)/%_manpage.yo
yodl2man -o $@ $<
%.html: $(srcdir)/%.yo
yodl2html -o $@ $<
# ---------------------------------------------------------------------
# doxygen (target removed 2009/Feb)
#doxygen:
# doxygen doxygen_libkvutils_config
# doxygen doxygen_libecasound_config
# ---------------------------------------------------------------------
# Clean targets
clean:
clean-docs: clean-manpages clean-guides
clean-guides:
cd programmers_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
cd users_guide; $(MAKE) $(AM_MAKEFLAGS) clean-docs
clean-manpages:
rm -f $(man1_pages_to_install) \
$(man5_pages_to_install) \
$(html_man_pages)
# ---------------------------------------------------------------------
# Install targets
install-data-local:
mkdir -p $(DESTDIR)$(mandir)/man1
mkdir -p $(DESTDIR)$(mandir)/man5
for f in $(man1_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man1/; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then cp -v $$f $(DESTDIR)$(mandir)/man5/; fi ; done
# ---------------------------------------------------------------------
# Uninstall targets
uninstall-local:
for f in $(man1_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man1/$$f ; fi ; done
for f in $(man5_pages_to_install) ; do if test -f $$f ; then rm -vf $(DESTDIR)$(mandir)/man5/$$f ; fi ; done
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,76 @@
.TH "ecalength" "1" "18\&.04\&.2004" "" "Multimedia software"
.PP
.SH "NAME"
ecalength \- prints audio file lenght and other information
.PP
.SH "SYNOPSIS"
\fBecalength\fP [-ahtsfmbcr] FILE1 [FILE2] [FILEn]
.PP
.SH "DESCRIPTION"
.PP
This is ecalength, a few lines of code pompously named so because they
let one retrieve the length of an audio file from the command line
using ecasound\&'s engine\&.
.PP
Limitations:
.IP ""
- With files without header information (raw files), ecalength will only work
correctly if the audio file is at a sampling rate of 44100 hz\&.
(Addressed with the -a switch\&.)
.IP ""
- It is not foolproof, feeding it with something other than an audio
file WILL result in ugly things being spewed back\&.
(A bit better)
.IP ""
- A thousand more that I haven\&'t thought of\&.
.PP
.SH "OPTIONS"
.PP
.IP "-h"
Prints this usage message\&. (help)
.IP
.IP "-a[:]bits,channels,rate"
Changes the format assumed by default for headerless data\&. (adjust)
.IP
.IP "-t"
Prints the summed length of all the files processed\&. (total)
(Ignored if with -s)
.IP
.IP "-s"
Enables script mode: One info type per file per line\&. (script)
(Defaults to length in secs\&.)
.IP
.IP "-f"
With -s will return the format string as info, alone it will
add it to the main display\&. (format)
.IP
.IP "-b"
If -s and -f are enabled with this the info printed will be
the sample\&'s bitwidth\&. (bits)
.IP
.IP "-c"
If -s and -f are enabled with this the info printed will be
the channel count\&. (channel count)
.IP
.IP "-r"
If -s and -f are enabled with this the info printed will be
the sampling rate\&. (rate)
.IP
.IP "-m"
Will print human computable time as in main display but in
batch fashion\&. (minutes) (Only with -s)
.PP
.SH "SEE ALSO"
.PP
ecasound(1), ecatools(1)
.PP
.SH "AUTHOR"
.PP
S\&.Massy, <observer |at| colba\&.net <observer |at| colba\&.net>>

View File

@ -0,0 +1,95 @@
<html><head>
<title>ecalength</title>
<link rev="made" href="mailto:observer .at. colba .dot. net">
</head>
<body>
<hr>
<h1>ecalength</h1>
<h2>18.04.2004</h2>
<html><head>
<link rev="made" href="mailto:observer .at. colba .dot. net">
</head>
<body>
<hr>
<h1></h1>
<html><head>
<title>ecalength(1)</title>
<link rev="made" href="mailto:observer .at. colba .dot. net">
</head>
<body>
<hr>
<h1>ecalength(1)</h1>
<h2> Multimedia software</h2>
<h2>18.04.2004</h2>
<p>
<h2>NAME</h2>ecalength - prints audio file lenght and other information
<p>
<h2>SYNOPSIS</h2>
<strong>ecalength</strong> [-ahtsfmbcr] FILE1 [FILE2] [FILEn]
<p>
<h2>DESCRIPTION</h2>
<p>
This is ecalength, a few lines of code pompously named so because they
let one retrieve the length of an audio file from the command line
using ecasound's engine.
<p>
Limitations:
<dl>
<p><dt><strong></strong><dd>- With files without header information (raw files), ecalength will only work
correctly if the audio file is at a sampling rate of 44100 hz.
(Addressed with the -a switch.)
<p><dt><strong></strong><dd> - It is not foolproof, feeding it with something other than an audio
file WILL result in ugly things being spewed back.
(A bit better)
<p><dt><strong></strong><dd> - A thousand more that I haven't thought of.
</dl>
<p>
<h2>OPTIONS</h2>
<p>
<dl>
<p><dt><strong>-h</strong><dd>
Prints this usage message. (help)
<p>
<p><dt><strong>-a[:]bits,channels,rate</strong><dd>
Changes the format assumed by default for headerless data. (adjust)
<p>
<p><dt><strong>-t</strong><dd>
Prints the summed length of all the files processed. (total)
(Ignored if with -s)
<p>
<p><dt><strong>-s</strong><dd>
Enables script mode: One info type per file per line. (script)
(Defaults to length in secs.)
<p>
<p><dt><strong>-f</strong><dd>
With -s will return the format string as info, alone it will
add it to the main display. (format)
<p>
<p><dt><strong>-b</strong><dd>
If -s and -f are enabled with this the info printed will be
the sample's bitwidth. (bits)
<p>
<p><dt><strong>-c</strong><dd>
If -s and -f are enabled with this the info printed will be
the channel count. (channel count)
<p>
<p><dt><strong>-r</strong><dd>
If -s and -f are enabled with this the info printed will be
the sampling rate. (rate)
<p>
<p><dt><strong>-m</strong><dd>
Will print human computable time as in main display but in
batch fashion. (minutes) (Only with -s)
</dl>
<p>
<h2>SEE ALSO</h2>
<p>
ecasound(1), ecatools(1)
<p>
<h2>AUTHOR</h2>
<p>
S.Massy, &lt;<a href="mailto:observer |at| colba.net"><em>observer |at| colba.net</em></a>&gt;

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,722 @@
.TH "ecasound-iam" "1" "11\&.10\&.2009" "" "Multimedia software"
.PP
.SH "NAME"
ecasound-iam \- ecasound interactive mode
.SH "SYNOPSIS"
.PP
.SH "DESCRIPTION"
.PP
Ecasound library contains an interpreter module that understands
a set of commands aimed at controlling various library services\&.
This is called the ecasound interactive mode (EIAM)\&. All programs
linked to ecasound library can use this facility\&.
.PP
.SH "ECI API and return types"
A special case of interactive mode use is ecasound\&'s control interface (ECI),
which is a small library providing easy access to the interactive
mode commands from outside of libecasound\&. When issuing inter commands using
the control interface, it\&'s possible that commands also return information\&.
Currently supported return value types are: string [s], list of strings [S]
(elements separated by commas; escaped if necessary), integer [i],
long integer [li] and floating-point number [f]\&. These definitions are
used throughout this document\&. Commands that return nothing (void) are
marked with [-]\&. Additionally, return type [e] marks an error condition\&.
When an interactive mode command results in an error, an error string
explaining the condition is returned\&.
.PP
.SH "Real-time commands"
It\&'s not possible to use all interactive mode commands to modify and
control objects that belong to a connected chainsetup\&. Commands that
do NOT support this are:
.PP
.RS
cs-remove, cs-set-length, cs-set-length-samples, cs-toggle-loop,
cs-set-param, cs-option,
c-add, c-remove, c-rename, c-clear,
ai-add, ai-remove, ai-attach, ai-forward, ai-rewind, ai-set-position,
ai-set-position-samples,
ao-add, ao-add-default, ao-remove, ao-attach, ao-forward, ao-rewind,
ao-set-position, ao-set-position-samples\&.
.RE
.PP
If one of these commands is issued when a chainsetup is connected,
ecasound will first stop and disconnect the chainsetup, process
the command, and the reconnect\&.
.PP
In addition, most non-modifying (const) commands work with
connected setups\&.
.PP
.SH "GENERAL"
.IP "quit, q"
Quit ecasound session\&. What this means in practice depends on the
client implementation\&. In ecasound interactive mode, \&'quit\&' terminates
the ecasound process\&. When sent over ecasound server connection (aka
NetECI), \&'quit\&' terminates the active network connection, but does not
terminate the ecasound server process\&. \fI[-]\fP
.IP
.IP "start, t"
Processing is started (play)\&. Error string is return if any errors upon
startup are encountered\&. \fI[e]\fP
.IP
.IP "stop, s"
Stop processing\&. \fI[-]\fP
.IP
.IP "run"
Like \&'start\&' but blocks until processing is finished\&. Error string
is return if any errors upon startup, or during process, are
encountered\&. \fI[e]\fP
.IP
.IP "debug \&'debug-level\&'"
Set debug level to \&'debug-level\&'\&. Notice that client programs can
reimplement the debug routines\&. \fI[-]\fP
.PP
.IP "resource-file \&'path-to-file\&'"
Overrides the global and user resource files\&. Does not affect
already created objects\&. This command is equivalent to \&'-R\&' ecasound
option (see ecasound (1) man page)\&.
.PP
.IP "-prefix:arg1,\&.\&.\&.,argN"
Equivalent to issuing \&'cs-option -prefix:arg1,\&.\&.\&.,argN)\&. See documentation
for \&'cs-option\&'\&.
.PP
.IP "help\&', \&'h\&'"
Help! \fI[-]\fP
.PP
.SH "GLOBAL"
.IP
.IP "engine-status"
Returns a string describing the engine status (running, stopped,
finished, error, not ready)\&. See also \fIcs-status\fP\&. \fI[s]\fP
.PP
.IP "engine-launch"
Starts the real-time engine\&. Engine will execute the currently
connected chainsetup (see \&'cs-connect)\&. This action does not yet
start actual processing (see \fIstart\fP and \fIstop\fP)\&. When
ecasound is used as a JACK client, issuing \fIengine-launch\fP
makes ecasound an active JACK client (i\&.e\&. ecasound\&'s ports
can be connected to other JACK clients)\&. \fI[-]\fP
.PP
.IP "engine-halt"
Stops the engine\&. Does not disconnect the chainsetup that
was running\&. See also \fIcs-disconnet\fP and \fIstop\fP\&. When
ecasound is used as a JACK client, \fIengine-halt\fP will
cause ecasound to become a deactivated client (all JACK
connections are torn down)\&. \fI[-]\fP
.PP
.SH "CHAINSETUPS"
Chainsetup is the central data object\&. All other objects (inputs,
outputs, chains, etc) are connected to some chainsetup\&. There can be
many chainsetups but only one can be connected\&. Similarly only
one chainsetup can be selected\&. If not otherwise specified operations
are done on the selected chainsetup\&. Some operations also require
that selected chainsetup is not connected\&.
.IP
.IP "cs-add \&'name\&'"
Adds a new chainsetup with name \&'name\&'\&. \&'name\&' is now
the selected chainsetup\&. \fI[-]\fP
.PP
.IP "cs-remove"
Removes currently selected chainsetup\&. \fI[-]\fP
.PP
.IP "cs-list"
Returns a list of all chainsetups\&. \fI[S]\fP
.PP
.IP "cs-select \&'name\&'"
Selects chainsetup \&'name\&'\&. \fI[-]\fP
.PP
.IP "cs-selected"
Returns the name of currently selected chainsetup\&. \fI[s]\fP
.PP
.IP "cs-index-select \&'cs_index\&', cs-iselect \&'cs_index\&'"
Selects a chainsetup based on a short index string\&. Chainsetup names
can be rather long\&. This command can be used to avoid typing
these long names\&. \&'cs_index\&' is an integer value, where \&'1\&' refers to
the first audio input/output\&. You can use \&'cs-list\&' and \&'cs-status\&'
to get a full list of currently available chainsetups\&. \fI[-]\fP
.PP
.IP "cs-load \&'filename\&'"
Adds a new chainsetup by loading it from file \&'filename\&'\&.
\&'filename\&' is now the selected chainsetup\&. \fI[-]\fP
.PP
.IP "cs-save"
Saves the currently selected chainsetup to file\&. If chainsetup was loaded
from a file, the saved version will replace the original\&. If it doesn\&'t
have a default filename, it\&'s saved to "chainsetup_name\&.ecs"\&. \fI[-]\fP
.PP
.IP "cs-save-as \&'filename\&'"
Saves currently selected chainsetup to file \&'filename\&'\&. \fI[-]\fP
.PP
.IP "cs-edit"
Currently selected chainsetup is saved to a temporary file\&. This
file is loaded to an external editor (see ecasoundrc (5))\&. After
editing, the chainsetup is loaded back to ecasound\&. \fI[-]\fP
.PP
.IP "cs-is-valid"
Whether currently selected chainsetup is valid (=can be connected)? \fI[i]\fP
.PP
.IP "cs-connect"
Connect currently selected chainsetup to engine\&. When connecting,
all resources (e\&.g\&. files, soundcard devices, external programs) needed
to execute the chainsetup are reserved\&. Only one chainsetup can be connected
at a time\&. Error string is returned if connection fails (for instance
due to error in allocating the resources)\&. \fI[e]\fP
.PP
.IP "cs-disconnect"
Disconnect currently connected chainsetup\&. This action will free
all external resources needed by the chainsetup\&. \fI[-]\fP
.PP
.IP "cs-connected"
Returns the name of currently connected chainsetup\&. \fI[s]\fP
.PP
.IP "cs-rewind \&'time-in-seconds\&', rewind \&'time-in-seconds\&', rw \&'time-in-seconds\&'"
Rewinds the current chainsetup position by \&'time-in-seconds\&' seconds\&.
Position of all inputs and outputs attached to the selected chainsetup
is also affected\&. \fI[-]\fP
.PP
.IP "cs-forward \&'time-in-seconds\&', forward \&'time-in-seconds\&', fw \&'ttime-in-seconds\&'"
The current chainsetup position is forwarded by \&'time-in-seconds\&'
seconds\&. Position of all inputs and outputs attached to the selected chainsetup
is also affected\&. \fI[-]\fP
.PP
.IP "cs-set-position \&'time-in-seconds\&', cs-setpos \&'time-in-seconds\&', setpos \&'time-in-seconds\&', set-position \&'time-in-seconds\&'"
Sets the chainsetup position to \&'time-in-seconds\&' seconds from the
beginning\&. Position of all inputs and outputs attached to the selected
chainsetup is also affected\&. \fI[-]\fP
.PP
.IP "cs-set-position-samples \&'time-in-samples\&'"
Sets the chainsetup position to \&'time-in-samples\&' samples from the
beginning\&. Position of all inputs and outputs attached to the selected
chainsetup is also affected\&. \fI[-]\fP
.PP
.IP "cs-get-position, cs-getpos, getpos, get-position"
Returns the current chainsetup position in seconds\&. \fI[f]\fP
.PP
.IP "cs-get-position-samples"
Returns the current chainsetup position in samples\&. \fI[li]\fP
.PP
.IP "cs-get-length, get-length"
Returns the chainsetup length in seconds (if known)\&. \fI[f]\fP
.PP
.IP "cs-get-length-samples, get-length-samples"
Returns the chainsetup length in samples (if known)\&. \fI[li]\fP
.PP
.IP "cs-set-length \&'seconds\&'"
Sets processing time in seconds (doesn\&'t have to be an integer value)\&.
A special-case value of \&'-1\&' will set the chainsetup length
according to the longest input object\&. \fI[-]\fP
.PP
.IP "cs-set-length-samples \&'samples\&'"
Sets processing time in samples\&. \fI[-]\fP
.PP
.IP "cs-toggle-loop"
Toggle looping\&. When processing is finished, engine will start
again from the initial position\&. It\&'s not always possible to enable looping
(for instance all inputs and outputs have infinite length and
chainsetup length is not explicitly set with \&'cs-set-length\&')\&. \fI[-]\fP
.PP
.IP "cs-set-param"
Interpret general chainsetup parameters like for example
"-b" (buffersize), "-n" (name), etc\&. See ecasound (1) for
more info\&. \fI[-]\fP
.PP
.IP "cs-set-audio-format \&'bits,channels,sample_rate\&'"
Set the default sample parameters for currently selected chainsetup\&.
For example cd-quality audio would be "16,2,44100"\&. This does the
same as command-line argument "-f" (see ecasound (1))\&. \fI[-]\fP
.PP
.IP "cs-status, status, st"
Prints out status information about available chainsetup\&.
Detailed information is printed out for connected (=available
for running) nd selected (=available for editing) chainsetups\&.
Other chainsetups are listed, but further details are
suppressed\&. To get full details of a specific chainsetup,
select it with \&'cs-select\&' or \&'cs-iselect\&', and then
issue \&'cs-select\&'\&. \fI[s]\fP
.PP
.IP "cs-option \&'-prefix:arg1,\&.\&.\&.,argN\&'"
One powerful feature of the interactive-mode is that it
provides full access to ecasound\&'s command-line syntax\&.
For instance, command "cs-option -efb:400,200" means that
a bandpass filter is added to the currently selected
chain, with initial parameters 400 (center frequency)
and 200 (width in Hz)\&.
.PP
Note that session level options (such as setting debug level)
can not be used with \&'cs-option\&' (i\&.e\&. only options that modify
chainsetups)\&.
.PP
Note! Ecasound interactive mode implicitly interprets all strings
beginning with a \&'-\&' as "cs-option string"\&.
.IP
.SH "CHAINS"
Chain is a simple signal flow abstraction\&. Every chain has one input
and one output\&. All chain operators and their controllers are attached
to chains\&. Chains can be muted, unmuted and be bypassed\&. If not
otherwise stated, all operations are done to currently selected
chainsetup\&.
.IP
.IP "c-add \&'cname1,\&.\&.\&.,cnameN\&'"
Adds a set of chains\&. Added chains are automatically selected\&. Note
that commas in chain names are not allowed\&. \fI[-]\fP
.PP
.IP "c-remove"
Removes selected chains\&. \fI[-]\fP
.PP
.IP "c-list"
Returns a list of all chains\&. \fI[S]\fP
.PP
.IP "c-select \&'cname1,\&.\&.\&.,cnameN\&'"
Selects chains\&. Other chains are automatically deselected\&. \fI[-]\fP
.PP
.IP "c-index-select \&'index1,\&.\&.\&.,indexN\&', c-iselect \&'index1,\&.\&.\&.,indexN\&'"
Selects a set of chains based on the list of indixes\&. Each index is
an integer value, where \&'1\&' refers to the first chain\&. You can use
\&'c-list\&' and \&'c-status\&' to get a full list of currently available
chains\&. \fI[-]\fP
.PP
.IP "c-select-all"
Selects all chains\&. \fI[-]\fP
.PP
.IP "c-select-add \&'cname1,\&.\&.\&.,cnameN\&'"
Selects more chains\&. \fI[-]\fP
.PP
.IP "c-deselect \&'cname1,\&.\&.\&.,cnameN\&'"
Deselects chains\&. \fI[-]\fP
.PP
.IP "c-selected"
Returns a list of selected chains\&. \fI[S]\fP
.PP
.IP "c-clear"
Clear selected chains by removing all chain operators and controllers\&.
Doesn\&'t change how chains are connected to inputs and outputs\&. \fI[-]\fP
.PP
.IP "c-rename \&'new_name\&'"
Renames the selected chain\&. When using this command, exactly one chain must
be selected\&. \fI[-]\fP
.PP
.IP "c-muting, c-mute"
Toggle chain muting\&. When chain is muted, all data that goes through
is muted\&. \fI[-]\fP
.PP
.IP "c-bypass"
Toggle chain bypassing\&. When chain is bypassed, sample data is passed
through unprocessed (all chain operators are disabled for the given
chain)\&. \fI[-]\fP
.PP
.IP "c-status, cs"
Print status info about all chains\&. \fI[s]\fP
.PP
.SH "AUDIO INPUT/OUTPUT OBJECTS"
If not otherwise stated, all operations are done to currently selected
object\&. All commands with \fIai-\fP prefix operate on audio inputs,
while commands with \fIao-\fP operate on outputs\&.
.IP
.IP "ai-add \&'input_format_string\&'"
Adds a new input object\&. See ecasound (1) man page for more info about
the argument format (\&'-i\&' option)\&. Note on syntax: if any of
the parameters (such as a filename) contains commas, the parameter
should be enclosed in double-quotes\&. \fI[-]\fP
.PP
.IP "ao-add \&'output_format_string\&'"
Adds a new output object\&. See ecasound (1) man page for more info about
the argument format (\&'-o\&' option)\&. If argument is omitted,
a default output device is added (see ecasoundrc (5))\&. Note on syntax: if any
of the parameters (such as a filename) contains commas, the parameter
should be enclosed in double-quotes\&. \fI[-]\fP
.PP
.IP "ao-add-default"
Adds the default output device (see ecasoundrc (5))\&. \fI[-]\fP
.PP
.IP "ai-describe, ao-describe"
Returns a Ecasound Option Syntax (EOS) compliant string
describing the input/output\&. See the Ecasound User\&'s Guide
for more information about EOS\&. This command was introduced in
ecasound 2\&.4\&.4\&. \fI[s]\fP
.PP
.IP "ai-select \&'aobject_name\&', ao-select \&'aobject_name\&'"
Selects an audio object\&. \&'aobject_name\&' refers to the string
used when creating the object (the first argument given to ai-add/ao-add)\&.
Note that as a important difference to ai-add/ao-add, one should not
enclose the object name in double quotes for ai-select/ao-select\&. In the
case a chainsetup contains multiple inputs, or outputs, with
identical name, \&'ai-select\&' and \&'ao-select\&' will select
the first matching instance\&. In order to select a specific
instance, the \&'ai-iselect\&' and \&'ao-iselect\&' commands need to
be used\&. \fI[-]\fP
.PP
.IP "ai-index-select \&'aobject_index\&', ai-iselect \&'aobject_index\&', ao-index-select \&'aobject_index\&', ao-iselect \&'aobject_index\&'"
Select some audio object based on a short index string\&. Especially file
names can be rather long\&. This command can be used to avoid typing
these long names when selecting audio objects\&. \&'aobject_index\&' is
an integer value, where \&'1\&' refers to the first audio input/output\&.
You can use \&'ai-list\&' and \&'ao-list\&' to get a full list of currently
available inputs/outputs\&. \fI[-]\fP
.PP
.IP "ai-selected, ao-selected"
Returns the name of the currently selected audio object\&. \fI[s]\fP
.PP
.IP "ai-attach, ao-attach"
Attaches the currently selected audio object to all selected chains\&. \fI[-]\fP
.PP
.IP "ai-remove, ao-remove"
Removes the currently selected audio object from the chainsetup\&. \fI[-]\fP
.PP
.IP "ai-forward \&'time_in_seconds\&', ai-fw \&'time_in_seconds\&', ao-forward \&'time_in_seconds\&', ao-fw \&'time_in_seconds\&'"
Selected audio object is forwarded by \&'time-in-seconds\&' seconds\&.
Time should be given as a floating point value (eg\&. 0\&.001 is the
same as 1ms)\&. \fI[-]\fP
.PP
.IP "ai-rewind \&'time_in_seconds\&', ai-rw \&'time_in_seconds\&', ao-rewind \&'time_in_seconds\&', ao-rw \&'time_in_seconds\&'"
Selected audio object is rewinded by \&'time-in-seconds\&' seconds\&.
Time should be given as a floating point value (eg\&. 0\&.001 is the
same as 1ms)\&. \fI[-]\fP
.PP
.IP "ai-setpos \&'time_in_seconds\&', ai-set-position \&'time_in_seconds\&', ao-setpos \&'time_in_seconds\&', ao-set-position \&'time_in_seconds\&'"
Set audio object position to \&'time_in_seconds\&'\&. \fI[-]\fP
.PP
.IP "ai-set-position-samples \&'time_in_samples\&', ao-set-position-samples \&'time_in_samples\&'"
Set audio object position to \&'time_in_samples\&'\&. \fI[-]\fP
.PP
.IP "ai-getpos, ai-get-position, ao-getpos, ao-get-position"
Returns the audio object position in seconds\&. \fI[f]\fP
.PP
.IP "ai-get-position-samples, ao-get-position-samples"
Returns the audio object position in samples\&. \fI[li]\fP
.PP
.IP "ai-get-length, ao-get-length"
Returns the audio object length in seconds\&. \fI[f]\fP
.PP
.IP "ai-get-length-samples, ao-get-length-samples"
Returns the audio object length in samples\&. \fI[li]\fP
.PP
.IP "ai-get-format, ao-get-format"
Returns the audio format of the selected audio input/output as a
formatted string\&. See documentation for \&'-f\&' command-line option\&. \fI[s]\fP
.PP
.IP "ai-list, ao-list"
Returns a list of all input/output objects\&. \fI[S]\fP
.PP
.IP "aio-register"
Prints a list of registered audio object types\&. \fI[s]\fP
.PP
.IP "aio-status"
Audio object status (index strings, position, length, etc)\&. \fI[s]\fP
.PP
.SH "CHAIN OPERATORS"
Chain operators are used to process and analyze sample data\&.
They are attached to chains\&. If not otherwise stated,
currently selected chainsetup and chain are used\&. Also,
\&'chainop_id\&' and \&'param_id\&' are used to select chain operators
and their parameters\&. First valid value for these parameters
is 1\&.
.IP
.IP "cop-add \&'cop_format_string\&'"
Adds a new chain operator\&. In addition to normal chain operators,
this commmand can also be used to add effect presets and various
plugins\&. Note; it is not possible to add operators to multiple
chains at once\&. In other words only one chain should be selected
when issuing \&'cop-add\&'\&. See ecasound (1) man page for more info\&. \fI[-]\fP
.PP
.IP "cop-describe"
Returns a Ecasound Option Syntax (EOS) compliant string
describing the chain operator\&. See the Ecasound User\&'s Guide
for more information about EOS\&. This command was introduced in
ecasound 2\&.4\&.4\&. \fI[s]\fP
.PP
.IP "cop-remove"
Removes the selected chain operator\&. \fI[-]\fP
.PP
.IP "cop-list"
Returns a list of all chain operators attached to the currently
selected chain\&. \fI[S]\fP
.PP
.IP "cop-select \&'param_id\&', cop-index-select \&'param_id\&', cop-iselect \&'param_id\&'"
Selects a chain operator\&. \fI[-]\fP
.PP
.IP "cop-selected"
Returns the index number of currently selected chain operator\&. \fI[i]\fP
.PP
.IP "cop-set \&'chainop_id,param_id,value\&'"
Changes the value of a single chain operator parameter\&. Unlike other
chain operator commands, this can also be used during processing\&.
See also \&'cop-get\&'\&. \fI[-]\fP
.PP
.IP "cop-get \&'chainop_id,param_id\&'"
Returns the current value of chain operator parameter identified by
\&'chainop_id\&' and \&'param_id\&'\&. This command is a shorthand for
\&'cop-select chainop_id ; copp-iselect param_id ; copp-get\&'\&. \fI[f]\fP
.PP
.IP "cop-status"
Returns info about chain operator status\&. \fI[s]\fP
.PP
.IP "copp-list"
Returns a list of selected chain operator\&'s parameters\&. \fI[S]\fP
.PP
.IP "copp-select \&'param_id\&', copp-index-select \&'param_id\&', copp-iselect \&'param_id\&'"
Selects a chain operator parameter\&. \fI[-]\fP
.PP
.IP "copp-selected"
Returns the index number of currently selected chain operator parameter\&. \fI[i]\fP
.PP
.IP "copp-set \&'value\&'"
Sets the selected parameter value to \&'value\&'\&. \fI[-]\fP
.PP
.IP "copp-get"
Returns the selected parameter value\&. See also \&'cop-get\&'\&. \fI[f]\fP
.PP
.IP "cop-register"
Prints a list of registered chain operators\&. \fI[s]\fP
.PP
.IP "preset-register"
Prints a list of registered effect presets\&. \fI[s]\fP
.PP
.IP "ladspa-register"
Prints a list of registered LADSPA plugins\&. \fI[s]\fP
.PP
.SH "CONTROLLERS"
Controllers are used to control individual chain operator parameters\&.
They are attached to chains\&. If not otherwise stated, currently
selected chainsetup and chains are used\&.
.IP
.IP "ctrl-add \&'copc_format_string\&'"
Adds a new controller and attach it to currently selected chain
operator\&. The argument syntax is either "-<id_string>:par1,\&.\&.\&.,parN"
or just "<id_string>:par1,\&.\&.\&.,parN"\&. If parameter itself contains
commas, the parameter should be enclosed in double-quotes\&.
See ecasound (1) man page for more info\&. \fI[-]\fP
.IP
.IP "ctrl-describe"
Returns a Ecasound Option Syntax (EOS) compliant string
describing the controller\&. See the Ecasound User\&'s Guide
for more information about EOS\&. This command was introduced in
ecasound 2\&.4\&.4\&. \fI[s]\fP
.IP
.IP "ctrl-remove"
Removes the selected controller\&. \fI[-]\fP
.IP
.IP "ctrl-list"
Returns a list of all controllers attached to the currently
selected chain\&. \fI[S]\fP
.IP
.IP "ctrl-select \&'param_id\&', ctrl-index-select \&'param_id\&', ctrl-iselect \&'param_id\&'"
Selects a controller\&. \fI[-]\fP
.IP
.IP "ctrl-selected"
Returns the index number of currently selected controller\&. \fI[i]\fP
.IP
.IP "ctrl-status"
Returns info about controller status\&. \fI[s]\fP
.IP
.IP "ctrl-register"
Prints a list of registered controllers\&. \fI[s]\fP
.IP
.IP "ctrl-get-target"
Returns the index number of the chain operator that is
connected to the selected controller\&. The returned index
refers to the currently selected chain (see \&'cop-list\&')\&. \fI[i]\fP
.IP
.IP "ctrlp-list"
Returns a list of all controller parameters\&. This command was introduced in
ecasound 2\&.4\&.2\&. \fI[S]\fP
.IP
.IP "ctrlp-select"
Selects a controller parameter\&. This command was introduced in
ecasound 2\&.4\&.2\&. \fI[-]\fP
.IP
.IP "ctrlp-selected"
Returns the index number of currently selected controller parameter\&. This command
was introduced in ecasound 2\&.4\&.2\&. \fI[i]\fP
.IP
.IP "ctrlp-get"
Returns the selected controller parameter value\&. This command was introduced in
ecasound 2\&.4\&.2\&. \fI[f]\fP
.IP
.IP "ctrlp-set"
Sets the selected controller parameter value to \&'value\&'\&. This command was introduced in
ecasound 2\&.4\&.2\&. \fI[-]\fP
.IP
.SH "JACK CONNECTION MANAGEMENT"
If Ecasound is compiled with support for JACK audio server,
the following set of commands is provided for controlling connections
between JACK ports\&.
.IP
.IP "jack-connect \&'src-port\&' \&'dest-port\&'"
Make a connection between the two ports given as parameters\&. This command
is similar to the \&'jack_connect\&' command line tool that is distributed
with JACK package\&. \fI[-]\fP
.IP
.IP "jack-disconnect \&'src-port\&' \&'dest-port\&'"
Disconnect the two ports given as parameters\&. This command is similar
to the \&'jack_disconnect\&' command line tool that is distributed
with JACK package\&. \fI[-]\fP
.IP
.IP "jack-list-connections"
Returns a list of all JACK ports and a list of connections
for each port\&. This command is similar to the \&'jack_lsp\&' command
line tool (e\&.g\&. \&'jack_lsp -c\&') that is distributed with JACK package\&. \fI[s]\fP
.IP
.SH "INTERNAL COMMANDS"
Internal commands are not directly aimed at normal use\&. They
are primarily meant for use in scripting and frontends\&.
.IP
.IP "int-cmd-list"
Returns a list of all registered interactive mode commands\&. \fI[S]\fP
.IP
.IP "int-log-history"
Returns recent log messages sent by libecasound modules\&. This
is a good tool for debugging ECI/EIAM scripts and applications\&. This
command was introduced in ecasound 2\&.4\&.0\&. \fI[s]\fP
.IP
.IP "int-output-mode-wellformed"
Select the well-format output format for log messages\&. \fI[-]\fP
.IP
.IP "int-set-float-to-string-precision"
Sets precision used in float to text conversions\&. Note that
this can be used to control the precision of float return values
for ECI commands\&. \fI[-]\fP
.IP
.IP "int-set-log-history-length"
Sets the log history length\&. Defaults to 0 items\&.
This command was introduced in ecasound 2\&.4\&.0\&. \fI[-]\fP
.IP
.IP "int-cmd-version-string"
Returns ecasound interactive mode parser version string\&. \fI[s]\fP
.IP
.IP "int-cmd-version-lib-current"
Returns ecasound interactive mode library interface version (libtool)\&. \fI[i]\fP
.IP
.IP "int-cmd-version-lib-revision"
Returns ecasound interactive mode library interface revision (libtool)\&. \fI[i]\fP
.IP
.IP "int-cmd-version-lib-age"
Returns ecasound interactive mode library interface age (libtool)\&. \fI[i]\fP
.IP
.SH "OBJECT MAPS"
Object maps are central repositories for commonly used object types\&.
By querying the maps, applications can get a list of all registered
object types and their properties\&.
.IP
.IP "map-cop-list"
Prints a list of registered chain operators using
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
.IP
.IP "map-preset-list"
Prints a list of registered effect presets using
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
.IP
.IP "map-ladspa-list"
Prints a list of registered LADSPA plugins using
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
.IP
.IP "map-ladspa-id-list"
Prints a list of registered LADSPA plugins using
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&.
Numerical LADPSA plugin identifiers are used\&. \fI[s]\fP
.IP
.IP "map-ctrl-list"
Prints a list of registered controllers using
the format specified in section \fIOPERATOR DESCRIPTIONS\fP\&. \fI[s]\fP
.IP
.SH "DUMP COMMANDS"
The following dump commands are not meant for normal use\&.
Their primary purpose is to provide an easy way to get
internal state information from libecasound\&. All dump
commands output a single line with syntax "key value"
to the selected output stream (defaults to stdout)\&.
.IP
.IP "dump-target \&'filename\&'"
Set target stream for dumping\&. \fI[-]\fP
.IP
.IP "dump-status"
Dumps engine status - \&'running\&', \&'stopped\&', \&'finished\&' or \&'notready\&'\&. \fI[-]\fP
.IP
.IP "dump-position"
Dumps the global position\&. Printed in seconds using a floating-point
representation\&. \fI[-]\fP
.IP
.IP "dump-length"
Dumps the overall processing length\&. Printed in seconds using a floating-point
representation\&. \fI[-]\fP
.IP
.IP "dump-cs-status"
Dumps status string for the currently selected chainsetup - \&'connected\&',
\&'selected\&' or an empty string\&. \fI[-]\fP
.IP
.IP "dump-c-selected"
Dumps the name of currently selected chain\&. \fI[-]\fP
.IP
.IP "dump-ai-selected"
Dumps label of currently selected audio input\&. If no input is
selected, dumps an empty string\&. \fI[-]\fP
.IP
.IP "dump-ai-position"
Dumps position of currently selected audio inputs\&. Printed in
seconds, using a floating-point representation\&. \fI[-]\fP
.IP
.IP "dump-ai-length"
Dumps length of currently selected audio input\&. Printed in seconds,
using a floating-point representation\&. \fI[-]\fP
.IP
.IP "dump-ai-open-state"
Dumps audio input state info\&. Either \&'open\&' or \&'closed\&'\&. \fI[-]\fP
.IP
.IP "dump-ao-selected"
Dumps label of currently selected audio output\&. If no output is
selected, dumps an empty string\&. \fI[-]\fP
.IP
.IP "dump-ao-position"
Dumps position of currently selected audio outputs\&. Printed in
seconds, using a floating-point representation\&. \fI[-]\fP
.IP
.IP "dump-ao-length"
Dumps length of currently selected audio output\&. Printed in seconds,
using a floating-point representation\&. \fI[-]\fP
.IP
.IP "dump-ao-open-state"
Dumps audio output state info\&. Either \&'open\&' or \&'closed\&'\&. \fI[-]\fP
.IP
.IP "dump-cop-value \&'chainop,param\&'"
Dumps chain operator parameter value\&. \&'chainop\&' and \&'param\&' are
operator and parameter index values (1\&.\&.\&.n)\&. \fI[-]\fP
.IP
.SH "OPERATOR DESCRIPTIONS"
The \fImap-xxx-list\fP commands return a string containing all registered
objects of the given type \fIxxx\fP\&. Each line of the output describes
one registered type\&. The used syntax is:
.IP
\&'keyword,name,description,num_of_params,par1_def,par2_def,\&.\&.\&.\&'
.IP
\fIparX_def\fP describes one object parameter\&. This definition
is present for all parameters of the described object type\&.
The used syntax is:
.IP
\&'name,description,defaultvalue,upper_bound_flag,upper_bound,
lower_bound_flag,lower_bound,toggled_flag,integer_flag,
logarithmic_flag,output_flag\&'
.IP
For exact descriptions of these fields, please see
the header file \fIecasound/libecasound/eca-operator\&.h\fP\&.
.IP
.SH "DEPRECATED COMMANDS"
Use of following commands is deprecated\&. They still work in
current version of Ecasound, but will be dropped in
the future:
.IP
.RS
ai-wave-edit, ao-wave-edit
.RE
.IP
.SH "SEE ALSO"
ecasound (1), ecatools (1), ecasoundrc (5)
.IP
.SH "AUTHOR"
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,775 @@
<html><head>
<title>ecasound-iam</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecasound-iam</h1>
<h2>11.10.2009</h2>
<html><head>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1></h1>
<html><head>
<title>ecasound-iam(1)</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecasound-iam(1)</h1>
<h2> Multimedia software</h2>
<h2>11.10.2009</h2>
<p>
<h2>NAME</h2>ecasound-iam - ecasound interactive mode
<h2>SYNOPSIS</h2>
<p>
<h2>DESCRIPTION</h2>
<p>
Ecasound library contains an interpreter module that understands
a set of commands aimed at controlling various library services.
This is called the ecasound interactive mode (EIAM). All programs
linked to ecasound library can use this facility.
<p>
<h2>ECI API and return types</h2>
A special case of interactive mode use is ecasound's control interface (ECI),
which is a small library providing easy access to the interactive
mode commands from outside of libecasound. When issuing inter commands using
the control interface, it's possible that commands also return information.
Currently supported return value types are: string [s], list of strings [S]
(elements separated by commas; escaped if necessary), integer [i],
long integer [li] and floating-point number [f]. These definitions are
used throughout this document. Commands that return nothing (void) are
marked with [-]. Additionally, return type [e] marks an error condition.
When an interactive mode command results in an error, an error string
explaining the condition is returned.
<p>
<h2>Real-time commands</h2>
It's not possible to use all interactive mode commands to modify and
control objects that belong to a connected chainsetup. Commands that
do NOT support this are:
<p>
<blockquote>
cs-remove, cs-set-length, cs-set-length-samples, cs-toggle-loop,
cs-set-param, cs-option,
c-add, c-remove, c-rename, c-clear,
ai-add, ai-remove, ai-attach, ai-forward, ai-rewind, ai-set-position,
ai-set-position-samples,
ao-add, ao-add-default, ao-remove, ao-attach, ao-forward, ao-rewind,
ao-set-position, ao-set-position-samples.
</blockquote>
<p>
If one of these commands is issued when a chainsetup is connected,
ecasound will first stop and disconnect the chainsetup, process
the command, and the reconnect.
<p>
In addition, most non-modifying (const) commands work with
connected setups.
<p>
<h2>GENERAL</h2>
<dl>
<p><dt><strong>quit, q</strong><dd>
Quit ecasound session. What this means in practice depends on the
client implementation. In ecasound interactive mode, 'quit' terminates
the ecasound process. When sent over ecasound server connection (aka
NetECI), 'quit' terminates the active network connection, but does not
terminate the ecasound server process. <em>[-]</em>
<p>
<p><dt><strong>start, t</strong><dd>
Processing is started (play). Error string is return if any errors upon
startup are encountered. <em>[e]</em>
<p>
<p><dt><strong>stop, s</strong><dd>
Stop processing. <em>[-]</em>
<p>
<p><dt><strong>run</strong><dd>
Like 'start' but blocks until processing is finished. Error string
is return if any errors upon startup, or during process, are
encountered. <em>[e]</em>
<p>
<p><dt><strong>debug 'debug-level'</strong><dd>
Set debug level to 'debug-level'. Notice that client programs can
reimplement the debug routines. <em>[-]</em>
</dl>
<p>
<p><dt><strong>resource-file 'path-to-file'</strong><dd>
Overrides the global and user resource files. Does not affect
already created objects. This command is equivalent to '-R' ecasound
option (see ecasound (1) man page).
<p>
<p><dt><strong>-prefix:arg1,...,argN</strong><dd>
Equivalent to issuing 'cs-option -prefix:arg1,...,argN). See documentation
for 'cs-option'.
<p>
<p><dt><strong>help', 'h'</strong><dd>
Help! <em>[-]</em>
<p>
</dl>
<p>
<h2>GLOBAL</h2>
<p>
<dl>
<p>
<p><dt><strong>engine-status</strong><dd>
Returns a string describing the engine status (running, stopped,
finished, error, not ready). See also <em>cs-status</em>. <em>[s]</em>
<p>
<p><dt><strong>engine-launch</strong><dd>
Starts the real-time engine. Engine will execute the currently
connected chainsetup (see 'cs-connect). This action does not yet
start actual processing (see <em>start</em> and <em>stop</em>). When
ecasound is used as a JACK client, issuing <em>engine-launch</em>
makes ecasound an active JACK client (i.e. ecasound's ports
can be connected to other JACK clients). <em>[-]</em>
<p>
<p><dt><strong>engine-halt</strong><dd>
Stops the engine. Does not disconnect the chainsetup that
was running. See also <em>cs-disconnet</em> and <em>stop</em>. When
ecasound is used as a JACK client, <em>engine-halt</em> will
cause ecasound to become a deactivated client (all JACK
connections are torn down). <em>[-]</em>
<p>
</dl>
<p>
<h2>CHAINSETUPS</h2>
Chainsetup is the central data object. All other objects (inputs,
outputs, chains, etc) are connected to some chainsetup. There can be
many chainsetups but only one can be connected. Similarly only
one chainsetup can be selected. If not otherwise specified operations
are done on the selected chainsetup. Some operations also require
that selected chainsetup is not connected.
<p>
<dl>
<p><dt><strong>cs-add 'name'</strong><dd>
Adds a new chainsetup with name 'name'. 'name' is now
the selected chainsetup. <em>[-]</em>
<p>
<p><dt><strong>cs-remove</strong><dd>
Removes currently selected chainsetup. <em>[-]</em>
<p>
<p><dt><strong>cs-list</strong><dd>
Returns a list of all chainsetups. <em>[S]</em>
<p>
<p><dt><strong>cs-select 'name'</strong><dd>
Selects chainsetup 'name'. <em>[-]</em>
<p>
<p><dt><strong>cs-selected</strong><dd>
Returns the name of currently selected chainsetup. <em>[s]</em>
<p>
<p><dt><strong>cs-index-select 'cs_index', cs-iselect 'cs_index'</strong><dd>
Selects a chainsetup based on a short index string. Chainsetup names
can be rather long. This command can be used to avoid typing
these long names. 'cs_index' is an integer value, where '1' refers to
the first audio input/output. You can use 'cs-list' and 'cs-status'
to get a full list of currently available chainsetups. <em>[-]</em>
<p>
<p><dt><strong>cs-load 'filename'</strong><dd>
Adds a new chainsetup by loading it from file 'filename'.
'filename' is now the selected chainsetup. <em>[-]</em>
<p>
<p><dt><strong>cs-save</strong><dd>
Saves the currently selected chainsetup to file. If chainsetup was loaded
from a file, the saved version will replace the original. If it doesn't
have a default filename, it's saved to "chainsetup_name.ecs". <em>[-]</em>
<p>
<p><dt><strong>cs-save-as 'filename'</strong><dd>
Saves currently selected chainsetup to file 'filename'. <em>[-]</em>
<p>
<p><dt><strong>cs-edit</strong><dd>
Currently selected chainsetup is saved to a temporary file. This
file is loaded to an external editor (see ecasoundrc (5)). After
editing, the chainsetup is loaded back to ecasound. <em>[-]</em>
<p>
<p><dt><strong>cs-is-valid</strong><dd>
Whether currently selected chainsetup is valid (=can be connected)? <em>[i]</em>
<p>
<p><dt><strong>cs-connect</strong><dd>
Connect currently selected chainsetup to engine. When connecting,
all resources (e.g. files, soundcard devices, external programs) needed
to execute the chainsetup are reserved. Only one chainsetup can be connected
at a time. Error string is returned if connection fails (for instance
due to error in allocating the resources). <em>[e]</em>
<p>
<p><dt><strong>cs-disconnect</strong><dd>
Disconnect currently connected chainsetup. This action will free
all external resources needed by the chainsetup. <em>[-]</em>
<p>
<p><dt><strong>cs-connected</strong><dd>
Returns the name of currently connected chainsetup. <em>[s]</em>
<p>
<p><dt><strong>cs-rewind 'time-in-seconds', rewind 'time-in-seconds', rw 'time-in-seconds'</strong><dd>
Rewinds the current chainsetup position by 'time-in-seconds' seconds.
Position of all inputs and outputs attached to the selected chainsetup
is also affected. <em>[-]</em>
<p>
<p><dt><strong>cs-forward 'time-in-seconds', forward 'time-in-seconds', fw 'ttime-in-seconds'</strong><dd>
The current chainsetup position is forwarded by 'time-in-seconds'
seconds. Position of all inputs and outputs attached to the selected chainsetup
is also affected. <em>[-]</em>
<p>
<p><dt><strong>cs-set-position 'time-in-seconds', cs-setpos 'time-in-seconds', setpos 'time-in-seconds', set-position 'time-in-seconds'</strong><dd>
Sets the chainsetup position to 'time-in-seconds' seconds from the
beginning. Position of all inputs and outputs attached to the selected
chainsetup is also affected. <em>[-]</em>
<p>
<p><dt><strong>cs-set-position-samples 'time-in-samples'</strong><dd>
Sets the chainsetup position to 'time-in-samples' samples from the
beginning. Position of all inputs and outputs attached to the selected
chainsetup is also affected. <em>[-]</em>
<p>
<p><dt><strong>cs-get-position, cs-getpos, getpos, get-position</strong><dd>
Returns the current chainsetup position in seconds. <em>[f]</em>
<p>
<p><dt><strong>cs-get-position-samples</strong><dd>
Returns the current chainsetup position in samples. <em>[li]</em>
<p>
<p><dt><strong>cs-get-length, get-length</strong><dd>
Returns the chainsetup length in seconds (if known). <em>[f]</em>
<p>
<p><dt><strong>cs-get-length-samples, get-length-samples</strong><dd>
Returns the chainsetup length in samples (if known). <em>[li]</em>
<p>
<p><dt><strong>cs-set-length 'seconds'</strong><dd>
Sets processing time in seconds (doesn't have to be an integer value).
A special-case value of '-1' will set the chainsetup length
according to the longest input object. <em>[-]</em>
<p>
<p><dt><strong>cs-set-length-samples 'samples'</strong><dd>
Sets processing time in samples. <em>[-]</em>
<p>
<p><dt><strong>cs-toggle-loop</strong><dd>
Toggle looping. When processing is finished, engine will start
again from the initial position. It's not always possible to enable looping
(for instance all inputs and outputs have infinite length and
chainsetup length is not explicitly set with 'cs-set-length'). <em>[-]</em>
<p>
<p><dt><strong>cs-set-param</strong><dd>
Interpret general chainsetup parameters like for example
"-b" (buffersize), "-n" (name), etc. See ecasound (1) for
more info. <em>[-]</em>
<p>
<p><dt><strong>cs-set-audio-format 'bits,channels,sample_rate'</strong><dd>
Set the default sample parameters for currently selected chainsetup.
For example cd-quality audio would be "16,2,44100". This does the
same as command-line argument "-f" (see ecasound (1)). <em>[-]</em>
<p>
<p><dt><strong>cs-status, status, st</strong><dd>
Prints out status information about available chainsetup.
Detailed information is printed out for connected (=available
for running) nd selected (=available for editing) chainsetups.
Other chainsetups are listed, but further details are
suppressed. To get full details of a specific chainsetup,
select it with 'cs-select' or 'cs-iselect', and then
issue 'cs-select'. <em>[s]</em>
<p>
<p><dt><strong>cs-option '-prefix:arg1,...,argN'</strong><dd>
One powerful feature of the interactive-mode is that it
provides full access to ecasound's command-line syntax.
For instance, command "cs-option -efb:400,200" means that
a bandpass filter is added to the currently selected
chain, with initial parameters 400 (center frequency)
and 200 (width in Hz).
<p>
Note that session level options (such as setting debug level)
can not be used with 'cs-option' (i.e. only options that modify
chainsetups).
<p>
Note! Ecasound interactive mode implicitly interprets all strings
beginning with a '-' as "cs-option string".
</dl>
<p>
<h2>CHAINS</h2>
Chain is a simple signal flow abstraction. Every chain has one input
and one output. All chain operators and their controllers are attached
to chains. Chains can be muted, unmuted and be bypassed. If not
otherwise stated, all operations are done to currently selected
chainsetup.
<p>
<dl>
<p><dt><strong>c-add 'cname1,...,cnameN'</strong><dd>
Adds a set of chains. Added chains are automatically selected. Note
that commas in chain names are not allowed. <em>[-]</em>
<p>
<p><dt><strong>c-remove</strong><dd>
Removes selected chains. <em>[-]</em>
<p>
<p><dt><strong>c-list</strong><dd>
Returns a list of all chains. <em>[S]</em>
<p>
<p><dt><strong>c-select 'cname1,...,cnameN'</strong><dd>
Selects chains. Other chains are automatically deselected. <em>[-]</em>
<p>
<p><dt><strong>c-index-select 'index1,...,indexN', c-iselect 'index1,...,indexN'</strong><dd>
Selects a set of chains based on the list of indixes. Each index is
an integer value, where '1' refers to the first chain. You can use
'c-list' and 'c-status' to get a full list of currently available
chains. <em>[-]</em>
<p>
<p><dt><strong>c-select-all</strong><dd>
Selects all chains. <em>[-]</em>
<p>
<p><dt><strong>c-select-add 'cname1,...,cnameN'</strong><dd>
Selects more chains. <em>[-]</em>
<p>
<p><dt><strong>c-deselect 'cname1,...,cnameN'</strong><dd>
Deselects chains. <em>[-]</em>
<p>
<p><dt><strong>c-selected</strong><dd>
Returns a list of selected chains. <em>[S]</em>
<p>
<p><dt><strong>c-clear</strong><dd>
Clear selected chains by removing all chain operators and controllers.
Doesn't change how chains are connected to inputs and outputs. <em>[-]</em>
<p>
<p><dt><strong>c-rename 'new_name'</strong><dd>
Renames the selected chain. When using this command, exactly one chain must
be selected. <em>[-]</em>
<p>
<p><dt><strong>c-muting, c-mute</strong><dd>
Toggle chain muting. When chain is muted, all data that goes through
is muted. <em>[-]</em>
<p>
<p><dt><strong>c-bypass</strong><dd>
Toggle chain bypassing. When chain is bypassed, sample data is passed
through unprocessed (all chain operators are disabled for the given
chain). <em>[-]</em>
<p>
<p><dt><strong>c-status, cs</strong><dd>
Print status info about all chains. <em>[s]</em>
<p>
</dl>
<p>
<h2>AUDIO INPUT/OUTPUT OBJECTS</h2>
If not otherwise stated, all operations are done to currently selected
object. All commands with <em>ai-</em> prefix operate on audio inputs,
while commands with <em>ao-</em> operate on outputs.
<p>
<dl>
<p>
<p><dt><strong>ai-add 'input_format_string'</strong><dd>
Adds a new input object. See ecasound (1) man page for more info about
the argument format ('-i' option). Note on syntax: if any of
the parameters (such as a filename) contains commas, the parameter
should be enclosed in double-quotes. <em>[-]</em>
<p>
<p><dt><strong>ao-add 'output_format_string'</strong><dd>
Adds a new output object. See ecasound (1) man page for more info about
the argument format ('-o' option). If argument is omitted,
a default output device is added (see ecasoundrc (5)). Note on syntax: if any
of the parameters (such as a filename) contains commas, the parameter
should be enclosed in double-quotes. <em>[-]</em>
<p>
<p><dt><strong>ao-add-default</strong><dd>
Adds the default output device (see ecasoundrc (5)). <em>[-]</em>
<p>
<p><dt><strong>ai-describe, ao-describe</strong><dd>
Returns a Ecasound Option Syntax (EOS) compliant string
describing the input/output. See the Ecasound User's Guide
for more information about EOS. This command was introduced in
ecasound 2.4.4. <em>[s]</em>
<p>
<p><dt><strong>ai-select 'aobject_name', ao-select 'aobject_name'</strong><dd>
Selects an audio object. 'aobject_name' refers to the string
used when creating the object (the first argument given to ai-add/ao-add).
Note that as a important difference to ai-add/ao-add, one should not
enclose the object name in double quotes for ai-select/ao-select. In the
case a chainsetup contains multiple inputs, or outputs, with
identical name, 'ai-select' and 'ao-select' will select
the first matching instance. In order to select a specific
instance, the 'ai-iselect' and 'ao-iselect' commands need to
be used. <em>[-]</em>
<p>
<p><dt><strong>ai-index-select 'aobject_index', ai-iselect 'aobject_index', ao-index-select 'aobject_index', ao-iselect 'aobject_index'</strong><dd>
Select some audio object based on a short index string. Especially file
names can be rather long. This command can be used to avoid typing
these long names when selecting audio objects. 'aobject_index' is
an integer value, where '1' refers to the first audio input/output.
You can use 'ai-list' and 'ao-list' to get a full list of currently
available inputs/outputs. <em>[-]</em>
<p>
<p><dt><strong>ai-selected, ao-selected</strong><dd>
Returns the name of the currently selected audio object. <em>[s]</em>
<p>
<p><dt><strong>ai-attach, ao-attach</strong><dd>
Attaches the currently selected audio object to all selected chains. <em>[-]</em>
<p>
<p><dt><strong>ai-remove, ao-remove</strong><dd>
Removes the currently selected audio object from the chainsetup. <em>[-]</em>
<p>
<p><dt><strong>ai-forward 'time_in_seconds', ai-fw 'time_in_seconds', ao-forward 'time_in_seconds', ao-fw 'time_in_seconds'</strong><dd>
Selected audio object is forwarded by 'time-in-seconds' seconds.
Time should be given as a floating point value (eg. 0.001 is the
same as 1ms). <em>[-]</em>
<p>
<p><dt><strong>ai-rewind 'time_in_seconds', ai-rw 'time_in_seconds', ao-rewind 'time_in_seconds', ao-rw 'time_in_seconds'</strong><dd>
Selected audio object is rewinded by 'time-in-seconds' seconds.
Time should be given as a floating point value (eg. 0.001 is the
same as 1ms). <em>[-]</em>
<p>
<p><dt><strong>ai-setpos 'time_in_seconds', ai-set-position 'time_in_seconds', ao-setpos 'time_in_seconds', ao-set-position 'time_in_seconds'</strong><dd>
Set audio object position to 'time_in_seconds'. <em>[-]</em>
<p>
<p><dt><strong>ai-set-position-samples 'time_in_samples', ao-set-position-samples 'time_in_samples'</strong><dd>
Set audio object position to 'time_in_samples'. <em>[-]</em>
<p>
<p><dt><strong>ai-getpos, ai-get-position, ao-getpos, ao-get-position</strong><dd>
Returns the audio object position in seconds. <em>[f]</em>
<p>
<p><dt><strong>ai-get-position-samples, ao-get-position-samples</strong><dd>
Returns the audio object position in samples. <em>[li]</em>
<p>
<p><dt><strong>ai-get-length, ao-get-length</strong><dd>
Returns the audio object length in seconds. <em>[f]</em>
<p>
<p><dt><strong>ai-get-length-samples, ao-get-length-samples</strong><dd>
Returns the audio object length in samples. <em>[li]</em>
<p>
<p><dt><strong>ai-get-format, ao-get-format</strong><dd>
Returns the audio format of the selected audio input/output as a
formatted string. See documentation for '-f' command-line option. <em>[s]</em>
<p>
<p><dt><strong>ai-list, ao-list</strong><dd>
Returns a list of all input/output objects. <em>[S]</em>
<p>
<p><dt><strong>aio-register</strong><dd>
Prints a list of registered audio object types. <em>[s]</em>
<p>
<p><dt><strong>aio-status</strong><dd>
Audio object status (index strings, position, length, etc). <em>[s]</em>
<p>
</dl>
<p>
<h2>CHAIN OPERATORS</h2>
Chain operators are used to process and analyze sample data.
They are attached to chains. If not otherwise stated,
currently selected chainsetup and chain are used. Also,
'chainop_id' and 'param_id' are used to select chain operators
and their parameters. First valid value for these parameters
is 1.
<p>
<dl>
<p><dt><strong>cop-add 'cop_format_string'</strong><dd>
Adds a new chain operator. In addition to normal chain operators,
this commmand can also be used to add effect presets and various
plugins. Note; it is not possible to add operators to multiple
chains at once. In other words only one chain should be selected
when issuing 'cop-add'. See ecasound (1) man page for more info. <em>[-]</em>
<p>
<p><dt><strong>cop-describe</strong><dd>
Returns a Ecasound Option Syntax (EOS) compliant string
describing the chain operator. See the Ecasound User's Guide
for more information about EOS. This command was introduced in
ecasound 2.4.4. <em>[s]</em>
<p>
<p><dt><strong>cop-remove</strong><dd>
Removes the selected chain operator. <em>[-]</em>
<p>
<p><dt><strong>cop-list</strong><dd>
Returns a list of all chain operators attached to the currently
selected chain. <em>[S]</em>
<p>
<p><dt><strong>cop-select 'param_id', cop-index-select 'param_id', cop-iselect 'param_id'</strong><dd>
Selects a chain operator. <em>[-]</em>
<p>
<p><dt><strong>cop-selected</strong><dd>
Returns the index number of currently selected chain operator. <em>[i]</em>
<p>
<p><dt><strong>cop-set 'chainop_id,param_id,value'</strong><dd>
Changes the value of a single chain operator parameter. Unlike other
chain operator commands, this can also be used during processing.
See also 'cop-get'. <em>[-]</em>
<p>
<p><dt><strong>cop-get 'chainop_id,param_id'</strong><dd>
Returns the current value of chain operator parameter identified by
'chainop_id' and 'param_id'. This command is a shorthand for
'cop-select chainop_id ; copp-iselect param_id ; copp-get'. <em>[f]</em>
<p>
<p><dt><strong>cop-status</strong><dd>
Returns info about chain operator status. <em>[s]</em>
<p>
<p><dt><strong>copp-list</strong><dd>
Returns a list of selected chain operator's parameters. <em>[S]</em>
<p>
<p><dt><strong>copp-select 'param_id', copp-index-select 'param_id', copp-iselect 'param_id'</strong><dd>
Selects a chain operator parameter. <em>[-]</em>
<p>
<p><dt><strong>copp-selected</strong><dd>
Returns the index number of currently selected chain operator parameter. <em>[i]</em>
<p>
<p><dt><strong>copp-set 'value'</strong><dd>
Sets the selected parameter value to 'value'. <em>[-]</em>
<p>
<p><dt><strong>copp-get</strong><dd>
Returns the selected parameter value. See also 'cop-get'. <em>[f]</em>
<p>
<p><dt><strong>cop-register</strong><dd>
Prints a list of registered chain operators. <em>[s]</em>
<p>
<p><dt><strong>preset-register</strong><dd>
Prints a list of registered effect presets. <em>[s]</em>
<p>
<p><dt><strong>ladspa-register</strong><dd>
Prints a list of registered LADSPA plugins. <em>[s]</em>
<p>
</dl>
<p>
<h2>CONTROLLERS</h2>
Controllers are used to control individual chain operator parameters.
They are attached to chains. If not otherwise stated, currently
selected chainsetup and chains are used.
<p>
<p><dt><strong>ctrl-add 'copc_format_string'</strong><dd>
Adds a new controller and attach it to currently selected chain
operator. The argument syntax is either "-&lt;id_string&gt;:par1,...,parN"
or just "&lt;id_string&gt;: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, &lt;<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>&gt;

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,226 @@
.TH "ecasoundrc" "5" "22\&.03\&.2009" "" "Multimedia software"
.PP
.SH "NAME"
ecasoundrc \- ecasound rcfile
.PP
.SH "SYNOPSIS"
{prefix}/share/ecasound/ecasoundrc (for instance \&'/usr/local/share/ecasound/ecasoundrc\&')
$HOME/\&.ecasound/ecasoundrc
.PP
.SH "DESCRIPTION"
.PP
\fBecasoundrc\fP is the main configuration file for ecasound\&.
Any user-specific modification should be done to
$HOME/\&.ecasound/ecasoundrc, not to the global resource file\&. Ecasound
also allows to disable the normal policy and only read from a specific
resource file (see ecasound (1) and documentation for the \fB-R\fP option)\&.
.PP
The format is quite simple\&. One line consists of
a configuration variable and its value\&. Variable and value
are separated with either \&'=\&' or \&' \&'\&. Lines beginning with a
"#" are ignored (comment lines)\&.
.PP
.SH "VARIABLES"
.PP
.IP "midi-device"
MIDI-device\&. If the device name is given in \fIrawmidi,/dev/midi*\fP
format, OSS/Linux or OSS/Lite drivers are used\&.
Device \fIrawmidi,/dev/snd/midiCxDy\fP opens an ALSA raw-MIDI
device with card number \&'x\&' and device number \&'y\&'\&.
See ecasound (1) man page (the \&'-Md option) for more info\&.
Defaults to \fIrawmidi,/dev/midi\fP\&.
.IP
.IP "default-output"
Output device to use by default\&. If a chainsetup with zero
outputs, but with one or more inputs, is connected, a default output
is added and all the chains are connected to it\&. If the special-case
value \&'autodetect\&' is specified, ecasound will try to auto-detect
a suitable device (JACK -> ALSA -> OSS -> rtnull)\&.
Defaults to \fIautodetect\fP\&.
.IP
.IP "default-audio-format"
Default values for sample format, channel count, sampling rate
and channel interleaving\&. Syntax is the same as used by
ecasound\&'s \fI-f\fP option (see ecasound (1))\&.
Defaults to \fIs16_le,2,44100,i\fP\&.
.IP
.IP "default-to-precise-sample-rates"
Whether to ignore sample rate differences (and possibly avoid
resampling)\&. Currently only affects OSS-devices\&. Defaults to \fIfalse\fP\&.
.IP
.IP "default-mix-mode"
If \fIdefault-mix-mode\fP is \fIsum\fP, engine will mix multiple channels into
one output channel by summing all input channels\&. In mode \fIavg\fP,
mixing is done by taking the average of all input channels\&. The
\fIavg\fP mode is safe from clipping, while \fIsum\fP is closer
to the way analog mixers work\&. Defaults to \fIavg\fP\&.
.IP
.IP "bmode-defaults-nonrt"
Selects the default parameters to use with buffering
mode \&'nonrt\&' (other modes are \&'rt\&' and \&'rtlowlatency)\&.
Parameters are given as a comma-separated tuple of values:
1) buffersize (number,-b), 2) raised priority (true/false,-r),
3) sched_priority (number,-r:X), 4) double buffering
(true/false,-z:db), 5) db-bufsize (number,-z:db,X), and
6) max intbuf (true/false,-z:intbuf)\&. Defaults to
\fI1024,false,50,false,100000,true\fP\&.
.IP
.IP "bmode-defaults-rt"
See \&'bmode-defaults-nonrt\&'\&. Defaults to
\fI1024,true,50,true,100000,true\fP\&.
.IP
.IP "bmode-defaults-rtlowlatency"
See \&'bmode-defaults-nonrt\&'\&. Defaults to
\fI256,true,50,true,100000,false\fP\&.
.IP
.IP "resource-directory"
Directory for global ecasound configuration files\&.
Defaults to \fI{prefix-dir}/share/ecasound\fP\&.
Note! User-specific resource files can be be stored
to \&'$(HOME)/\&.ecasound/\&'\&. For instance you can
add your own presets definitions to
\&'$(HOME)/\&.ecasound/effect_presets\&'\&.
.IP
.IP "resource-file-genosc-envelopes"
Configuration file for generic oscillators\&. Is located in the
resource directory\&. Defaults to \fIgeneric_oscillators\fP\&.
.IP
.IP "resource-file-effect-presets"
Configuration file for effect presets\&. Is located in the
resource directory\&. Defaults to \fIeffect_presets\fP\&.
.IP
.IP "ladspa-plugin-directory"
Directory containing LADSPA effect plugins\&. Defaults to \fI{prefix-dir}/lib/ladspa\fP\&.
If environment variable \fILADSPA_PATH\fP exists, directories
specified in it are automatically searched for plugins\&.
Note! To match the syntax of the \fILADSPA_PATH\fP environment
variable, \&'ladspa-plugin-directory\&' can contain multiple
directories, separated by \&':\&' characters\&.
.IP
.IP "ext-cmd-text-editor"
If \fIext-cmd-text-editor-use-getenv\fP is \fIfalse\fP or "EDITOR"
is null, value of this field is used\&.
.IP
.IP "ext-cmd-text-editor-use-getenv"
Should ecasound try to query environment variable "EDITOR"\&.
Defaults to \fItrue\fP\&.
.IP
.IP "ext-cmd-mp3-input"
Command for starting mp3 input\&. Ecasound expects to read signed,
16bit, little-endian stereo audio samples from its standard
input\&. Ecsound will query other audio format parameters by parsing
the mp3 file header\&. Before execution, %f is replaced with
path to the input mp3\&. If exists, "%o" is replaced with he
start offset in mp3 frames\&. Double-quotes and backslash-espacing
can be used to include white-space to individual parameters\&.
By default, \fImpg123\fP is launched\&.
.IP
.IP "ext-cmd-mp3-output"
Command for starting mp3 output\&. Ecasound will write stereo,
signed, 16bit, little-endian samples to standard output\&. Sample
rate is configurable\&. Before execution, %f is replaced with
path to the output mp3, %S with sample rate in kHz, and
%B with encoding bitrate in kbps\&. Double-quotes and
backslash-espacing can be used to include white-space to
individual parameters\&. By default Ecasound will try to
launch \fIlame\fP\&. As a special exception (added to Ecasound
2\&.7\&.0), if the output program is "lame" and options
include "--big-endian", Ecasound will detect this and output
big-endian samples\&.
.IP
.IP "ext-cmd-ogg-input"
Command for starting Ogg Vorbis input\&. Ecasound expects that audio samples
are written to standard output\&. It should be noted that
Ecasound is not able to query the audio format parameters from
ogg files, so these need to be set manually by the user\&.
Before execution, %f is replaced with path to the input ogg\&.
Double-quotes and backslash-espacing can be used to include white-space
to individual parameters\&. By default Ecasound will try to
launch (ogg123)\&.
.IP
.IP "ext-cmd-ogg-output"
Command for starting Ogg Vorbis output\&. Ecasound will write
samples in little-endian format to standard output\&. Other
audio parameters are configurable\&. Before execution, %f is
replaced with path to the output ogg, %c, %s and %b with matching audio
format parameters, and %B with encoding bitrate in kbps\&.
Double-quotes and backslash-espacing can be used to include white-space to
individual parameters\&. By default Ecasound will try to
launch (oggenc)\&.
.IP
.IP "ext-cmd-mikmod"
Command for starting mikmod input\&. Ecasound expects that
signed, 16bit, stereo audio samples are written to standard
output\&. Before execution, %f is replaced with
file path, and %s with selected sample rate\&. Double-quotes
and backslash-espacing can be used to include white-space to
individual parameters\&. By default Ecasound will try to launch
\fImikmod\fP\&.
.IP
.IP "ext-cmd-timidity"
Command for starting timidity++ input\&. Ecasound expects that
signed, 16bit, stereo audio samples are written to standard
output\&. Before execution, %f is replaced with file path, and
%s with sample rate\&. Double-quotes and backslash-espacing can
be used to include white-space to individual parameters\&.
By default Ecasound will try to launch \fItimidity\fP\&.
.IP
.IP "ext-cmd-flac-input"
Command for starting FLAC input\&. Ecasound expects that audio samples
are written to standard output\&. It should be noted that
Ecasound is not able to query the audio format parameters from
FLAC files, so these need to be set manually by the user\&.
Before execution, %f is replaced with path to the input FLAC
file\&. Double-quotes and backslash-espacing can be used to include
white-space to individual parameters\&. By default Ecasound will
try to launch (flac)\&.
.IP
.IP "ext-cmd-flac-output"
Command for starting FLAC output\&. Ecasound will write
samples to standard output\&. All audio parameters are
configurable\&. Before execution, %f is replaced with path to
the output flac, %c, %b and %s with matching audio
format parameters, %I with either \&'signed\&' or \&'unsigned\&', and
%E with either \&'little\&' or \&'big\&'\&. Double-quotes and backslash-espacing
can be used to include white-space to individual parameters\&. By default
Ecasound will try to launch (flac)\&.
.IP
.IP "ext-cmd-aac-input"
Command for starting AAC input\&. Ecasound expects that signed,
16bit, stereo, big-endian audio samplesare written to standard
output\&. It should be noted that Ecasound is not able to query
the input sample rate, so this needs to be set manually by the user\&.
Before execution, %f is replaced with path to the input AAC
file\&. Note! FAAC must be compiled with MP4 support\&. Double-quotes
and backslash-espacing can be used to include white-space to
individual parameters\&. By default Ecasound will try to
laucnh \fIfaad\fP\&.
.IP
.IP "ext-cmd-aac-output"
Command for starting AAC output\&. Ecasound will write big-endian
audio samples to standard output\&. All other audio parameters are
configurable\&. Before execution, %f is replaced with path to
the output AAC file, %c, %b and %s with matching audio format
parameters\&. Note! FAAC must be compiled with MP4 support\&. Double-quotes
and backslash-espacing can be used to include white-space to
individual parameters\&. By default Ecasound will try to launch
\fIfaac\fP\&.
.IP
.SH "DEPRECATED"
.PP
.IP "ext-cmd-wave-editor"
.IP
.SH "SEE ALSO"
.PP
ecasound (1), ecatools (1), ecasound-iam (1)
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,252 @@
<html><head>
<title>ecasoundrc</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecasoundrc</h1>
<h2>22.03.2009</h2>
<html><head>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1></h1>
<html><head>
<title>ecasoundrc(5)</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecasoundrc(5)</h1>
<h2> Multimedia software</h2>
<h2>22.03.2009</h2>
<p>
<h2>NAME</h2>ecasoundrc - ecasound rcfile
<p>
<h2>SYNOPSIS</h2>
{prefix}/share/ecasound/ecasoundrc (for instance '/usr/local/share/ecasound/ecasoundrc')
$HOME/.ecasound/ecasoundrc
<p>
<h2>DESCRIPTION</h2>
<p>
<strong>ecasoundrc</strong> is the main configuration file for ecasound.
Any user-specific modification should be done to
$HOME/.ecasound/ecasoundrc, not to the global resource file. Ecasound
also allows to disable the normal policy and only read from a specific
resource file (see ecasound (1) and documentation for the <strong>-R</strong> option).
<p>
The format is quite simple. One line consists of
a configuration variable and its value. Variable and value
are separated with either '=' or ' '. Lines beginning with a
"#" are ignored (comment lines).
<p>
<h2>VARIABLES</h2>
<p>
<dl>
<p>
<p><dt><strong>midi-device</strong><dd>
MIDI-device. If the device name is given in <em>rawmidi,/dev/midi*</em>
format, OSS/Linux or OSS/Lite drivers are used.
Device <em>rawmidi,/dev/snd/midiCxDy</em> opens an ALSA raw-MIDI
device with card number 'x' and device number 'y'.
See ecasound (1) man page (the '-Md option) for more info.
Defaults to <em>rawmidi,/dev/midi</em>.
<p>
<p><dt><strong>default-output</strong><dd>
Output device to use by default. If a chainsetup with zero
outputs, but with one or more inputs, is connected, a default output
is added and all the chains are connected to it. If the special-case
value 'autodetect' is specified, ecasound will try to auto-detect
a suitable device (JACK -&gt; ALSA -&gt; OSS -&gt; 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, &lt;<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>&gt;

View File

@ -0,0 +1,220 @@
.TH "ecatools" "1" "12\&.11\&.2005" "" "Multimedia software"
.PP
.SH "NAME"
ecatools \- audio processing utils based on ecasound
.PP
.SH "SYNOPSIS"
\fBecaconvert\fP \&.extension file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecafixdc\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecalength\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecamonitor\fP [host][:port]
.PP
\fBecanormalize\fP file1 [ file2 \&.\&.\&. fileN ]
.PP
\fBecaplay\fP [-dfhklopq] [ file1 file2 \&.\&.\&. fileN ]
.PP
\fBecasignalview\fP [ options ] [ input ] [ output ]
.PP
.SH "DESCRIPTION"
.PP
Ecatools are simple command line utils for audio file processing\&.
Each tool is designed to perform one specific operation\&. Most of
the tools also support batch processing\&.
.PP
\fBECACONVERT\fP
.PP
A tool for converting a set of files to a common target format\&.
This target format is given as the first command line
argument, and its syntax is \fI\&.ext\fP\&.
.PP
\fBECAFIXDC\fP
.PP
A simple command-line tool for fixing DC-offset\&.
.PP
\fBECALENGTH\fP
.PP
See the separate ecalength(1) man page\&.
.PP
\fBECAMONITOR\fP
.PP
Ecamonitor is a util program that can be used
to monitor an active ecasound session\&. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things\&.
.PP
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868"\&.
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo\&.mynetwork\&.com" or
"ecamonitor foo\&.mynetwork\&.com:4500"\&.
.PP
To enable inbound connections, ecasound has to be
started with the \fI--daemon\fP option\&. Ecamonitor is
implemented in Python using the NetECI API\&.
.PP
\fBECANORMALIZE\fP
.PP
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution\&. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file\&.
.PP
\fBECAPLAY\fP
.PP
Ecaplay is a command-line tool for playing audio files\&. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library\&.
.PP
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism\&. In playlist mode, files can be added to the playlist
using the \fI-q\fP option\&. The \fI-p\fP option can then be used
to play all tracks on the playlist\&. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C)\&.
Playlist can be flushed with \fI-f\fP and its contents listed
with \fI-l\fP option\&.
.PP
If not otherwise specified, ecaplay will use the audio output device
specified in \fI~/\&.ecasound/ecasoundrc\fP for playback\&. A different
output device can be selected with \fIECAPLAY_OUTPUT_DEVICE\fP shell
environment variable or with the \fI-o:output_device\fP command-line
option\&.
.PP
Playback can be stopped at any time with Ctrl-C\&. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one\&. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit\&.
.PP
.IP "-d:debuglevel"
Set libecasound debug level\&. See ecasound(1)\&.
.IP
.IP "-f"
Flush the playlist contents\&. See also
options \fI-l, -p and -q\fP\&.
.IP
.IP "-h"
Print usage information and exit\&.
.IP
.IP "-k:number"
Skip \&'number\&' of files\&.
.IP
.IP "-l"
List the current playlist contents to stdout\&. See also
options \fI-f, -p and -q\fP\&.
.IP
.IP "-o:output_device"
Use \&'output_device\&' instead of the default output device
(as specified in \fI~/\&.ecasound/ecasoundrc\fP)\&. Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page)\&.
This option overrides the \fIECAPLAY_OUTPUT_DEVICE\fP environment
variable (more info below)\&.
.IP
.IP "-p"
Play tracks in the playlist (in looped mode)\&. See also
options \fI-f, -l and -q\fP\&.
.IP
.IP "-q"
Queue new tracks to the playlist\&. All filenames given on
the command-line will be added to the the playlist\&. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist\&. See also options \fI-f, -l
and -p\fP\&.
.IP
\fBECASIGNALVIEW\fP
.PP
Ecasignalview is meant for monitoring signal amplitude and peak
statistics\&. It accepts the following options:
.PP
.IP "input"
The first option not starting with a \&'-\&' is interpreted
as an input string\&. This can be a device or a filename\&. All formats
supported by libecasound are accepted\&. Defaults to \&'/dev/dsp\&'\&.
.IP
.IP "output"
Similarly to input, second option not starting with a \&'-\&'
is interpreted as output\&. Defaults to \&'null\&'\&.
.IP
.IP "-b:buffersize"
Buffersize in sample frames\&. Defaults to 128\&.
.IP
.IP "-c"
Enable cumulative mode\&. Counters are not reseted after refresh\&.
\fI*deprecated*\fP
.IP
.IP "-d"
Enable debug mode\&.
.IP
.IP "-f:format_string"
Specify default audio format\&. See ecasound(1) for details\&.
.IP
.IP "-r:rate_msec"
Specify screen refresh rate in milliseconds\&.
.IP
.IP "-I"
Use linear scale for showing audio sample amplitude\&.
.IP
.IP "-L"
Use logarithmic scale for showing audio sample amplitude\&.
.IP
.IP "-G, -B, -M*, -r, -z"
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details\&.
.IP
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
.PP
.IP "spacebar"
Reset statistics (max-peak, avg-amplitude and clipped
samples count)\&.
.IP
.IP "q or Q or Esc"
Quit ecasignalview\&.
.IP
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i\&.e\&.
from another console: "killall -v -HUP ecasignalview")\&.
.PP
More complete documentation for ecasignalview can be found
from "Ecasound User\&'s Guide" (see \&'\&'http://www\&.eca\&.cx/ecasound
-> Documentation\&'\&')\&.
.PP
.SH "ENVIRONMENT"
.PP
\fIECASOUND\fP
Path to the ecasound executable\&. Used by many ecatools\&.
.PP
\fIECAPLAY_OUTPUT_DEVICE\fP
Device ecaplay should use for audio output\&. Same syntax
as for ecaplay/ecasound "-o" option\&.
.PP
.SH "FILES"
.PP
\fI~/\&.ecasound/ecasoundrc\fP
The default ecasound resource file\&. See ecasoundrc(5)
for details\&.
.PP
\fI~/\&.ecasound/ecaplay_queue\fP
File used to store the ecaplay playlist (one track per
line with full path)\&.
.PP
.SH "SEE ALSO"
.PP
ecasound (1), ecalength(1), "HTML docs in the Documentation subdirectory"
.PP
.SH "AUTHOR"
.PP
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot- cx>>

View File

@ -0,0 +1,248 @@
<html><head>
<title>ecatools</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecatools</h1>
<h2>12.11.2005</h2>
<html><head>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1></h1>
<html><head>
<title>ecatools(1)</title>
<link rev="made" href="mailto:kvehmanen -at- eca -dot- cx">
</head>
<body>
<hr>
<h1>ecatools(1)</h1>
<h2> Multimedia software</h2>
<h2>12.11.2005</h2>
<p>
<h2>NAME</h2>ecatools - audio processing utils based on ecasound
<p>
<h2>SYNOPSIS</h2>
<strong>ecaconvert</strong> .extension file1 [ file2 ... fileN ]
<p>
<strong>ecafixdc</strong> file1 [ file2 ... fileN ]
<p>
<strong>ecalength</strong> file1 [ file2 ... fileN ]
<p>
<strong>ecamonitor</strong> [host][:port]
<p>
<strong>ecanormalize</strong> file1 [ file2 ... fileN ]
<p>
<strong>ecaplay</strong> [-dfhklopq] [ file1 file2 ... fileN ]
<p>
<strong>ecasignalview</strong> [ options ] [ input ] [ output ]
<p>
<h2>DESCRIPTION</h2>
<p>
Ecatools are simple command line utils for audio file processing.
Each tool is designed to perform one specific operation. Most of
the tools also support batch processing.
<p>
<strong>ECACONVERT</strong>
<p>
A tool for converting a set of files to a common target format.
This target format is given as the first command line
argument, and its syntax is <em>.ext</em>.
<p>
<strong>ECAFIXDC</strong>
<p>
A simple command-line tool for fixing DC-offset.
<p>
<strong>ECALENGTH</strong>
<p>
See the separate ecalength(1) man page.
<p>
<strong>ECAMONITOR</strong>
<p>
Ecamonitor is a util program that can be used
to monitor an active ecasound session. Ecamonitor
is able to show information about the current
chainsetup such as list of inputs, outputs,
current position, effects, the engine status
and numerous other things.
<p>
By default ecamonitor will try to connect
to IP4 address "localhost", to port "2868".
A different address can be specified when
starting ecamonitor, for example
"ecamonitor foo.mynetwork.com" or
"ecamonitor foo.mynetwork.com:4500".
<p>
To enable inbound connections, ecasound has to be
started with the <em>--daemon</em> option. Ecamonitor is
implemented in Python using the NetECI API.
<p>
<strong>ECANORMALIZE</strong>
<p>
Ecanormalize is a command-line tool for normalizing audio
files to utilize the full available sample resolution. Ecanormalize
first finds out how much the input file can be amplified without
clipping and if there is room for increase, a static gain will
be applied to the file.
<p>
<strong>ECAPLAY</strong>
<p>
Ecaplay is a command-line tool for playing audio files. Ecaplay
uses the libecasound engine and is thus able to handle all audio formats
supported by the library.
<p>
Files can be selected for playback either by specifying the
filenames on the command-line, or by using the playlist
mechanism. In playlist mode, files can be added to the playlist
using the <em>-q</em> option. The <em>-p</em> option can then be used
to play all tracks on the playlist. Ecaplay will repeat the
playlist tracks until explicitly stopped (with double Ctrl-C).
Playlist can be flushed with <em>-f</em> and its contents listed
with <em>-l</em> option.
<p>
If not otherwise specified, ecaplay will use the audio output device
specified in <em>~/.ecasound/ecasoundrc</em> for playback. A different
output device can be selected with <em>ECAPLAY_OUTPUT_DEVICE</em> shell
environment variable or with the <em>-o:output_device</em> command-line
option.
<p>
Playback can be stopped at any time with Ctrl-C. If multiple
files are played, first Ctrl-C will stop the current file and move
on to play the next one. Issuing Ctrl-C twice (within one second),
will cause ecaplay to exit.
<p>
<dl>
<p><dt><strong>-d:debuglevel</strong><dd>
Set libecasound debug level. See ecasound(1).
<p>
<p><dt><strong>-f</strong><dd>
Flush the playlist contents. See also
options <em>-l, -p and -q</em>.
<p>
<p><dt><strong>-h</strong><dd>
Print usage information and exit.
<p>
<p><dt><strong>-k:number</strong><dd>
Skip 'number' of files.
<p>
<p><dt><strong>-l</strong><dd>
List the current playlist contents to stdout. See also
options <em>-f, -p and -q</em>.
<p>
<p><dt><strong>-o:output_device</strong><dd>
Use 'output_device' instead of the default output device
(as specified in <em>~/.ecasound/ecasoundrc</em>). Syntax is same
as used by "-o" ecasound option (see ecasound(1) man page).
This option overrides the <em>ECAPLAY_OUTPUT_DEVICE</em> environment
variable (more info below).
<p>
<p><dt><strong>-p</strong><dd>
Play tracks in the playlist (in looped mode). See also
options <em>-f, -l and -q</em>.
<p>
<p><dt><strong>-q</strong><dd>
Queue new tracks to the playlist. All filenames given on
the command-line will be added to the the playlist. It is
possible to queue new tracks while another instance of
ecaplay is using the playlist. See also options <em>-f, -l
and -p</em>.
<p>
</dl>
<p>
<strong>ECASIGNALVIEW</strong>
<p>
Ecasignalview is meant for monitoring signal amplitude and peak
statistics. It accepts the following options:
<p>
<dl>
<p><dt><strong>input</strong><dd>
The first option not starting with a '-' is interpreted
as an input string. This can be a device or a filename. All formats
supported by libecasound are accepted. Defaults to '/dev/dsp'.
<p>
<p><dt><strong>output</strong><dd>
Similarly to input, second option not starting with a '-'
is interpreted as output. Defaults to 'null'.
<p>
<p><dt><strong>-b:buffersize</strong><dd>
Buffersize in sample frames. Defaults to 128.
<p>
<p><dt><strong>-c</strong><dd>
Enable cumulative mode. Counters are not reseted after refresh.
<em>*deprecated*</em>
<p>
<p><dt><strong>-d</strong><dd>
Enable debug mode.
<p>
<p><dt><strong>-f:format_string</strong><dd>
Specify default audio format. See ecasound(1) for details.
<p>
<p><dt><strong>-r:rate_msec</strong><dd>
Specify screen refresh rate in milliseconds.
<p>
<p><dt><strong>-I</strong><dd>
Use linear scale for showing audio sample amplitude.
<p>
<p><dt><strong>-L</strong><dd>
Use logarithmic scale for showing audio sample amplitude.
<p>
<p><dt><strong>-G, -B, -M*, -r, -z</strong><dd>
Ecasound options use to modify the engine behaviour, see
ecasound(1) manpage for details.
<p>
</dl>
<p>
When ecasignalview is running, the following keyboard
commands can be used to control the operation (requires
system support for UNIX terminal interface control):
<p>
<dl>
<p><dt><strong>spacebar</strong><dd>
Reset statistics (max-peak, avg-amplitude and clipped
samples count).
<p>
<p><dt><strong>q or Q or Esc</strong><dd>
Quit ecasignalview.
<p>
</dl>
<p>
It is also possible to reset the max-peak and clipped-samples
counters by sending a SIGHUP signal to the process (i.e.
from another console: "killall -v -HUP ecasignalview").
<p>
More complete documentation for ecasignalview can be found
from "Ecasound User's Guide" (see ''http://www.eca.cx/ecasound
-&gt; 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, &lt;<a href="mailto:kvehmanen -at- eca -dot- cx"><em>kvehmanen -at- eca -dot- cx</em></a>&gt;

View File

@ -0,0 +1,435 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Documentation/programmers_guide/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# ----------------------------------------------------------------------
# File: ecasound/Documentation/programmers_guide/Makefile.am
# Description: Ecasound documentation - programmer's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = .
top_srcdir = ../..
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
subdir = Documentation/programmers_guide
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
# ---------------------------------------------------------------------
# Files going into distribution:
EXTRA_DIST = ecasound_programmers_guide.txt \
eci_doc.latex
DISTCLEANFILES = \
ecasound_programmers_guide.html \
eci_doc.log \
eci_doc.aux \
eci_doc.toc \
eci_doc.dvi \
eci_doc.ps \
ecasound_eci_doc.pdf \
html_ecidoc/eci_doc.html \
html_ecidoc/eci_doc.haux \
html_ecidoc/eci_doc.htoc
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
all:
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
mkdir -p html_ecidoc
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
eci_doc.dvi: $(srcdir)/eci_doc.latex
clean-docs:
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
rm -fv html_ecidoc/*
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,50 @@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/programmers_guide/Makefile.am
# Description: Ecasound documentation - programmer's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
# ---------------------------------------------------------------------
# Files going into distribution:
EXTRA_DIST = ecasound_programmers_guide.txt \
eci_doc.latex
DISTCLEANFILES = \
ecasound_programmers_guide.html \
eci_doc.log \
eci_doc.aux \
eci_doc.toc \
eci_doc.dvi \
eci_doc.ps \
ecasound_eci_doc.pdf \
html_ecidoc/eci_doc.html \
html_ecidoc/eci_doc.haux \
html_ecidoc/eci_doc.htoc
all:
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
mkdir -p html_ecidoc
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
eci_doc.dvi: $(srcdir)/eci_doc.latex
clean-docs:
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
rm -fv html_ecidoc/*

View File

@ -0,0 +1,435 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/programmers_guide/Makefile.am
# Description: Ecasound documentation - programmer's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = Documentation/programmers_guide
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
# ---------------------------------------------------------------------
# Files going into distribution:
EXTRA_DIST = ecasound_programmers_guide.txt \
eci_doc.latex
DISTCLEANFILES = \
ecasound_programmers_guide.html \
eci_doc.log \
eci_doc.aux \
eci_doc.toc \
eci_doc.dvi \
eci_doc.ps \
ecasound_eci_doc.pdf \
html_ecidoc/eci_doc.html \
html_ecidoc/eci_doc.haux \
html_ecidoc/eci_doc.htoc
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/programmers_guide/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
all:
docs: ecasound_programmers_guide.html ecasound_eci_doc.pdf
ecasound_programmers_guide.html: $(srcdir)/ecasound_programmers_guide.txt
rst2html $(srcdir)/ecasound_programmers_guide.txt ecasound_programmers_guide.html
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
ecasound_eci_doc.pdf: $(srcdir)/eci_doc.latex eci_doc.dvi
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
latex $(srcdir)/eci_doc.latex
dvips -Ppdf -o eci_doc.ps eci_doc.dvi
ps2pdf eci_doc.ps ecasound_eci_doc.pdf
mkdir -p html_ecidoc
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
hevea -o html_ecidoc/eci_doc.html $(srcdir)/eci_doc.latex
eci_doc.dvi: $(srcdir)/eci_doc.latex
clean-docs:
rm -fv ecasound_programmers_guide.html ecasound_eci_doc.pdf
rm -fv eci_doc.log eci_doc.toc eci_doc.dvi eci_doc.aux eci_doc.ps eci_doc.dvi
rm -fv html_ecidoc/*
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,714 @@
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{ae}
%\usepackage{html}
%\bodytext{link="#662a00" vlink="#666655" bgcolor="#ffffff"}
\title{Ecasound Control Interface Guide}
\author{Kai Vehmanen, Brad Bowman, Tony Leake, Jan Weil, Mario Lang}
\date{03062006}
\begin{document}
\maketitle
\tableofcontents
\clearpage
% ----------------------------------------------------------------------
% ----------------------------------------------------------------------
\section{Introduction}
The idea behind the Ecasound Control Interface (ECI) is to take a subset of
functionality provided by libecasound, provide a simple API for it, and
port it to various languages. At the moment, implementations of the
ECI API are available for C, C++, elisp, Python and Ruby. These all
come by default with the Ecasound package. Additional implementations,
for example for Perl and PHP, are distributed independently.
ECI is heavily based on Ecasound's interactive mode (EIAM), and the
services it provides. See \texttt{ecasound-iam(1) manual page} for
a detailed EIAM documentation.
% ----------------------------------------------------------------------
% ----------------------------------------------------------------------
\section{Document history}
\begin{itemize}
\item 04.06.2006 - Added more information to the ``Tips for debugging'' section.
\item 21.03.2005 - Updated the ``Tips for debugging'' section.
\item 25.09.2004 - Updated the ``Return values'' section based on feedback
from Adam Linson.
\item 02.05.2004 - ``Emacs'' section added (written by Mario Lang).
\item 28.11.2003 - ``Ruby'' section added (written by Jan Weil).
Updated the introduction.
\item 26.11.2003 - Fix filename for the alternative Python API (eci.py).
\item 18.11.2003 - Typo fixes. Updated documentation to reflect the new
naming convention (ecasound refers to the binary,
Ecasound refers to the whole package).
\item 26.10.2002 - Changed the C++ linking example.
\item 24.10.2002 - Added ``Notes Concerning Standalone ECI Implementations''
section. Added compilation examples.
\item 06.10.2002 - Added ``Application development'' section.
\item 05.10.2002 - Changed the libecasoundc link path.
\item 29.09.2002 - ``PHP'' section added (written by Tony Leake).
\item 25.04.2002 - Changed headers path from ``<ecasoundc/file.h>'' to
``<file.h>'' and added library version number to
link instructions.
\item 21.10.2001 - Added this history section. Minor changes to
ECI examples.
\end{itemize}
% ----------------------------------------------------------------------
% ----------------------------------------------------------------------
\section{General}
ECI doesn't provide any routines that directly manipulate audio or
Ecasound objects. What it does provide is an easy and generic way
to issue EIAM (Ecasound Inter-Active Mode) commands, access the
command return-values and perform error handling.
This approach has two benefits. First, it is possible to keep the API
small, and thus make it easier to port ECI to new languages. Secondly,
it's possible to keep ECI relatively stable. Ecasound itself is a large,
developing library. New features are added all the time, and from time
to time, older parts of the library will get rewritten to better suit
new uses. Now for application developers wanting to take advantage of
libecasound, these constant changes are very annoying, especially if
your specific app doesn't need the latest new features. In these
cases, ECI is the best platform for application development.
% ----------------------------------------------------------------------
\subsection{What's it good for?}
Specific tasks ECI is aimed at:
\begin{itemize}
\item 1. automating (scripting in its traditional sense)
\item 2. frontends (generic / specialized)
\item 3. sound services to other apps
\end{itemize}
% ----------------------------------------------------------------------
\subsection{Services and behaviour}
Here is a list of services provided by all ECI implementations:
\subsubsection{Actions}
\begin{description}
\item[command(string)]
Issue an EIAM command.
\item[command\_float\_arg(string, float)]
Issue an EIAM command. This function can be used instead of
\emph{command(string)}, if the command in question requires exactly one
numerical parameter. This way it's possible to avoid the extra
string -> float conversion, which would lead to lost precision.
\end{description}
\subsubsection{Return values}
Each EIAM command has exactly one return value type. After a command
has been issued, only one last\_type() functions returns a non-empty
value. For example, last\_float() only returns a valid value if
\emph{last\_type() == 'f'} holds true. Not all EIAM commands return
a value (return type is void).
\begin{description}
\item[last\_string()]
Returns the last string return value.
\item[last\_string\_list()]
Returns the last collection of strings (one or more strings).
\item[last\_float()]
Returns the last floating-point return value. Note! last\_float()
doesn't refer to the C/C++ type 'float'. In most implementations,
floats are 64bit values (doubles in C/C++).
\item[last\_integer()]
Returns the last integer return value. This function is also
used to return boolean values, where non-zero means 'true'
and zero 'false'.
\item[last\_long\_integer()]
Returns the last long integer return value. Long integers are
used to pass values like 'length\_in\_samples' and 'length\_in\_bytes'.
It's implementation specific whether there's any real difference
between integers and long integers.
\end{description}
\subsubsection{Errors}
\begin{description}
\item[error()]
Returns true (!= 0) if error has occured during the execution
of last EIAM command. Otherwise returns false (= 0).
\item[last\_error()]
Returns a string describing the last error. If the last EIAM command
was executed succesfully, last\_error() returns an empty string.
\end{description}
\subsubsection{Other}
\begin{description}
\item[initialize()]
Reserve resources.
\item[cleanup()]
Free all reserved resources.
\end{description}
% ----------------------------------------------------------------------
\subsection{Porting to new environments}
Porting ECI to new languages should be easy. All there is to do is
to implement the services listed in the previous section to the target
language. In most cases it's to easiest to use the C++ or C ECI
as the underlying implementation to build upon.
% ----------------------------------------------------------------------
% ----------------------------------------------------------------------
\section{Implementations}
% ----------------------------------------------------------------------
\subsection{General}
\subsubsection{Overview}
This section contains overview of how ECI is implemented in the
discussed language (eg. as a single class, set of classes, set of
routines, etc).
\subsubsection{Usage}
A quick tutorial to get you started.
\subsubsection{Example}
Implementation of the following:
\begin{enumerate}
\item Setup ECI to read audio from file, apply a 100Hz lowpass filter, and
send it to the soundcard (/dev/dsp).
\item Every second, check the current position. If the stream has
been running for over 15 seconds, exit immediately. Also,
every second, increase the lowpass filter's cutoff frequency
by 500Hz.
\item Stop the stream (if not already finished) and disconnect the
chainsetup. Print chain operator status info.
\end{enumerate}
% ----------------------------------------------------------------------
\subsection{Notes Concerning Standalone ECI Implementations}
The C implementation of ECI is not directly linked against the main
Ecasound libraries. Instead, the ecasound executable is launched
on the background and command pipes are used to communicate with it.
The launched ecasound executable can be selected by using the
\emph{ECASOUND} environment variable. If it is not defined,
the C ECI implementation will try to launch ``ecasound'' (ie.
has to be somewhere in PATH).
In addition to the C implementation, this also affects all
ECI implementations that are based on the C version. Currently
this includes at least the Perl, PHP and Python ECI modules.
% ----------------------------------------------------------------------
\subsection{C++}
\subsubsection{Overview}
C++ implementation is based around the ECA\_CONTROL\_INTERFACE class.
STL vector is used for representing collections of objects
(last\_string\_list()).
\subsubsection{Usage}
\begin{enumerate}
\item \#include <eca-control-interface.h>
\item create an instance of the ECA\_CONTROL\_INTERFACE class
and use its member functions
\item link you app agains libecasoundc (-lecasoundc)
\item compilation example: \emph{c++ -o ecidoc\_example ecidoc\_example.cpp `libecasoundc-config --cflags --libs`}
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
#include <iostream>
#include <unistd.h>
#include <eca-control-interface.h>
int main(int argc, char *argv[])
{
double cutoff_inc = 500.0;
ECA_CONTROL_INTERFACE e;
e.command("cs-add play_chainsetup");
e.command("c-add 1st_chain");
e.command("ai-add some_file.wav");
e.command("ao-add /dev/dsp");
e.command("cop-add -efl:100");
e.command("cop-select 1");
e.command("copp-select 1");
e.command("cs-connect");
e.command("start");
while(1) {
sleep(1);
e.command("engine-status");
if (e.last_string() != "running") break;
e.command("get-position");
double curpos = e.last_float();
if (curpos > 15.0) break;
e.command("copp-get");
double next_cutoff = cutoff_inc + e.last_float();
e.command_float_arg("copp-set", next_cutoff);
}
e.command("stop");
e.command("cs-disconnect");
e.command("cop-status");
cerr << "Chain operator status: " << e.last_string() << endl;
return(0);
}
\end{verbatim}
% ----------------------------------------------------------------------
\subsection{C}
\subsubsection{Overview}
All C ECI functions are prefixed with "eci\_". When returning string
values, a const pointer to a null-terminated char array (const char*)
is returned. It's important to keep in mind that these are "borrowed"
references. If you need to later use the data, you must copy
it to application's own buffers.
Returning a list of strings is implemented using two functions:
\emph{eci\_last\_string\_list\_count()} returns the number of strings
available, and \emph{eci\_last\_string\_list\_item(int n)} returns a
pointer (const char*) to the string at index \emph{n}.
\emph{Note!} As of Ecasound 2.0.1, the C ECI implementation also
provides reentrant access to the ECI API. These
alternative routines are marked with '\_r' postfix.
\subsubsection{Usage}
\begin{enumerate}
\item \#include <ecasoundc.h>
\item use the eci\_* routines
\item link your app against libecasoundc (-lecasoundc)
\item compilation example: \emph{gcc -o ecidoc\_example ecidoc\_example.c `libecasoundc-config --cflags --libs`}
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
#include <stdio.h>
#include <unistd.h>
#include <ecasoundc.h>
int main(int argc, char *argv[])
{
double cutoff_inc = 500.0;
eci_init();
eci_command("cs-add play_chainsetup");
eci_command("c-add 1st_chain");
eci_command("ai-add some_file.wav");
eci_command("ao-add /dev/dsp");
eci_command("cop-add -efl:100");
eci_command("cop-select 1");
eci_command("copp-select 1");
eci_command("cs-connect");
eci_command("start");
while(1) {
double curpos, next_cutoff;
sleep(1);
eci_command("engine-status");
if (strcmp(eci_last_string(), "running") != 0) break;
eci_command("get-position");
curpos = eci_last_float();
if (curpos > 15.0) break;
eci_command("copp-get");
next_cutoff = cutoff_inc + eci_last_float();
eci_command_float_arg("copp-set", next_cutoff);
}
eci_command("stop");
eci_command("cs-disconnect");
eci_command("cop-status");
printf("Chain operator status: %s", eci_last_string());
eci_cleanup();
return(0);
}
\end{verbatim}
% ----------------------------------------------------------------------
\subsection{Emacs}
\subsubsection{Overview}
The Ecasound package comes with an 'Ecasound' library for Emacs included.
ecasound.el is a implementation of the ECI API for Emacs, as well
as an interactive interface to Ecasound sessions implemented
on top of that. Simply use "M-x ecasound RET" to fire up an
interactive Ecasound session.
All Emacs Lisp ECI functions are prefixed with ``eci\-''.
'ecasound.el' is implemented in a high level manner which means
that you won't find most of the commands known from libecasoundc like
last\_string, last\_float, etc.
Instead of that every call to function "eci-command", which accepts all
the well known IAM commands, returns ecasound's response in an appropriate type
automatically.
If an error occurs, e. g. there's a typo in a command or a file is not found,
the function returns ``nil''. In all other cases, either an automatically
converted Lisp value is returned, or ``t'' in the case where there was no
particular value returned.
Additionally, most of the available IAM commands have their own Emacs Lisp
function including documentation and possibly a parameter list. All these
functions are interactive, so you can use them in ecasound-iam-mode simply
by invoking them via M-x or by pressing an assigned key combination.
Emacs will prompt you for the required parameters, providing completion
wherever possible.
As a convention, "eci-command" and its variants do take a buffer or process
as an optional last argument. If this is ``nil'', the current
buffer is assumed to be the ecasound session refered to by this call.
This makes it possible to use several ECI sessions concurrently, dispatching
on the buffer or process in use.
\subsubsection{Usage}
\begin{enumerate}
\item make ecasound.el available in your ``load-path''
\item (require 'ecasound)
\item create a buffer with an associated Ecasound session (``eci-init'')
\item use ``eci\-'' functions with the new buffer
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
(require 'ecasound)
(defun example (file &optional cutoff-increment session)
(unless cutoff-increment (setq cutoff-increment 500.0))
(with-current-buffer (or session (eci-init))
(eci-cs-add "play_chainsetup")
(eci-c-add "1st_chain")
(eci-ai-add file)
(eci-ao-add "/dev/dsp")
(eci-cop-add "-efl:100")
(eci-cop-select 1)
(eci-copp-select 1)
(eci-cs-connect)
(eci-start)
(sit-for 1)
(while (and (string= (eci-engine-status) "running")
(<= (eci-get-position) 15))
(eci-copp-set (+ cutoff-increment (eci-copp-get)))
(sit-for 1))
(eci-command "stop")
(when (eci-cs-disconnect)
(destructuring-bind
((cop n1 (copp n2 val)))
(cdr (assoc "1st_chain" (eci-cop-status)))
(message "%s %s is now %f" cop copp val)))))
\end{verbatim}
NOTE: function ``eci-cop-status'' is actually a very high level function
which already converts the returned information to a nested list
structure.
For more complex examples of the Emacs Lisp ECI implementation, see function
``eci-example'', ``ecasound-normalize'' and ``ecasound-signalview'' in
ecasound.el.
% ----------------------------------------------------------------------
\subsection{Python}
\subsubsection{Overview}
Python implementation is based around the ECA\_CONTROL\_INTERFACE class.
Lists are used for representing collections of objects.
Note! Eric S. Tiedemann has written an alternative Python interface
to ECI. You'll find this interface included in the main
Ecasound packege, in ``pyecasound/eci.py''. To use this instead
of the standard interface, just 'import eci' and you're set! :)
\subsubsection{Usage}
\begin{enumerate}
\item import pyeca
\item create an instance of the ECA\_CONTROL\_INTERFACE class
and use its member functions
\item python 'yourapp.py' and that's it :)
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
#!/usr/local/bin/python
import time
from pyeca import *
e = ECA_CONTROL_INTERFACE()
e.command("cs-add play_chainsetup")
e.command("c-add 1st_chain")
e.command("ai-add some_file.wav")
e.command("ao-add /dev/dsp")
e.command("cop-add -efl:100")
e.command("cop-select 1")
e.command("copp-select 1")
e.command("cs-connect")
e.command("start")
cutoff_inc = 500.0
while 1:
time.sleep(1)
e.command("engine-status")
if e.last_string() != "running": break
e.command("get-position")
curpos = e.last_float()
if curpos > 15: break
e.command("copp-get")
next_cutoff = cutoff_inc + e.last_float()
e.command_float_arg("copp-set", next_cutoff)
e.command("stop")
e.command("cs-disconnect")
e.command("cop-status")
print "Chain operator status: ", e.last_string()
\end{verbatim}
% ----------------------------------------------------------------------
\subsection{Perl}
\subsubsection{Overview}
Audio::Ecasound provides perl bindings to the Ecasound
control interface of the Ecasound program. You can use
perl to automate or interact with Ecasound so you don't
have to turn you back on the adoring masses packed into
Wembly Stadium.
Audio::Ecasound was written by Brad Bowman. At the moment this module
is not distributed with Ecasound. To get the latest version, check the
following \texttt{CPAN link}.
\subsubsection{Usage}
See the below example. For more info, here's another
\texttt{CPAN link}.
\subsubsection{Example}
use Audio::Ecasound qw(:simple);
\begin{verbatim}
eci("cs-add play_chainsetup");
eci("c-add 1st_chain");
eci("ai-add some_file.wav");
eci("ao-add /dev/dsp");
# multiple \n separated commands
eci("cop-add -efl:100
# with comments
cop-select 1
copp-select 1
cs-connect");
eci("start");
my $cutoff_inc = 500.0;
while (1) {
sleep(1);
last if eci("engine-status") ne "running";
my $curpos = eci("get-position");
last if $curpos > 15;
my $next_cutoff = $cutoff_inc + eci("copp-get");
# Optional float argument
eci("copp-set", $next_cutoff);
}
eci("stop");
eci("cs-disconnect");
print "Chain operator status: ", eci("cop-status");
\end{verbatim}
% ----------------------------------------------------------------------
\subsection{PHP}
\subsubsection{Overview}
This PHP extension provides bindings to the Ecasound
control interface. It is useful both for scripting Ecasound
and for writing graphical audio applications with PHP Gtk.
The PHP Ecasound extension was written by Tony Leake. At the moment this module
is not distributed with Ecasound. The latest version and example scripts, are
available from \texttt{http://www.webwise-data.co.uk/php\_audio/php\_audio\_extension.html}.
\subsubsection{Usage}
\begin{enumerate}
\item Obtain and build the Ecasound PHP extension
\item Initialise Ecasound, eci\_int();
\item Issue EAM commands eg, eci\_command("cs-add my\_chain\_setup");
\item Free resources, eci\_cleanup();
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
Implementation of the following:
1. Setup ECI to read audio from file, apply a 100Hz lowpass filter,
and send it to the soundcard (/dev/dsp).
2. Every second, check the current position. If the stream has been
running for over 15 seconds, exit immediately. Also, every second,
increase the lowpass filter's cutoff frequency by 500Hz.
3. Stop the stream (if not already finished) and disconnect the chainsetup.
Print chain operator status info
<?php
$cutoff_inc = 500.0;
$curpos=0;
$next_cutoff=0;
eci_init();
eci_command("cs-add play_chainsetup");
eci_command("c-add 1st_chain");
eci_command("ai-add /tmp/somefile.wav");
eci_command("ao-add /dev/dsp");
eci_command("cop-add -efl:10");
eci_command("cop-select 1");
eci_command("copp-select 1");
eci_command("cs-connect");
eci_command("start");
while(1) {
sleep(1);
eci_command("engine-status");
if (eci_last_string() !="running"){
break;
}
eci_command("get-position");
$curpos = eci_last_float();
if ($curpos > 15.0){
break;
}
eci_command("copp-get");
$next_cutoff = $cutoff_inc + eci_last_float();
eci_command_float_arg("copp-set",$next_cutoff);
}
eci_command("stop");
eci_command("cs-disconnect");
eci_command("cop-status");
printf("Chain operator status: %s", eci_last_string());
eci_cleanup();
?>
\end{verbatim}
% ----------------------------------------------------------------------
\subsection{Ruby}
\subsubsection{Overview}
The Ecasound package comes with an 'Ecasound' module for Ruby included.
If ruby is detected during the installation process it is installed
automatically (assuming you are installing ecasound from source code).
The module contains the class definition of a native ecasound control interface
called "ControlInterface".
'Ecasound::ControlInterface' is implemented in a high level manner which means
that you won't find most of the commands known from libecasoundc like
last\_string, last\_float, etc.
Instead of that every call to the instance method "command", which accepts all
the well known IAM commands, returns ecasound's response in an appropriate type
automatically.
If an error occurs, e. g. there's a typo in a command or a file is not found,
an exception of type EcasoundError is raised.
\subsubsection{Usage}
\begin{enumerate}
\item require 'ecasound'
\item create an instance of Ecasound::ControlInterface
\item use it's command method to send IAM commands to ecasound
\item catch an EcasoundError if necessary
\end{enumerate}
\subsubsection{Example}
\begin{verbatim}
#!/usr/bin/env ruby
require "ecasound"
SOME_FILE = "path/to/file.wav"
e = Ecasound::ControlInterface.new()
e.command("cs-add play_chainsetup")
e.command("c-add 1st_chain")
e.command("ai-add #{SOME_FILE}")
e.command("ao-add /dev/dsp")
e.command("cop-add -efl:100")
e.command("cop-select 1")
e.command("copp-select 1")
e.command("cs-connect")
e.command("start")
cutoff_inc = 500.0
loop do
sleep(1)
break if e.command("engine-status") != "running"
break if e.command("get-position") > 15
e.command("copp-set #{cutoff_inc + e.command('copp-get')}")
end
e.command("stop")
e.command("cs-disconnect")
$stdout << "Chain operator status: " + e.command("cop-status") + "\n"
\end{verbatim}
% ----------------------------------------------------------------------
% ----------------------------------------------------------------------
\section{Application development}
% ----------------------------------------------------------------------
\subsection{Tips for debugging}
Here's a few tips what to do if the ECI app you have developed
is not working correctly.
\begin{enumerate}
\item Check your Ecasound installation. Try to run the ``ecasound''
console user-interface and verify that the basic functionality
is working (ie. something like ``ecasound -i foo.wav -o
/dev/dsp''.
\item If developing in C or C++, check that your application
is correcly linked: ``ldd /path/to/myapp''. All the libraries
should be properly found.
\item Check error conditions. You should remember to check
for errors in your ECI apps using the eci\_error() and
eci\_last\_error() functions. Especially when intializing
ECI for the first time and after important commands
like ``cs-connect'', you should always check for errors.
\item Use the ECASOUND\_LOGFILE environment variable to write all
engine output to a separate logfile. See ecasound(1) manpage
for details on how to use this mechanism. Requires Ecasound
version 2.4.5 or newer.
\item Utilize the ``int-log-history'' ECI command added to
version 2.4.0 of Ecasound. Recent messages from the
engine can help to track down the problem. Before use, you
need to first set the history length to a non-zero value with
``int-set-log-history-length''.
\item Launch Ecasound in interactive mode (``ecasound -c''),
and issue the commands your ECI application is using,
manually one-by-one and see what happens. If something
goes wrong, increase Ecasound's debug level (for instance
``-ddd'') and re-run the test.
\end{enumerate}
\end{document}

View File

@ -0,0 +1,432 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Documentation/users_guide/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# ----------------------------------------------------------------------
# File: ecasound/Documentation/users_guide/Makefile.am
# Description: Ecasound documentation - user's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
# ---------------------------------------------------------------------
# Files going into distribution:
srcdir = .
top_srcdir = ../..
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
subdir = Documentation/users_guide
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
EXTRA_DIST = users_guide.latex
DISTCLEANFILES = \
users_guide.log \
users_guide.aux \
users_guide.out \
users_guide.dvi \
users_guide.toc \
users_guide.ps \
ecasound_users_guide.pdf \
html_uguide/users_guide.html \
html_uguide/users_guide.haux \
html_uguide/users_guide.htoc
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/users_guide/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/users_guide/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
all:
docs: ecasound_users_guide.pdf
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
users_guide.dvi: $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
dvips -Ppdf -o users_guide.ps users_guide.dvi
ps2pdf users_guide.ps ecasound_users_guide.pdf
mkdir -p html_uguide
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
ecasound_users_guide.pdf: users_guide.dvi
clean-docs:
rm -fv ecasound_users_guide.pdf
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
rm -fv html_uguide/*
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,50 @@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/users_guide/Makefile.am
# Description: Ecasound documentation - user's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
# ---------------------------------------------------------------------
# Files going into distribution:
EXTRA_DIST = users_guide.latex
DISTCLEANFILES = \
users_guide.log \
users_guide.aux \
users_guide.out \
users_guide.dvi \
users_guide.toc \
users_guide.ps \
ecasound_users_guide.pdf \
html_uguide/users_guide.html \
html_uguide/users_guide.haux \
html_uguide/users_guide.htoc
all:
docs: ecasound_users_guide.pdf
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
users_guide.dvi: $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
dvips -Ppdf -o users_guide.ps users_guide.dvi
ps2pdf users_guide.ps ecasound_users_guide.pdf
mkdir -p html_uguide
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
ecasound_users_guide.pdf: users_guide.dvi
clean-docs:
rm -fv ecasound_users_guide.pdf
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
rm -fv html_uguide/*

View File

@ -0,0 +1,432 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# ----------------------------------------------------------------------
# File: ecasound/Documentation/users_guide/Makefile.am
# Description: Ecasound documentation - user's guide
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
# ---------------------------------------------------------------------
# Files going into distribution:
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ../..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
subdir = Documentation/users_guide
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
SOURCES =
DIST_SOURCES =
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
EXTRA_DIST = users_guide.latex
DISTCLEANFILES = \
users_guide.log \
users_guide.aux \
users_guide.out \
users_guide.dvi \
users_guide.toc \
users_guide.ps \
ecasound_users_guide.pdf \
html_uguide/users_guide.html \
html_uguide/users_guide.haux \
html_uguide/users_guide.htoc
all: all-am
.SUFFIXES:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Documentation/users_guide/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Documentation/users_guide/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
tags: TAGS
TAGS:
ctags: CTAGS
CTAGS:
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile
installdirs:
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-libtool
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am:
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-info-am
.PHONY: all all-am check check-am clean clean-generic clean-libtool \
distclean distclean-generic distclean-libtool distdir dvi \
dvi-am html html-am info info-am install install-am \
install-data install-data-am install-exec install-exec-am \
install-info install-info-am install-man install-strip \
installcheck installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-generic \
mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
uninstall-info-am
all:
docs: ecasound_users_guide.pdf
ecasound_eci_doc.pdf: eci_doc.latex eci_doc.dvi
# note: to create the table of contents (which spans multiple pages), and
# re-calculate the page numbers after the page offset generated by table
# of contents, latex needs to be ran 3 times. (Junichi Uekawa, 2007-08-06)
users_guide.dvi: $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
latex $(srcdir)/users_guide.latex
dvips -Ppdf -o users_guide.ps users_guide.dvi
ps2pdf users_guide.ps ecasound_users_guide.pdf
mkdir -p html_uguide
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
hevea -o html_uguide/users_guide.html $(srcdir)/users_guide.latex
ecasound_users_guide.pdf: users_guide.dvi
clean-docs:
rm -fv ecasound_users_guide.pdf
rm -fv users_guide.log users_guide.toc users_guide.dvi users_guide.aux users_guide.ps users_guide.dvi
rm -fv html_uguide/*
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

File diff suppressed because it is too large Load Diff

279
ecasound-2.7.2/INSTALL Normal file
View File

@ -0,0 +1,279 @@
=======================================================================
*** Ecasound - INSTALL ***
=======================================================================
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It also creates the file `config.h' in the top-level source directory.
This file contains system-dependent definitions. Finally, it creates
a shell script `config.status' that you can run in the future to
recreate the current configuration, a file `config.cache' that saves
the results of its tests to speed up reconfiguring, and a file
`config.log' containing compiler output (useful mainly for debugging
`configure').
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If at some point `config.cache'
contains results you don't want to keep, you may remove or edit it.
The file `configure.in' is used to create `configure' by a program
called `autoconf'. You only need `configure.in' if you want to change
it or regenerate `configure' using a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Type `make install' to install the programs and any data files and
documentation.
4. If you have not specified an alternative install prefix with --prefix
option, make sure that you have `/usr/local/lib´ in your
`/etc/ld.so.conf' and then run `/sbin/ldconfig´ (as root).
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Ecasound specific options
=========================
`--enable-all-static'
Build static binaries that are not linked against any
shared libraries. Disabled by default. Note! This is
an experimental option and may not work in all
circumstances.
`--enable-debug'
Disables optimizations and other things preventing
efficient debugging. Created executables and libraries
have a "_debug" suffix. Disabled by default.
`--enable-experimental'
Turns on some suspicious features. Not recommended.
Disabled by default.
`--enable-python-force-site-packages'
Force install of python modules into site-packages
directory even when it doesn't exist. Disabled by
default.
`--enable-sys-readline'
If installed, link to system's default libreadline.
Disabled by default.
`--disable-alsa'
Don't compile support for ALSA-drivers (otherwise
links to libasound). By default ALSA support is
enabled if all the necessary header and library
files are found.
`--disable-arts'
Don't compile aRts client support. See http://www.arts-project.org
for more info about aRts. By default aRts support is
enabled if all the necessary header and library
files are found.
`--disable-audiofile'
Don't link to libaudiofile. By default libaudiofile support is
enabled if all the necessary header and library
files are found.
`--disable-dbc'
Don't check design-by-contract assertions. Enabled by default.
`--disable-effects'
Build ecasound without effect and controller components.
Enabled by default.
`--disable-jack'
Don't compile JACK client support. See
http://jackit.sf.net for more info about JACK.
By default JACK support is enabled if all the
necessary header and library files are found.
`--disable-libsamplerate'
Don't compile libsamplerate support. See
http://www.mega-nerd.com/SRC for more info about
libsamplerate. By default libsamplerate support is
enabled if all the necessary header and library files
are found.
`--disable-ncurses'
Don't link against ncurses (known bug: even if this is
specified, you're still required to have a working
ncurses/termcap installation to compile). Enabled
by default.
`--disable-oss'
Don't compile support for OSS-drivers. Enabled by
default.
`--disable-osstrigger'
Disable the use of OSS trigger functions. Enabled
by default.
`--disable-sndfile'
Don't link to libsndfile. By default libsndfile support is
enabled if all the necessary header and library
files are found.
`--disable-largefile'
Explicitly disable large file (>2GB) support.
`--with-jack=JACK_PREFIX'
Enable JACK support and compile against JACK installed
in 'JACK_PREFIX'.
`--with-libsamplerate=LIBSAMPLERATE_PREFIX'
Enable libsamplerate support and compile against libsamplerate
installed in 'LIBSAMPLERATE_PREFIX'.
`--enable-pyecasound={c,python,none}'
Enable pyecasound and select which implementation to use.
Default value based on target platform.
`--with-python-includes=DIR'
Python include files are located in 'DIR'.
`--with-python-modules=DIR'
Python modules should be installed to 'DIR'.
`--enable-rubyecasound={yes,no}'
Enable rubyecasound. Defaults to yes if Ruby interpreter
is found on the system.
`--with-extra-cppflags=ARG´
Pass extra options to preprocessor (cpp). This option should
be used to add non-standard header paths to the search path.
`--with-extra-libs=ARG´
Pass extra options to linked (ld). This option should
be used to add non-standard library paths to the search
path, as well as additional libraries to link against.
Supported automake/autoconf features
====================================
Ecasound uses the autotools (automake, automake and libtool)
build system framework. Standard practises (see below for
references) are followed where applicable.
Some features offered by the autotools do not work without
explicit support from the package. Following is a short list of
features that Ecasound _does_ support. If you encounter any
problems in using these features with Ecasound, please report
them as bugs.
1. Building Ecasound in a directory separate from the source
directory.
Example: "mkdir objdir ; cd objdir ; ../configure ; make"
2. 'uninstall' make target
You should be able to uninstall Ecasound by running "make uninstall".
Note that if you override any make variable when running "make install",
you should specify the same variables also when running "make uninstall".
Reference: Automake manual (see below)
3. 'DESTDIR' make variable for staging installs
Reference: http://sources.redhat.com/automake/automake.html#Install
4. 'prefix', 'datadir', pkgdatadir' make variables
You should be able to override any of the make variables
on the make command-line. But remember to always override
the same variables when you switch between make targets (see
notes on (2)).
Example: make prefix=/tmp/ecasound-foobar install
5. Overriding CPPFLAGS, CFLAGS, CXXFLAGS, etc variables.
It is possible to override these parameters both before
running the configure script (specify new values as
environment variables), or at make time (specify new
values on the make command-line). Note that these
mechanisms are exclusive to each other.
To specify extra preprocessing and compile flags that are
applied when building libecasound components, but not when
building the test programs run by 'configure' script, one can
use the environment variables ECA_S_EXTRA_CPPFLAGS and
ECA_S_EXTRA_CFLAGS (define before running 'configure').
General references:
o Automake manual
http://sources.redhat.com/automake/automake.html
o Autoconf manual
http://www.gnu.org/software/autoconf/manual/
o GNU Coding Standards
http://www.gnu.org/prep/standards/
Specifying the System Type
==========================
There may be some features `configure' can not figure out
automatically, but needs to determine by the type of host the package
will run on. Usually `configure' can figure that out, but if it prints
a message saying it can not guess the host type, give it the
`--host=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name with three fields:
CPU-COMPANY-SYSTEM
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the host type.
If you are building compiler tools for cross-compiling, you can also
use the `--target=TYPE' option to select the type of system they will
produce code for and the `--build=TYPE' option to select the type of
system on which you are compiling the package.
Operation Controls
==================
`configure' recognizes the following options to control how it
operates.
`--cache-file=FILE'
Use and save the results of the tests in FILE instead of
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
debugging `configure'.
`--help'
Print a summary of the options to `configure', and exit.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--version'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`configure' also accepts some other, not widely useful, options.

726
ecasound-2.7.2/Makefile Normal file
View File

@ -0,0 +1,726 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# ----------------------------------------------------------------------
# File: ecasound/Makefile.am
# Description: Ecasound multitrack audio processing tool
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = .
top_srcdir = .
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(srcdir)/ecasound.spec.in $(top_srcdir)/configure AUTHORS \
COPYING INSTALL NEWS TODO compile config.guess config.sub \
depcomp install-sh ltmain.sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = ecasound.spec
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
AUTOMAKE_OPTIONS = foreign
RELEASE = 1
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
ecasound.spec: $(top_builddir)/config.status $(srcdir)/ecasound.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkdir_p) $(distdir)/. $(distdir)/libecasound $(distdir)/libecasoundc
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-data-local
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-local
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-libtool clean-local \
clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-recursive distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-data-local install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-libtool \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am uninstall-local
docs:
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
install-data-local: ecasoundrc
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
uninstall-local:
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
$(DESTDIR)$(pkgdatadir)/ecasound.el \
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
$(DESTDIR)$(pkgdatadir)/ecasoundrc
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
ecasoundrc: ecasoundrc.in Makefile.am
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
-e "s%[@]prefix[@]%$(prefix)%" \
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
clean-local:
rm -fv ecasoundrc
dist-hook: docs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,43 @@
# ----------------------------------------------------------------------
# File: ecasound/Makefile.am
# Description: Ecasound multitrack audio processing tool
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
AUTOMAKE_OPTIONS = foreign
PACKAGE = @PACKAGE@
VERSION = @VERSION@
RELEASE = 1
docs:
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
install-data-local: ecasoundrc
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
uninstall-local:
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
$(DESTDIR)$(pkgdatadir)/ecasound.el \
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
$(DESTDIR)$(pkgdatadir)/ecasoundrc
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
ecasoundrc: ecasoundrc.in Makefile.am
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
-e "s%[@]prefix[@]%$(prefix)%" \
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
clean-local:
rm -fv ecasoundrc
dist-hook: docs

726
ecasound-2.7.2/Makefile.in Normal file
View File

@ -0,0 +1,726 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# ----------------------------------------------------------------------
# File: ecasound/Makefile.am
# Description: Ecasound multitrack audio processing tool
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(srcdir)/ecasound.spec.in $(top_srcdir)/configure AUTHORS \
COPYING INSTALL NEWS TODO compile config.guess config.sub \
depcomp install-sh ltmain.sh missing
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno configure.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = config.h
CONFIG_CLEAN_FILES = ecasound.spec
SOURCES =
DIST_SOURCES =
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
html-recursive info-recursive install-data-recursive \
install-exec-recursive install-info-recursive \
install-recursive installcheck-recursive installdirs-recursive \
pdf-recursive ps-recursive uninstall-info-recursive \
uninstall-recursive
ETAGS = etags
CTAGS = ctags
DIST_SUBDIRS = $(SUBDIRS)
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
distdir = $(PACKAGE)-$(VERSION)
top_distdir = $(distdir)
am__remove_distdir = \
{ test ! -d $(distdir) \
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
&& rm -fr $(distdir); }; }
DIST_ARCHIVES = $(distdir).tar.gz
GZIP_ENV = --best
distuninstallcheck_listfiles = find . -type f -print
distcleancheck_listfiles = find . -type f -print
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
EXTRA_DIST = AUTHORS BUGS COPYING.GPL COPYING.LGPL NEWS TODO ecasoundrc.in ecasound.spec effect_presets generic_oscillators
SUBDIRS = kvutils libecasound ecasound libecasoundc pyecasound rubyecasound ecatools Documentation examples
AUTOMAKE_OPTIONS = foreign
RELEASE = 1
all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive
.SUFFIXES:
am--refresh:
@:
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
echo ' cd $(srcdir) && $(AUTOMAKE) --foreign '; \
cd $(srcdir) && $(AUTOMAKE) --foreign \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
echo ' $(SHELL) ./config.status'; \
$(SHELL) ./config.status;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
$(SHELL) ./config.status --recheck
$(top_srcdir)/configure: $(am__configure_deps)
cd $(srcdir) && $(AUTOCONF)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
config.h: stamp-h1
@if test ! -f $@; then \
rm -f stamp-h1; \
$(MAKE) stamp-h1; \
else :; fi
stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
@rm -f stamp-h1
cd $(top_builddir) && $(SHELL) ./config.status config.h
$(srcdir)/config.h.in: $(am__configure_deps)
cd $(top_srcdir) && $(AUTOHEADER)
rm -f stamp-h1
touch $@
distclean-hdr:
-rm -f config.h stamp-h1
ecasound.spec: $(top_builddir)/config.status $(srcdir)/ecasound.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
# To change the values of `make' variables: instead of editing Makefiles,
# (1) if the variable is set in `config.status', edit `config.status'
# (which will cause the Makefiles to be regenerated when you run `make');
# (2) otherwise, pass the desired values on the `make' command line.
$(RECURSIVE_TARGETS):
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
target=`echo $@ | sed s/-recursive//`; \
list='$(SUBDIRS)'; for subdir in $$list; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
dot_seen=yes; \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done; \
if test "$$dot_seen" = "no"; then \
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
fi; test -z "$$fail"
mostlyclean-recursive clean-recursive distclean-recursive \
maintainer-clean-recursive:
@failcom='exit 1'; \
for f in x $$MAKEFLAGS; do \
case $$f in \
*=* | --[!k]*);; \
*k*) failcom='fail=yes';; \
esac; \
done; \
dot_seen=no; \
case "$@" in \
distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \
*) list='$(SUBDIRS)' ;; \
esac; \
rev=''; for subdir in $$list; do \
if test "$$subdir" = "."; then :; else \
rev="$$subdir $$rev"; \
fi; \
done; \
rev="$$rev ."; \
target=`echo $@ | sed s/-recursive//`; \
for subdir in $$rev; do \
echo "Making $$target in $$subdir"; \
if test "$$subdir" = "."; then \
local_target="$$target-am"; \
else \
local_target="$$target"; \
fi; \
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|| eval $$failcom; \
done && test -z "$$fail"
tags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
done
ctags-recursive:
list='$(SUBDIRS)'; for subdir in $$list; do \
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
done
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
include_option=--etags-include; \
empty_fix=.; \
else \
include_option=--include; \
empty_fix=; \
fi; \
list='$(SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test ! -f $$subdir/TAGS || \
tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \
fi; \
done; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
$(mkdir_p) $(distdir)/. $(distdir)/libecasound $(distdir)/libecasoundc
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
if test "$$subdir" = .; then :; else \
test -d "$(distdir)/$$subdir" \
|| $(mkdir_p) "$(distdir)/$$subdir" \
|| exit 1; \
distdir=`$(am__cd) $(distdir) && pwd`; \
top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
(cd $$subdir && \
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$$top_distdir" \
distdir="$$distdir/$$subdir" \
distdir) \
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|| chmod -R a+r $(distdir)
dist-gzip: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
dist-bzip2: distdir
tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
$(am__remove_distdir)
dist-tarZ: distdir
tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
$(am__remove_distdir)
dist-shar: distdir
shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
$(am__remove_distdir)
dist-zip: distdir
-rm -f $(distdir).zip
zip -rq $(distdir).zip $(distdir)
$(am__remove_distdir)
dist dist-all: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
$(am__remove_distdir)
# This target untars the dist file and tries a VPATH configuration. Then
# it guarantees that the distribution is self-contained by making another
# tarfile.
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
chmod -R a-w $(distdir); chmod a+w $(distdir)
mkdir $(distdir)/_build
mkdir $(distdir)/_inst
chmod a-w $(distdir)
dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
&& cd $(distdir)/_build \
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
$(DISTCHECK_CONFIGURE_FLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) \
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
&& $(MAKE) $(AM_MAKEFLAGS) check \
&& $(MAKE) $(AM_MAKEFLAGS) install \
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
distuninstallcheck \
&& chmod -R a-w "$$dc_install_base" \
&& ({ \
(cd ../.. && umask 077 && mkdir "$$dc_destdir") \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
} || { rm -rf "$$dc_destdir"; exit 1; }) \
&& rm -rf "$$dc_destdir" \
&& $(MAKE) $(AM_MAKEFLAGS) dist \
&& rm -rf $(DIST_ARCHIVES) \
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
$(am__remove_distdir)
@(echo "$(distdir) archives ready for distribution: "; \
list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
distuninstallcheck:
@cd $(distuninstallcheck_dir) \
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|| { echo "ERROR: files left after uninstall:" ; \
if test -n "$(DESTDIR)"; then \
echo " (check DESTDIR support)"; \
fi ; \
$(distuninstallcheck_listfiles) ; \
exit 1; } >&2
distcleancheck: distclean
@if test '$(srcdir)' = . ; then \
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
exit 1 ; \
fi
@test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|| { echo "ERROR: files left in build directory after distclean:" ; \
$(distcleancheck_listfiles) ; \
exit 1; } >&2
check-am: all-am
check: check-recursive
all-am: Makefile config.h
installdirs: installdirs-recursive
installdirs-am:
install: install-recursive
install-exec: install-exec-recursive
install-data: install-data-recursive
uninstall: uninstall-recursive
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-recursive
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-recursive
clean-am: clean-generic clean-libtool clean-local mostlyclean-am
distclean: distclean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -f Makefile
distclean-am: clean-am distclean-generic distclean-hdr \
distclean-libtool distclean-tags
dvi: dvi-recursive
dvi-am:
html: html-recursive
info: info-recursive
info-am:
install-data-am: install-data-local
install-exec-am:
install-info: install-info-recursive
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-recursive
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
-rm -rf $(top_srcdir)/autom4te.cache
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-recursive
mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-recursive
pdf-am:
ps: ps-recursive
ps-am:
uninstall-am: uninstall-info-am uninstall-local
uninstall-info: uninstall-info-recursive
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
check-am clean clean-generic clean-libtool clean-local \
clean-recursive ctags ctags-recursive dist dist-all dist-bzip2 \
dist-gzip dist-hook dist-shar dist-tarZ dist-zip distcheck \
distclean distclean-generic distclean-hdr distclean-libtool \
distclean-recursive distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-data install-data-am \
install-data-local install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs installdirs-am maintainer-clean \
maintainer-clean-generic maintainer-clean-recursive \
mostlyclean mostlyclean-generic mostlyclean-libtool \
mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \
uninstall uninstall-am uninstall-info-am uninstall-local
docs:
cd Documentation ; $(MAKE) $(AM_MAKEFLAGS) docs
install-data-local: ecasoundrc
$(INSTALL) -d $(DESTDIR)$(pkgdatadir)
$(INSTALL_DATA) $(top_builddir)/ecasoundrc $(DESTDIR)$(pkgdatadir)/ecasoundrc
$(INSTALL_DATA) $(top_srcdir)/effect_presets $(DESTDIR)$(pkgdatadir)/effect_presets
$(INSTALL_DATA) $(top_srcdir)/ecatools/ecasound.el $(DESTDIR)$(pkgdatadir)/ecasound.el
$(INSTALL_DATA) $(top_srcdir)/generic_oscillators $(DESTDIR)$(pkgdatadir)/generic_oscillators
uninstall-local:
rm -f $(DESTDIR)$(pkgdatadir)/effect_presets \
$(DESTDIR)$(pkgdatadir)/ecasound.el \
$(DESTDIR)$(pkgdatadir)/generic_oscillators \
$(DESTDIR)$(pkgdatadir)/ecasoundrc
rmdir $(DESTDIR)$(pkgdatadir) || echo "Skipping non-empty directory"
ecasoundrc: ecasoundrc.in Makefile.am
sed -e "s%[@]VERSION[@]%$(VERSION)%" \
-e "s%[@]prefix[@]%$(prefix)%" \
-e "s%[@]pkgdatadir[@]%$(pkgdatadir)%" \
< $(top_srcdir)/ecasoundrc.in > ecasoundrc
clean-local:
rm -fv ecasoundrc
dist-hook: docs
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

2861
ecasound-2.7.2/NEWS Normal file

File diff suppressed because it is too large Load Diff

323
ecasound-2.7.2/README Normal file
View File

@ -0,0 +1,323 @@
=======================================================================
*** Ecasound - README (author/maintainer: Kai Vehmanen) ***
=======================================================================
-----------------------------------------------------------------------
What is it?
-----------------------------------------------------------------------
Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback,
recording and format conversions, as well as for multitrack effect
processing, mixing, recording and signal recycling. Ecasound supports
a wide range of audio inputs, outputs and effect algorithms.
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators
and MIDI-CCs. A versatile console mode user-interface is included
in the package.
Primary platform for running Ecasound is Linux. Ecasound also
works on many UNIX-derived systems such as FreeBSD and Solaris.
Limited support for Windows is available through Cygwin.
-----------------------------------------------------------------------
How do you... (author: Kai Vehmanen)
-----------------------------------------------------------------------
... spell the name?
I haven't been very consistent with this, but at least in principle,
when capitalized, the name refers to the whole package. When in lower
case, it refers to the console mode application which happens to have
the same name.
"Ecasound" = the whole package
"ecasound" = the console mode client application (binary)
... pronounce the name?
Any way you want! :) Personally I say something to the effect of
"eck-uh-sound". Start from "megasound", and omit pronouncing the
'm' at the start, and replace 'g' with a sharper 'k' sound, like
in the word "car".
-----------------------------------------------------------------------
Story behind Ecasound (author: Kai Vehmanen)
-----------------------------------------------------------------------
I started developing Ecasound because I needed an application to
record, process and mix my own music. The first versions of Ecasound
ran under IBM OS/2. I used those versions for finalizing my analog
4-track recordings.
The analog 4-track - Tascam 414 - was a nice tool, but it
had its limits. So eventually I started looking for PC software
that supported multitrack recording. The first programs I used were
for Windows. I still used the OS/2 version of Ecasound for effects
processing and finalizing my mixes. Although I'm not fanatical
about operating systems, I did prefer (and still do) to use Linux
for my computing needs. I also hate rebooting between multiple
systems all the time, so it was time to do a port.
When I ported Ecasound to Linux, a lot of functionality was rewritten
from scratch. During this work I also added multitrack capabilities
to Ecasound. It took quite a lot of effort to put it all back
together, but in the end I reached the point where I could do
all the audio processing tasks on Linux. As an additional benefit
I now had source code for - and thus control over - all tools I used
for audio processing.
Nowadays I still use Ecasound for my music projects. This is also
the primary motivation for continuing the development work. There is
always something to improve.
-----------------------------------------------------------------------
Requirements
-----------------------------------------------------------------------
To run Ecasound, you need...:
- Operating system that provides standard POSIX/SUS interfaces. Ecasound
has been reported to run succefully on various combinations of GNU/Linux
(starting from Linux 2.2+ and glibc 2.1+), FreeBSD 4.x+, Solaris 2.6+,
Mac OS X 10.3+ and Win32/Cygwin 1.3.20+.
Optional when running Ecasound:
- for real-time audio input/output: ALSA, JACK or OSS runtime
- for mp3 support: mpg123 (input) and lame (output) packages
- for Ogg Vorbis support, the vorbis-tools package (ogg123 and oggenc)
- for .aac/.m4a/.mp4 file support, the FAAC/FAAD2 tools
- for .flac support, the FLAC package
- note: since ecasound 2.4.5, libsndfile is the preferred
way for reading and writing FLAC files
- for MIDI .mid file input: Timidity++
- for tracker module support: MikMod package
- for aRts (legacy KDE) support: the aRts server suntime
To compile Ecasound, you also need...:
- POSIX/SUS development environment, compatible with
'The Single UNIX Specification, Version 2' (UNIX98):
- http://www.unix.org/version2/
- http://www.opengroup.org/onlinepubs/007908799/index.html
Ecasound requires the following feature groups:
- "Realtime":
http://www.opengroup.org/onlinepubs/007908799/xsh/realtime.html
- "Realtime Threads":
http://www.opengroup.org/onlinepubs/007908799/xsh/feature.html#tag_000_005_003
- Standard C++ build environment (with support for STL and
exceptions); tested with egcs 1.1.2, gcc versions 2.91.66,
2.95.X, 3.0-3.4, 4.0-4.3, and Sun Workshop 6 C5.2 C++.
- GNU make
- http://www.gnu.org/software/make/
Optional when compiling Ecasound:
- for extented file format support (aiff, snd, w64 and so forth):
- libaudiofile (SGI audio file library) runtime, and/or
- libsndfile
- for higher quality resampling: libsamplerate
- for pyecasound, the Python devel package
- for curses support, the ncurses devel package
- for LADSPA support, the LADSPA SDK package
- for ALSA support, the ALSA devel package
- for JACK support, the JACK devel package
- for aRts support, the aRts C-API devel package
- for inner loop optimizations (performance improvements),
the liboil package
- for Open Sound Control (OSC) support, liblo package
Additional packages needed, when building Ecasound from a clean
version control checkout:
- automake
- http://www.gnu.org/software/automake/
- autoconf 2.50+
- http://www.gnu.org/software/autoconf/
- libtool
- http://www.gnu.org/software/libtool/
- pkg-config
- http://pkg-config.freedesktop.org/wiki/
-----------------------------------------------------------------------
Installing
-----------------------------------------------------------------------
You should first try installing Ecasound from a binary package (files
in rpm, dpkg, etc format -- depends on your system). On some systems
Ecasound is part of the distribution and can be installed easily with
tools such as apt-get, yum and others. This is probably the easiest and
most straightforward way to install Ecasound.
If you need to compile Ecasound, the file 'INSTALL' contains detailed
instructions on how to do this.
-----------------------------------------------------------------------
Documentation
-----------------------------------------------------------------------
Ecasound documentation is updated whenever new features are added
or existing features are modified. Some things are not documented
in great detail, but on the other hand, documentation is kept
up-to-date. So in short, correctness over volume. The primary
documentation sources are:
- Ecasound User's Guide
- Ecasound Programmer's Guide
- Ecasound Control Interface Guide
- manual pages
- ecasound(1)
- ecatools(1): ecaplay(1), ecaconvert(1), ...
- ecasound-iam(1)
- ecasoundrc(5)
- misc HTML-formatted docs (Documentation/*.html)
- command line help
- ecasound --help
Probably the best place to start is the examples section of
Ecasound's HTML-documentation (Documentation/examples.html).
-----------------------------------------------------------------------
Mailing lists
-----------------------------------------------------------------------
- ecasound-list at lists dot sourceforge dot net:
A general discussion forum for developers and users of Ecasound and
related tools. Announcements of new versions, bug warnings, etc will be
posted to this list. If you have problems compiling, installing or
using Ecasound, this is a good place to ask for help. Reports of
working software/hardware combinations are also welcome. You can
browse the message archives at http://eca.cx/ecasound-list/
You can join the lists using the following web front-end:
http://eca.cx/ecasound/mlists.php
- linux-audio-announce at lists.linuxaudio.org
Announcements of Ecasound releases will, in addition to
ecasound-list, be sent to the linux-audio-announce list. See the
list home page at http://www.linuxdj.com/audio/lad/subscribelaa.php
for more information.
You can also subscribe to Ecasound releases at http://freshmeat.net .
All Ecasound releases will be announced at Freshmeat.
-----------------------------------------------------------------------
Reporting bugs
-----------------------------------------------------------------------
See the 'BUGS' files.
-----------------------------------------------------------------------
Web sites
-----------------------------------------------------------------------
Ecasound home site
- http://eca.cx/ecasound
Download releases
- http://ecasound.seul.org/download/ (primary site)
- http://ecawave.sf.net/download/ (mirror)
- http://eca.cx/download/ (mirror)
Eca projects portal (links, apps based on Ecasound, etc)
- http://eca.cx
- http://ecasound.seul.org (US mirror)
- http://ecasound.sourceforge.net (another US mirror)
Examples of real-life Ecasound usage
- http://eca.cx/ecasound_users.html
-----------------------------------------------------------------------
About free open-source software (FOSS) development
-----------------------------------------------------------------------
You should keep in mind that FOSS [1] development process differs
greatly from closed commercial development. Active participation,
both from developers and users, is what pushes a FOSS project forward.
Every succesful FOSS project has an active userbase behind it. This
means that your comments, ideas and bug reports are extremely
important. If something does not work, or some feature is missing,
be active. Either try to fix the problem yourself, or report it
on the ecasound-list mailing list.
[1] Although Ecasound is free software (http://www.gnu.org), it also
fits the definition of open-source software (http://www.opensource.org/).
Although the two initiatives have different goals, they also share
a lot in common. The term FOSS is used to refer to both of them,
while still acknowledging the difference between the two.
-----------------------------------------------------------------------
How stable is stable?
-----------------------------------------------------------------------
Although publically released versions are called stable, this is not
a guarantee of any kind. Before releases, a small set of test cases is
run to verify that all basic features are working. The developers
also use the very latest versions themselves, so hopefully at least
all obvious bugs are found before stable releases are made. But
otherwise no guarantees are given.
On the other hand, as Ecasound is free software, you have the
possibility to review the code yourself, perform tests, and fix any
bugs you might find, or get someone to fix them for you. In the end
you have the control.
The more people there are participate in Ecasound development, testing
and related discussions, the better Ecasound will become!
-----------------------------------------------------------------------
Authors
-----------------------------------------------------------------------
See the file 'AUTHORS'.
-----------------------------------------------------------------------
Thanks to
-----------------------------------------------------------------------
DotCX (www.nic.cx)
For providing 'eca.cx' domain free of charge 2000-2004.
SEUL (www.seul.org)
For hosting Ecasound CVS, ftp, and http services since 1999.
SourceForge.net
For hosting Ecasound, Ecawave and Ecamegapedal ftp and
http mirror sites since 1999.
Wakkanet Oy (www.wakkanet.fi)
For various hosting services 1999-2004.
Linux-audio-dev community
Always a great source of inspiration! Special thanks
to Paul Davis, who has kept on pushing Linux audio
forward all these years.
Endersz, Viktor
For sending me the adv.compressor source code!
Phillips, Dave
The 'Linux Sound & MIDI' website was the reason
why I initially got interested in Linux audio!
And of course, to all the contributors (see the file 'AUTHORS')
and to users who have given feedback, ideas and helped with testing!
-----------------------------------------------------------------------
Licensing/distribution policy
-----------------------------------------------------------------------
Copyright (C) 1997-2010 Kai Vehmanen and others (see the file
'AUTHORS' for full list of copyright holders).
Ecasound is freely distributable according to the terms of the
GNU General Public License (see the file 'COPYING.GPL').
This program is distributed without any warranty. See the file
'COPYING.GPL' for details.
As an exception to the above, the C, C++ and python implementations
of the Ecasound Control Interface (ECI) are licensed under the LGPL
(see the file 'COPYING.LGPL'). This allows writing ECI applications
that are not licensed under GPL.
=======================================================================

23
ecasound-2.7.2/TODO Normal file
View File

@ -0,0 +1,23 @@
-----------------------------------------------------------------------
*** Ecasound - To do list / Plans ***
-----------------------------------------------------------------------
Ecasound bug tracker at sourceforge.net
-----------------------------------------------------------------------
The Ecasound bug tracker at sourceforge.net is also used to track
feature requests:
- https://sourceforge.net/tracker/?group_id=4605&atid=104605
This same tracker is used for both longstanding bugs, as well as
for keeping tracking of feature/improvement requests. It replaces
the old Ecasound Development Item practise (items marked with 'edi-x'
tags) that was used during years 2002-08.
Active development areas
-----------------------------------------------------------------------
Probably the best way to follow active development is to
subscribe to the ecasound-list mailing list (see the "Mailing
lists" section in README).

219
ecasound-2.7.2/acinclude.m4 Normal file
View File

@ -0,0 +1,219 @@
dnl ---
dnl acinclude.m4 for ecasound
dnl last modified: 20050816-13
dnl ---
## ------------------------------------------------------------------------
## Check for JACK support
##
## defines: ECA_AM_COMPILE_JACK, ECA_S_JACK_LIBS, ECA_S_JACK_INCLUDES,
## ECA_COMPILE_JACK, ECA_JACK_TRANSPORT_API
## ------------------------------------------------------------------------
AC_DEFUN([AC_CHECK_JACK],
[
AC_CHECK_HEADER(jack/jack.h,jack_support=yes,jack_support=no)
AC_ARG_WITH(jack,
[ --with-jack=DIR Compile against JACK installed in DIR],
[
ECA_S_JACK_LIBS="-L${withval}/lib"
ECA_S_JACK_INCLUDES="-I${withval}/include"
jack_support=yes
])
AC_ARG_ENABLE(jack,
[ --enable-jack Enable JACK support (default=yes, if found)],
[
case "$enableval" in
y | yes)
AC_MSG_RESULT(yes)
jack_support=yes
;;
n | no)
AC_MSG_RESULT(no)
jack_support=no
;;
*)
AC_MSG_ERROR([Invalid parameter value for --enable-jack: $enableval])
;;
esac
])
AM_CONDITIONAL(ECA_AM_COMPILE_JACK, test x$jack_support = xyes)
if test x$jack_support = xyes; then
AC_DEFINE([ECA_COMPILE_JACK], 1, [enable JACK support])
ECA_S_JACK_LIBS="${ECA_S_JACK_LIBS} -ljack"
case "$host" in
*darwin*)
AM_LDFLAGS="$AM_LDFLAGS -framework CoreAudio"
;;
esac
fi
AC_LANG_C
old_cppflags=$CPPFLAGS
old_ldflags=$LDFLAGS
old_INCLUDES=$INCLUDES
CPPFLAGS="$CPPFLAGS $ECA_S_JACK_INCLUDES"
LDFLAGS="$LDFLAGS $ECA_S_JACK_LIBS"
INCLUDES="--host=a.out-i386-linux"
AC_TRY_LINK(
[ #include <jack/transport.h> ],
[
jack_position_t t;
int *a = (void*)&jack_transport_query;
int *b = (void*)&jack_transport_start;
int *c = (void*)&jack_transport_stop;
int *d = (void*)&jack_transport_locate;
t.frame = 0;
t.valid = 0;
return 0;
],
[ ECA_JACK_TRANSPORT_API="3" ],
[ ECA_JACK_TRANSPORT_API="2" ]
)
AC_TRY_LINK(
[ #include <jack/transport.h> ],
[
jack_transport_info_t t;
t.state = 0;
return 0;
],
[ ECA_JACK_TRANSPORT_API="1" ],
[ true ]
)
CPPFLAGS="$old_cppflags"
LDFLAGS="$old_ldflags"
INCLUDES="$old_INCLUDES"
echo "Using JACK transport API version:" ${ECA_JACK_TRANSPORT_API}
AC_DEFINE_UNQUOTED([ECA_JACK_TRANSPORT_API], ${ECA_JACK_TRANSPORT_API}, [version of JACK transport API to use])
AC_SUBST(ECA_S_JACK_LIBS)
AC_SUBST(ECA_S_JACK_INCLUDES)
])
## ------------------------------------------------------------------------
## Check for LFS (now deprecated, v3 is only a stub that doesn't
## peform any checks)
##
## version: 3
##
## refs:
## - http://www.gnu.org/software/libtool/manual/libc/Feature-Test-Macros.html
## - http://www.suse.de/~aj/linux_lfs.html
## - http://en.wikipedia.org/wiki/Large_file_support
##
## modifies: AM_CXXFLAGS, AM_CFLAGS
## defines: enable_largefile
## ------------------------------------------------------------------------
##
AC_DEFUN([AC_CHECK_LARGEFILE],
[
echo "checking for largefile support (>2GB files)..."
dnl note: this is only for backwards compatibility
AC_ARG_WITH(largefile,
[ --with-largefile deprecated option, now used by default], [])
AC_SYS_LARGEFILE
if test x$ac_cv_sys_file_offset_bits = x64 ; then
dnl note: Just to be sure that the define is there even
dnl if config.h is not included in right order w.r.t.
dnl the system headers.
AM_CXXFLAGS="$AM_CXXFLAGS -D_FILE_OFFSET_BITS=64"
AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64"
enable_largefile=yes
fi
dnl old checks
dnl ----------
dnl [ if test "x$withval" = "xyes" ; then
dnl enable_largefile="yes"
dnl fi
dnl ]
dnl if test "x$enable_largefile" = "xyes"; then
dnl dnl AC_DEFINE(_FILE_OFFSET_BITS, 64)
dnl dnl AC_DEFINE(_LARGEFILE_SOURCE)
dnl AM_CXXFLAGS="$AM_CXXFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
dnl AM_CFLAGS="$AM_CFLAGS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE"
dnl AC_MSG_RESULT(yes.)
dnl else
dnl AC_MSG_RESULT(no.)
dnl fi
])
## ------------------------------------------------------------------------
## Check whether namespaces are supported.
##
## version: 3
##
## defines: ECA_USE_CXX_STD_NAMESPACE
## ------------------------------------------------------------------------
##
AC_DEFUN([AC_CHECK_CXX_NAMESPACE_SUPPORT],
[
AC_MSG_CHECKING(if C++ compiler supports namespaces)
AC_LANG_CPLUSPLUS
old_cxx_flags=$CXXFLAGS
CXXFLAGS="-fno-exceptions $CXXFLAGS" # hack around gcc3.x feature
AC_TRY_RUN(
[
#include <string>
#include <vector>
using std::string;
int main(void)
{
string s ("foo");
std::vector<string> v;
return(0);
}
],
[
AC_MSG_RESULT(yes.)
AC_DEFINE([ECA_USE_CXX_STD_NAMESPACE], 1, [use C++ std namespace])
],
[
AC_MSG_RESULT(no.)
AC_MSG_WARN([C++ compiler has problems with namespaces. Build process can fail because of this.])
]
,
[
AC_MSG_RESULT(no.)
]
)
CXXFLAGS=$old_cxx_flags
])
## ------------------------------------------------------------------------
## Find a file (or one of more files in a list of dirs)
##
## version: 1
## ------------------------------------------------------------------------
##
AC_DEFUN([AC_FIND_FILE],
[
$3=NO
for i in $2;
do
for j in $1;
do
if test -r "$i/$j"; then
$3=$i
break 2
fi
done
done
])

7673
ecasound-2.7.2/aclocal.m4 vendored Normal file

File diff suppressed because it is too large Load Diff

142
ecasound-2.7.2/compile Executable file
View File

@ -0,0 +1,142 @@
#! /bin/sh
# Wrapper for compilers which do not understand `-c -o'.
scriptversion=2005-05-14.22
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: compile [--help] [--version] PROGRAM [ARGS]
Wrapper for compilers which do not understand `-c -o'.
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
arguments, and rename the output as expected.
If you are trying to build a whole package this is not the
right script to run: please start by reading the file `INSTALL'.
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "compile $scriptversion"
exit $?
;;
esac
ofile=
cfile=
eat=
for arg
do
if test -n "$eat"; then
eat=
else
case $1 in
-o)
# configure might choose to run compile as `compile cc -o foo foo.c'.
# So we strip `-o arg' only if arg is an object.
eat=1
case $2 in
*.o | *.obj)
ofile=$2
;;
*)
set x "$@" -o "$2"
shift
;;
esac
;;
*.c)
cfile=$1
set x "$@" "$1"
shift
;;
*)
set x "$@" "$1"
shift
;;
esac
fi
shift
done
if test -z "$ofile" || test -z "$cfile"; then
# If no `-o' option was seen then we might have been invoked from a
# pattern rule where we don't need one. That is ok -- this is a
# normal compilation that the losing compiler can handle. If no
# `.c' file was seen then we are probably linking. That is also
# ok.
exec "$@"
fi
# Name of file we expect compiler to create.
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
# Create the lock directory.
# Note: use `[/.-]' here to ensure that we don't use the same name
# that we are using for the .o file. Also, base the name on the expected
# object file name, since that is what matters with a parallel build.
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
while true; do
if mkdir "$lockdir" >/dev/null 2>&1; then
break
fi
sleep 1
done
# FIXME: race condition here if user kills between mkdir and trap.
trap "rmdir '$lockdir'; exit 1" 1 2 15
# Run the compile.
"$@"
ret=$?
if test -f "$cofile"; then
mv "$cofile" "$ofile"
elif test -f "${cofile}bj"; then
mv "${cofile}bj" "$ofile"
fi
rmdir "$lockdir"
exit $ret
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

1500
ecasound-2.7.2/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

270
ecasound-2.7.2/config.h Normal file
View File

@ -0,0 +1,270 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.in by autoheader. */
/* disable all use of shared libs */
/* #undef ECA_ALL_STATIC */
/* enable ALSA support */
#define ECA_COMPILE_ALSA 1
/* enable aRts support */
/* #undef ECA_COMPILE_ARTS */
/* enable libaudiofile support */
#define ECA_COMPILE_AUDIOFILE 1
/* enable JACK support */
/* #undef ECA_COMPILE_JACK */
/* enable OSS audio input/output */
#define ECA_COMPILE_OSS 1
/* enable libsamplerate support */
#define ECA_COMPILE_SAMPLERATE 1
/* enable libsndfile support */
#define ECA_COMPILE_SNDFILE 1
/* debugging mode build */
/* #undef ECA_DEBUG_MODE */
/* disable all effects */
/* #undef ECA_DISABLE_EFFECTS */
/* disable use of OSS trigger API */
/* #undef ECA_DISABLE_OSS_TRIGGER */
/* enable experimental features */
/* #undef ECA_FEELING_EXPERIMENTAL */
/* version of JACK transport API to use */
#define ECA_JACK_TRANSPORT_API 2
/* enable ecasound curses console interface */
#define ECA_PLATFORM_CURSES 1
/* Ecasound configure script prefix */
#define ECA_PREFIX "/usr/local"
/* use ncurses.h for curses interface */
/* #undef ECA_USE_CURSES_H */
/* use C++ std namespace */
#define ECA_USE_CXX_STD_NAMESPACE 1
/* Use liblo for OSC support */
/* #undef ECA_USE_LIBLO */
/* Use liboil */
/* #undef ECA_USE_LIBOIL */
/* use curses.h for curses interface */
#define ECA_USE_NCURSES_H 1
/* ncurses headers are installed in ncurses subdir <ncurses/ncurses.h> */
/* #undef ECA_USE_NCURSES_NCURSES_H */
/* Define to 1 if you have the `clock_gettime' function. */
#define HAVE_CLOCK_GETTIME 1
/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1
/* Define to 1 if you have the <errno.h> header file. */
#define HAVE_ERRNO_H 1
/* Define to 1 if you have the <execinfo.h> header file. */
#define HAVE_EXECINFO_H 1
/* Define to 1 if you have the `execvp' function. */
#define HAVE_EXECVP 1
/* Define to 1 if you have the <fcntl.h> header file. */
#define HAVE_FCNTL_H 1
/* Define to 1 if you have the <features.h> header file. */
#define HAVE_FEATURES_H 1
/* Define to 1 if you have the `getpagesize' function. */
#define HAVE_GETPAGESIZE 1
/* Define to 1 if you have the `gettimeofday' function. */
#define HAVE_GETTIMEOFDAY 1
/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1
/* Define to 1 if you have the <ladspa.h> header file. */
/* #undef HAVE_LADSPA_H */
/* Define to 1 if you have the <locale.h> header file. */
#define HAVE_LOCALE_H 1
/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the `mlockall' function. */
#define HAVE_MLOCKALL 1
/* Define to 1 if you have a working `mmap' system call. */
#define HAVE_MMAP 1
/* Define to 1 if you have the `munlockall' function. */
#define HAVE_MUNLOCKALL 1
/* Define to 1 if you have the `nanosleep' function. */
#define HAVE_NANOSLEEP 1
/* Define to 1 if you have the `pause' function. */
#define HAVE_PAUSE 1
/* Define to 1 if you have the `posix_memalign' function. */
#define HAVE_POSIX_MEMALIGN 1
/* Define to 1 if you have the `pthread_getschedparam' function. */
#define HAVE_PTHREAD_GETSCHEDPARAM 1
/* Define to 1 if you have the `pthread_kill' function. */
#define HAVE_PTHREAD_KILL 1
/* Define to 1 if you have the `pthread_mutexattr_init' function. */
#define HAVE_PTHREAD_MUTEXATTR_INIT 1
/* Define to 1 if you have the `pthread_self' function. */
#define HAVE_PTHREAD_SELF 1
/* Define to 1 if you have the `pthread_setschedparam' function. */
#define HAVE_PTHREAD_SETSCHEDPARAM 1
/* Define to 1 if you have the `pthread_sigmask' function. */
#define HAVE_PTHREAD_SIGMASK 1
/* Define to 1 if you have the <regex.h> header file. */
#define HAVE_REGEX_H 1
/* Define to 1 if you have the `sched_getparam' function. */
#define HAVE_SCHED_GETPARAM 1
/* Define to 1 if you have the `sched_getscheduler' function. */
#define HAVE_SCHED_GETSCHEDULER 1
/* Define to 1 if you have the `sched_get_priority_max' function. */
#define HAVE_SCHED_GET_PRIORITY_MAX 1
/* Define to 1 if you have the <sched.h> header file. */
#define HAVE_SCHED_H 1
/* Define to 1 if you have the `sched_setscheduler' function. */
#define HAVE_SCHED_SETSCHEDULER 1
/* Define to 1 if you have the `setlocale' function. */
#define HAVE_SETLOCALE 1
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
/* Define to 1 if you have the `sigprocmask' function. */
#define HAVE_SIGPROCMASK 1
/* Define to 1 if you have the `sigwait' function. */
#define HAVE_SIGWAIT 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/mman.h> header file. */
#define HAVE_SYS_MMAN_H 1
/* Define to 1 if you have the <sys/poll.h> header file. */
#define HAVE_SYS_POLL_H 1
/* Define to 1 if you have the <sys/select.h> header file. */
#define HAVE_SYS_SELECT_H 1
/* Define to 1 if you have the <sys/socket.h> header file. */
#define HAVE_SYS_SOCKET_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <sys/wait.h> header file. */
#define HAVE_SYS_WAIT_H 1
/* Define to 1 if you have the <termios.h> header file. */
#define HAVE_TERMIOS_H 1
/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1
/* Define to 1 if you have the `usleep' function. */
#define HAVE_USLEEP 1
/* libecasoundc interface version */
#define LIBECASOUNDC_VERSION 2
/* libecasound interface version */
#define LIBECASOUND_VERSION 22
/* libecasound interface age */
#define LIBECASOUND_VERSION_AGE 0
/* libkvutils interface version */
#define LIBKVUTILS_VERSION 9
/* libkvutils interface age */
#define LIBKVUTILS_VERSION_AGE 5
/* Name of package */
#define PACKAGE "ecasound"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""
/* Define to the full name of this package. */
#define PACKAGE_NAME "ecasound"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "ecasound 2.7.2"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "ecasound"
/* Define to the version of this package. */
#define PACKAGE_VERSION "2.7.2"
/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#define TIME_WITH_SYS_TIME 1
/* Version number of package */
#define VERSION "2.7.2"
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
/* #undef WORDS_BIGENDIAN */
/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */
/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

269
ecasound-2.7.2/config.h.in Normal file
View File

@ -0,0 +1,269 @@
/* config.h.in. Generated from configure.in by autoheader. */
/* disable all use of shared libs */
#undef ECA_ALL_STATIC
/* enable ALSA support */
#undef ECA_COMPILE_ALSA
/* enable aRts support */
#undef ECA_COMPILE_ARTS
/* enable libaudiofile support */
#undef ECA_COMPILE_AUDIOFILE
/* enable JACK support */
#undef ECA_COMPILE_JACK
/* enable OSS audio input/output */
#undef ECA_COMPILE_OSS
/* enable libsamplerate support */
#undef ECA_COMPILE_SAMPLERATE
/* enable libsndfile support */
#undef ECA_COMPILE_SNDFILE
/* debugging mode build */
#undef ECA_DEBUG_MODE
/* disable all effects */
#undef ECA_DISABLE_EFFECTS
/* disable use of OSS trigger API */
#undef ECA_DISABLE_OSS_TRIGGER
/* enable experimental features */
#undef ECA_FEELING_EXPERIMENTAL
/* version of JACK transport API to use */
#undef ECA_JACK_TRANSPORT_API
/* enable ecasound curses console interface */
#undef ECA_PLATFORM_CURSES
/* Ecasound configure script prefix */
#undef ECA_PREFIX
/* use ncurses.h for curses interface */
#undef ECA_USE_CURSES_H
/* use C++ std namespace */
#undef ECA_USE_CXX_STD_NAMESPACE
/* Use liblo for OSC support */
#undef ECA_USE_LIBLO
/* Use liboil */
#undef ECA_USE_LIBOIL
/* use curses.h for curses interface */
#undef ECA_USE_NCURSES_H
/* ncurses headers are installed in ncurses subdir <ncurses/ncurses.h> */
#undef ECA_USE_NCURSES_NCURSES_H
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
/* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H
/* Define to 1 if you have the <errno.h> header file. */
#undef HAVE_ERRNO_H
/* Define to 1 if you have the <execinfo.h> header file. */
#undef HAVE_EXECINFO_H
/* Define to 1 if you have the `execvp' function. */
#undef HAVE_EXECVP
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
/* Define to 1 if you have the <features.h> header file. */
#undef HAVE_FEATURES_H
/* Define to 1 if you have the `getpagesize' function. */
#undef HAVE_GETPAGESIZE
/* Define to 1 if you have the `gettimeofday' function. */
#undef HAVE_GETTIMEOFDAY
/* Define to 1 if you have the <inttypes.h> header file. */
#undef HAVE_INTTYPES_H
/* Define to 1 if you have the <ladspa.h> header file. */
#undef HAVE_LADSPA_H
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the `mlockall' function. */
#undef HAVE_MLOCKALL
/* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP
/* Define to 1 if you have the `munlockall' function. */
#undef HAVE_MUNLOCKALL
/* Define to 1 if you have the `nanosleep' function. */
#undef HAVE_NANOSLEEP
/* Define to 1 if you have the `pause' function. */
#undef HAVE_PAUSE
/* Define to 1 if you have the `posix_memalign' function. */
#undef HAVE_POSIX_MEMALIGN
/* Define to 1 if you have the `pthread_getschedparam' function. */
#undef HAVE_PTHREAD_GETSCHEDPARAM
/* Define to 1 if you have the `pthread_kill' function. */
#undef HAVE_PTHREAD_KILL
/* Define to 1 if you have the `pthread_mutexattr_init' function. */
#undef HAVE_PTHREAD_MUTEXATTR_INIT
/* Define to 1 if you have the `pthread_self' function. */
#undef HAVE_PTHREAD_SELF
/* Define to 1 if you have the `pthread_setschedparam' function. */
#undef HAVE_PTHREAD_SETSCHEDPARAM
/* Define to 1 if you have the `pthread_sigmask' function. */
#undef HAVE_PTHREAD_SIGMASK
/* Define to 1 if you have the <regex.h> header file. */
#undef HAVE_REGEX_H
/* Define to 1 if you have the `sched_getparam' function. */
#undef HAVE_SCHED_GETPARAM
/* Define to 1 if you have the `sched_getscheduler' function. */
#undef HAVE_SCHED_GETSCHEDULER
/* Define to 1 if you have the `sched_get_priority_max' function. */
#undef HAVE_SCHED_GET_PRIORITY_MAX
/* Define to 1 if you have the <sched.h> header file. */
#undef HAVE_SCHED_H
/* Define to 1 if you have the `sched_setscheduler' function. */
#undef HAVE_SCHED_SETSCHEDULER
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
/* Define to 1 if you have the <signal.h> header file. */
#undef HAVE_SIGNAL_H
/* Define to 1 if you have the `sigprocmask' function. */
#undef HAVE_SIGPROCMASK
/* Define to 1 if you have the `sigwait' function. */
#undef HAVE_SIGWAIT
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H
/* Define to 1 if you have the <sys/poll.h> header file. */
#undef HAVE_SYS_POLL_H
/* Define to 1 if you have the <sys/select.h> header file. */
#undef HAVE_SYS_SELECT_H
/* Define to 1 if you have the <sys/socket.h> header file. */
#undef HAVE_SYS_SOCKET_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <sys/wait.h> header file. */
#undef HAVE_SYS_WAIT_H
/* Define to 1 if you have the <termios.h> header file. */
#undef HAVE_TERMIOS_H
/* Define to 1 if you have the <unistd.h> header file. */
#undef HAVE_UNISTD_H
/* Define to 1 if you have the `usleep' function. */
#undef HAVE_USLEEP
/* libecasoundc interface version */
#undef LIBECASOUNDC_VERSION
/* libecasound interface version */
#undef LIBECASOUND_VERSION
/* libecasound interface age */
#undef LIBECASOUND_VERSION_AGE
/* libkvutils interface version */
#undef LIBKVUTILS_VERSION
/* libkvutils interface age */
#undef LIBKVUTILS_VERSION_AGE
/* Name of package */
#undef PACKAGE
/* Define to the address where bug reports for this package should be sent. */
#undef PACKAGE_BUGREPORT
/* Define to the full name of this package. */
#undef PACKAGE_NAME
/* Define to the full name and version of this package. */
#undef PACKAGE_STRING
/* Define to the one symbol short name of this package. */
#undef PACKAGE_TARNAME
/* Define to the version of this package. */
#undef PACKAGE_VERSION
/* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
#undef TIME_WITH_SYS_TIME
/* Version number of package */
#undef VERSION
/* Define to 1 if your processor stores words with the most significant byte
first (like Motorola and SPARC, unlike Intel and VAX). */
#undef WORDS_BIGENDIAN
/* Number of bits in a file offset, on hosts where this is settable. */
#undef _FILE_OFFSET_BITS
/* Define for large files, on AIX-style hosts. */
#undef _LARGE_FILES
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

2440
ecasound-2.7.2/config.log Normal file

File diff suppressed because it is too large Load Diff

1216
ecasound-2.7.2/config.status Executable file

File diff suppressed because it is too large Load Diff

1608
ecasound-2.7.2/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

30153
ecasound-2.7.2/configure vendored Executable file

File diff suppressed because it is too large Load Diff

1486
ecasound-2.7.2/configure.in Normal file

File diff suppressed because it is too large Load Diff

530
ecasound-2.7.2/depcomp Executable file
View File

@ -0,0 +1,530 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2005-07-09.11
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
"$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mecanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@ -0,0 +1,297 @@
# ---
# definitions
%define python_sitepkgsdir %(echo `python -c "import sys; print (sys.prefix + '/lib/python' + sys.version[:3] + '/site-packages/')"`)
%define python_compile_opt python -O -c "import compileall; compileall.compile_dir('.')"
%define python_compile python -c "import compileall; compileall.compile_dir('.')"
%define ver 2.7.2
%define pkgver 2.7.2
%define pkgrel 1
# ---
# global settings
Packager: Kai Vehmanen <kvehmanen -at- eca -dot- cx>
Distribution: www.eca.cx audio software
# allow relocation
Prefix: %{_prefix}
# ---
# main package
Name: ecasound
Version: %{pkgver}
Release: %{pkgrel}
Serial: 1
Copyright: GPL
Source: http://ecasound.seul.org/download/ecasound-%{ver}.tar.gz
URL: http://www.eca.cx/ecasound
BuildRoot: /var/tmp/%{name}-%{version}-root-%(id -u -n)
Summary: ecasound - multitrack audio processing tool
Group: Applications/Sound
%description
Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback,
recording and format conversions, as well as for multitrack effect
processing, mixing, recording and signal recycling. Ecasound supports
a wide range of audio inputs, outputs and effect algorithms.
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators
and MIDI-CCs. A versatile console mode user-interface is included
in the package.
# ---
# library package - ecasound-devel
%package devel
Summary: Ecasound - development files
Group: Applications/Sound
%description devel
The ecasound-devel package contains the header files and static libraries
necessary for building apps like ecawave and ecamegapedal that
directly link against ecasound libraries.
# ---
# library package - libecasoundc
%package -n libecasoundc
Summary: Ecasound - libecasoundc
Group: Applications/Sound
requires: ecasound
%description -n libecasoundc
Ecasound - libecasoundc package. Provides
C implementation of the Ecasound Control Interface
(ECI). Both static library files and and header
files are included in the package.
# ---
# pyecasound
%package -n pyecasound
Summary: Python bindings to ecasound control interface.
Group: Applications/Sound
Requires: ecasound
%description -n pyecasound
Python bindings to Ecasound Control Interface (ECI).
# ---
# build phase
%prep
%setup -n ecasound-2.7.2
%build
./configure --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_mandir} --with-pic $extra_params
make
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make DESTDIR="$RPM_BUILD_ROOT" install-strip
( cd pyecasound
%python_compile_opt
%python_compile
install *.pyc *.pyo $RPM_BUILD_ROOT%{python_sitepkgsdir}
)
# note! this is needed for automake 1.4 and older
strip --strip-unneeded \
${RPM_BUILD_ROOT}%{_bindir}/ecasound \
${RPM_BUILD_ROOT}%{_bindir}/ecaconvert \
${RPM_BUILD_ROOT}%{_bindir}/ecafixdc \
${RPM_BUILD_ROOT}%{_bindir}/ecanormalize \
${RPM_BUILD_ROOT}%{_bindir}/ecaplay \
${RPM_BUILD_ROOT}%{_bindir}/ecasignalview \
${RPM_BUILD_ROOT}%{_libdir}/libecasound.a \
${RPM_BUILD_ROOT}%{_libdir}/libecasoundc.a \
${RPM_BUILD_ROOT}%{_libdir}/libkvutils.a
# ---
# cleanup after build
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
# ---
# files sections (main)
%files
%defattr(-, root, root)
%doc NEWS COPYING COPYING.GPL COPYING.LGPL README INSTALL AUTHORS BUGS TODO examples
%doc Documentation/*.html
%doc Documentation/*.txt
%{_mandir}/man1/eca*
%{_mandir}/man5/eca*
%{_bindir}/ecasound
%{_bindir}/ecaconvert
%{_bindir}/ecafixdc
%{_bindir}/ecalength
%{_bindir}/ecamonitor
%{_bindir}/ecanormalize
%{_bindir}/ecaplay
%{_bindir}/ecasignalview
%dir %{_datadir}/ecasound
%{_datadir}/ecasound/ecasound.el
%config %{_datadir}/ecasound/ecasoundrc
%config %{_datadir}/ecasound/generic_oscillators
%config %{_datadir}/ecasound/effect_presets
# ---
# files sections (devel)
%files devel
%defattr(-, root, root)
%{_bindir}/libecasound-config
%{_includedir}/kvutils
%{_includedir}/libecasound
%{_libdir}/libecasound.la
%{_libdir}/libecasound.a
%{_libdir}/libkvutils.la
%{_libdir}/libkvutils.a
# ---
# files sections (libecasoundc)
%files -n libecasoundc
%defattr(-, root, root)
%{_bindir}/libecasoundc-config
%{_includedir}/libecasoundc
%{_libdir}/libecasoundc.la
%{_libdir}/libecasoundc.a
# ---
# files sections (pyecasound)
%files -n pyecasound
%defattr(644,root,root,755)
%attr(755,root,root) %{python_sitepkgsdir}/*.so
%{python_sitepkgsdir}/*.pyo
%{python_sitepkgsdir}/*.pyc
%{python_sitepkgsdir}/*.py
# ---
# changelog
%changelog
* Sun Jan 22 2006 Markus Grabner <grabner -at- icg -dot- tu-graz -dot- ac -dot- at>
- Updated to work on x86_64 platforms.
- The "--libdir=%{_libdir}" switch is required on x86_64 to select "lib64"
for installation instead of "lib".
- "--with-pic" added to avoid compile errors on x86_64.
- "%{_bindir}/ecalength" added
- "%dir" keyword added to remove errors about files listed twice.
* Mon Apr 25 2005 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- fixed problems using ecasound.spec with recent versions of rpm
by removing macro-statements from the changelog entries
* Wed Nov 03 2004 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- spam-protected all email-addresses
* Wed Aug 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added 'AUTHORS' file
* Mon Jan 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added Serial tag to differentiate between 2.2 pre and
final releases
* Sat Nov 02 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ported Fernando Lopez-Lezcano's changes to unify this
spec file with PlanetCCRMA's ecasound package; see
http://ccrma-www.stanford.edu/planetccrma/software/soundapps.html
- ecasound.el added to package (installed as a data
file to avoid dependency to emacs/elisp)
- removed unnecessary raw documentation source files
- man files are no longer installed as doc files
- use redhat style mandir location
* Thu Oct 31 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- minor layout changes
- added TODO to the package
- changed to use rpmrc dir variables
* Thu Oct 24 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added the COPYING files to the package
* Thu Oct 17 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added the -devel package
- fixed the build procedure to handle static builds
* Wed Oct 16 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- removed all shared libraries and subpackages containing
them
- ecamonitor binary added to main package
* Sat Oct 05 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- changed libecasoundc versioning back to normal libtool style
* Thu Apr 25 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- libraries put to separate subpackages, interface
version numbers code to library names
- ecasound-config renamed to libecasound-config
- ecasoundc-config renamed to libecasoundc-config
- plugin install dir changed from prefix/lib/ecasound-plugins
to prefix/lib/libecasoundX-plugins
- 'contrib' directory removed
- ecasound-plugins subpackage renamed to libecasoundX-plugins
* Mon Oct 01 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- dropped the hardcoded python module path from configure
argument list
* Wed Jan 17 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- python subpackage config (thanks to wrobell / PLD Linux!)
* Sat Dec 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- contrib and examples directories added to docs
- ecasoundc-config added
- libecasoundc added (C implementation of ECI)
- a new package: pyecasound
* Sat Nov 25 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ecasignalview added to the package.
* Thu Aug 31 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added /etc/ld.so.conf modification script.
- Added DESTDIR to install-section.
* Wed Aug 30 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- 'ecasound-config' script added.
* Sun Aug 20 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- All Qt-related stuff removed.
* Wed Jul 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added the -plugins package.
* Wed Jun 07 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ecaconvert added to the package.
* Mon Jun 05 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Renamed ecatools programs.
* Mon Apr 15 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Removed dynamic linking to ALSA libraries. You
can get ALSA support by recompiling the source-RPM
package.
* Mon Feb 10 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added libqtecasound to ecasound-qt.
* Mon Nov 09 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- A complete reorganization. Ecasound distribution is now
divided to three RPMs: ecasound, ecasound-qt and ecasound-devel.
* Mon Nov 08 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- As Redhat stopped the RHCN project, so these rpms
are again distributed via Redhat's contrib service
- You can also get these from http://ecasound.seul.org/download
* Sun Aug 15 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Initial rhcn release.

View File

@ -0,0 +1,297 @@
# ---
# definitions
%define python_sitepkgsdir %(echo `python -c "import sys; print (sys.prefix + '/lib/python' + sys.version[:3] + '/site-packages/')"`)
%define python_compile_opt python -O -c "import compileall; compileall.compile_dir('.')"
%define python_compile python -c "import compileall; compileall.compile_dir('.')"
%define ver @VERSION@
%define pkgver @VERSION@
%define pkgrel 1
# ---
# global settings
Packager: Kai Vehmanen <kvehmanen -at- eca -dot- cx>
Distribution: www.eca.cx audio software
# allow relocation
Prefix: %{_prefix}
# ---
# main package
Name: ecasound
Version: %{pkgver}
Release: %{pkgrel}
Serial: 1
Copyright: GPL
Source: http://ecasound.seul.org/download/ecasound-%{ver}.tar.gz
URL: http://www.eca.cx/ecasound
BuildRoot: /var/tmp/%{name}-%{version}-root-%(id -u -n)
Summary: ecasound - multitrack audio processing tool
Group: Applications/Sound
%description
Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback,
recording and format conversions, as well as for multitrack effect
processing, mixing, recording and signal recycling. Ecasound supports
a wide range of audio inputs, outputs and effect algorithms.
Effects and audio objects can be combined in various ways, and their
parameters can be controlled by operator objects like oscillators
and MIDI-CCs. A versatile console mode user-interface is included
in the package.
# ---
# library package - ecasound-devel
%package devel
Summary: Ecasound - development files
Group: Applications/Sound
%description devel
The ecasound-devel package contains the header files and static libraries
necessary for building apps like ecawave and ecamegapedal that
directly link against ecasound libraries.
# ---
# library package - libecasoundc
%package -n libecasoundc
Summary: Ecasound - libecasoundc
Group: Applications/Sound
requires: ecasound
%description -n libecasoundc
Ecasound - libecasoundc package. Provides
C implementation of the Ecasound Control Interface
(ECI). Both static library files and and header
files are included in the package.
# ---
# pyecasound
%package -n pyecasound
Summary: Python bindings to ecasound control interface.
Group: Applications/Sound
Requires: ecasound
%description -n pyecasound
Python bindings to Ecasound Control Interface (ECI).
# ---
# build phase
%prep
%setup -n ecasound-@VERSION@
%build
./configure --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_mandir} --with-pic $extra_params
make
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
make DESTDIR="$RPM_BUILD_ROOT" install-strip
( cd pyecasound
%python_compile_opt
%python_compile
install *.pyc *.pyo $RPM_BUILD_ROOT%{python_sitepkgsdir}
)
# note! this is needed for automake 1.4 and older
strip --strip-unneeded \
${RPM_BUILD_ROOT}%{_bindir}/ecasound \
${RPM_BUILD_ROOT}%{_bindir}/ecaconvert \
${RPM_BUILD_ROOT}%{_bindir}/ecafixdc \
${RPM_BUILD_ROOT}%{_bindir}/ecanormalize \
${RPM_BUILD_ROOT}%{_bindir}/ecaplay \
${RPM_BUILD_ROOT}%{_bindir}/ecasignalview \
${RPM_BUILD_ROOT}%{_libdir}/libecasound.a \
${RPM_BUILD_ROOT}%{_libdir}/libecasoundc.a \
${RPM_BUILD_ROOT}%{_libdir}/libkvutils.a
# ---
# cleanup after build
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
# ---
# files sections (main)
%files
%defattr(-, root, root)
%doc NEWS COPYING COPYING.GPL COPYING.LGPL README INSTALL AUTHORS BUGS TODO examples
%doc Documentation/*.html
%doc Documentation/*.txt
%{_mandir}/man1/eca*
%{_mandir}/man5/eca*
%{_bindir}/ecasound
%{_bindir}/ecaconvert
%{_bindir}/ecafixdc
%{_bindir}/ecalength
%{_bindir}/ecamonitor
%{_bindir}/ecanormalize
%{_bindir}/ecaplay
%{_bindir}/ecasignalview
%dir %{_datadir}/ecasound
%{_datadir}/ecasound/ecasound.el
%config %{_datadir}/ecasound/ecasoundrc
%config %{_datadir}/ecasound/generic_oscillators
%config %{_datadir}/ecasound/effect_presets
# ---
# files sections (devel)
%files devel
%defattr(-, root, root)
%{_bindir}/libecasound-config
%{_includedir}/kvutils
%{_includedir}/libecasound
%{_libdir}/libecasound.la
%{_libdir}/libecasound.a
%{_libdir}/libkvutils.la
%{_libdir}/libkvutils.a
# ---
# files sections (libecasoundc)
%files -n libecasoundc
%defattr(-, root, root)
%{_bindir}/libecasoundc-config
%{_includedir}/libecasoundc
%{_libdir}/libecasoundc.la
%{_libdir}/libecasoundc.a
# ---
# files sections (pyecasound)
%files -n pyecasound
%defattr(644,root,root,755)
%attr(755,root,root) %{python_sitepkgsdir}/*.so
%{python_sitepkgsdir}/*.pyo
%{python_sitepkgsdir}/*.pyc
%{python_sitepkgsdir}/*.py
# ---
# changelog
%changelog
* Sun Jan 22 2006 Markus Grabner <grabner -at- icg -dot- tu-graz -dot- ac -dot- at>
- Updated to work on x86_64 platforms.
- The "--libdir=%{_libdir}" switch is required on x86_64 to select "lib64"
for installation instead of "lib".
- "--with-pic" added to avoid compile errors on x86_64.
- "%{_bindir}/ecalength" added
- "%dir" keyword added to remove errors about files listed twice.
* Mon Apr 25 2005 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- fixed problems using ecasound.spec with recent versions of rpm
by removing macro-statements from the changelog entries
* Wed Nov 03 2004 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- spam-protected all email-addresses
* Wed Aug 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added 'AUTHORS' file
* Mon Jan 20 2003 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added Serial tag to differentiate between 2.2 pre and
final releases
* Sat Nov 02 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ported Fernando Lopez-Lezcano's changes to unify this
spec file with PlanetCCRMA's ecasound package; see
http://ccrma-www.stanford.edu/planetccrma/software/soundapps.html
- ecasound.el added to package (installed as a data
file to avoid dependency to emacs/elisp)
- removed unnecessary raw documentation source files
- man files are no longer installed as doc files
- use redhat style mandir location
* Thu Oct 31 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- minor layout changes
- added TODO to the package
- changed to use rpmrc dir variables
* Thu Oct 24 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added the COPYING files to the package
* Thu Oct 17 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- added the -devel package
- fixed the build procedure to handle static builds
* Wed Oct 16 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- removed all shared libraries and subpackages containing
them
- ecamonitor binary added to main package
* Sat Oct 05 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- changed libecasoundc versioning back to normal libtool style
* Thu Apr 25 2002 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- libraries put to separate subpackages, interface
version numbers code to library names
- ecasound-config renamed to libecasound-config
- ecasoundc-config renamed to libecasoundc-config
- plugin install dir changed from prefix/lib/ecasound-plugins
to prefix/lib/libecasoundX-plugins
- 'contrib' directory removed
- ecasound-plugins subpackage renamed to libecasoundX-plugins
* Mon Oct 01 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- dropped the hardcoded python module path from configure
argument list
* Wed Jan 17 2001 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- python subpackage config (thanks to wrobell / PLD Linux!)
* Sat Dec 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- contrib and examples directories added to docs
- ecasoundc-config added
- libecasoundc added (C implementation of ECI)
- a new package: pyecasound
* Sat Nov 25 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ecasignalview added to the package.
* Thu Aug 31 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added /etc/ld.so.conf modification script.
- Added DESTDIR to install-section.
* Wed Aug 30 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- 'ecasound-config' script added.
* Sun Aug 20 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- All Qt-related stuff removed.
* Wed Jul 06 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added the -plugins package.
* Wed Jun 07 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- ecaconvert added to the package.
* Mon Jun 05 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Renamed ecatools programs.
* Mon Apr 15 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Removed dynamic linking to ALSA libraries. You
can get ALSA support by recompiling the source-RPM
package.
* Mon Feb 10 2000 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Added libqtecasound to ecasound-qt.
* Mon Nov 09 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- A complete reorganization. Ecasound distribution is now
divided to three RPMs: ecasound, ecasound-qt and ecasound-devel.
* Mon Nov 08 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- As Redhat stopped the RHCN project, so these rpms
are again distributed via Redhat's contrib service
- You can also get these from http://ecasound.seul.org/download
* Sun Aug 15 1999 Kai Vehmanen <kvehmanen -at- eca -dot- cx>
- Initial rhcn release.

View File

@ -0,0 +1,586 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# ecasound/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
srcdir = .
top_srcdir = ..
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
bin_PROGRAMS = ecasound$(EXEEXT)
#bin_PROGRAMS = ecasound_debug$(EXEEXT)
subdir = ecasound
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_ecasound_OBJECTS = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
ecasound_OBJECTS = $(am_ecasound_OBJECTS)
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
ecasound_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(top_builddir)/libecasound/libecasound.la \
$(top_builddir)/kvutils/libkvutils.la
am__objects_1 = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
am_ecasound_debug_OBJECTS = $(am__objects_1)
ecasound_debug_OBJECTS = $(am_ecasound_debug_OBJECTS)
ecasound_debug_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) \
$(top_builddir)/libecasound/libecasound_debug.la \
$(top_builddir)/kvutils/libkvutils_debug.la
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
DIST_SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
termcap_library_ncurses = -lncurses
#termcap_library_termcap = -ltermcap
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
ecasound_SOURCES = ecasound.cpp \
ecasound.h \
eca-console.h \
eca-curses.h \
eca-curses.cpp \
eca-comhelp.cpp \
eca-comhelp.h \
eca-neteci-server.cpp \
eca-neteci-server.h \
eca-plaintext.h \
eca-plaintext.cpp \
textdebug.cpp \
textdebug.h
ecasound_debug_SOURCES = $(ecasound_SOURCES)
ecasound_LDFLAGS = -export-dynamic
ecasound_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound.la \
$(top_builddir)/kvutils/libkvutils.la
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
ecasound_debug_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound_debug.la \
$(top_builddir)/kvutils/libkvutils_debug.la
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecasound/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign ecasound/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
ecasound$(EXEEXT): $(ecasound_OBJECTS) $(ecasound_DEPENDENCIES)
@rm -f ecasound$(EXEEXT)
$(CXXLINK) $(ecasound_LDFLAGS) $(ecasound_OBJECTS) $(ecasound_LDADD) $(LIBS)
ecasound_debug$(EXEEXT): $(ecasound_debug_OBJECTS) $(ecasound_debug_DEPENDENCIES)
@rm -f ecasound_debug$(EXEEXT)
$(CXXLINK) $(ecasound_debug_LDFLAGS) $(ecasound_debug_OBJECTS) $(ecasound_debug_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/eca-comhelp.Po
include ./$(DEPDIR)/eca-curses.Po
include ./$(DEPDIR)/eca-neteci-server.Po
include ./$(DEPDIR)/eca-plaintext.Po
include ./$(DEPDIR)/ecasound.Po
include ./$(DEPDIR)/textdebug.Po
.cpp.o:
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=yes \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am: install-binPROGRAMS
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-info-am
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,52 @@
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
if ECA_AM_USE_NCURSES
termcap_library_ncurses = -lncurses
endif
if ECA_AM_USE_TERMCAP
termcap_library_termcap = -ltermcap
endif
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
if ECA_AM_DEBUG_MODE
bin_PROGRAMS = ecasound_debug
else
bin_PROGRAMS = ecasound
endif
ecasound_SOURCES = ecasound.cpp \
ecasound.h \
eca-console.h \
eca-curses.h \
eca-curses.cpp \
eca-comhelp.cpp \
eca-comhelp.h \
eca-neteci-server.cpp \
eca-neteci-server.h \
eca-plaintext.h \
eca-plaintext.cpp \
textdebug.cpp \
textdebug.h
ecasound_debug_SOURCES = $(ecasound_SOURCES)
ecasound_LDFLAGS = -export-dynamic
ecasound_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound.la \
$(top_builddir)/kvutils/libkvutils.la
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
ecasound_debug_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound_debug.la \
$(top_builddir)/kvutils/libkvutils_debug.la
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install

View File

@ -0,0 +1,586 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@ECA_AM_DEBUG_MODE_FALSE@bin_PROGRAMS = ecasound$(EXEEXT)
@ECA_AM_DEBUG_MODE_TRUE@bin_PROGRAMS = ecasound_debug$(EXEEXT)
subdir = ecasound
DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_ecasound_OBJECTS = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
ecasound_OBJECTS = $(am_ecasound_OBJECTS)
am__DEPENDENCIES_1 =
am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
ecasound_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
$(top_builddir)/libecasound/libecasound.la \
$(top_builddir)/kvutils/libkvutils.la
am__objects_1 = ecasound.$(OBJEXT) eca-curses.$(OBJEXT) \
eca-comhelp.$(OBJEXT) eca-neteci-server.$(OBJEXT) \
eca-plaintext.$(OBJEXT) textdebug.$(OBJEXT)
am_ecasound_debug_OBJECTS = $(am__objects_1)
ecasound_debug_OBJECTS = $(am_ecasound_debug_OBJECTS)
ecasound_debug_DEPENDENCIES = $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_1) \
$(top_builddir)/libecasound/libecasound_debug.la \
$(top_builddir)/kvutils/libkvutils_debug.la
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
DIST_SOURCES = $(ecasound_SOURCES) $(ecasound_debug_SOURCES)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
INCLUDES = -I$(ECA_S_READLINE_INCLUDES) -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/libecasound -I$(top_srcdir)/kvutils
@ECA_AM_USE_NCURSES_TRUE@termcap_library_ncurses = -lncurses
@ECA_AM_USE_TERMCAP_TRUE@termcap_library_termcap = -ltermcap
termcap_library = $(termcap_library_ncurses) $(termcap_library_termcap)
ecasound_SOURCES = ecasound.cpp \
ecasound.h \
eca-console.h \
eca-curses.h \
eca-curses.cpp \
eca-comhelp.cpp \
eca-comhelp.h \
eca-neteci-server.cpp \
eca-neteci-server.h \
eca-plaintext.h \
eca-plaintext.cpp \
textdebug.cpp \
textdebug.h
ecasound_debug_SOURCES = $(ecasound_SOURCES)
ecasound_LDFLAGS = -export-dynamic
ecasound_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound.la \
$(top_builddir)/kvutils/libkvutils.la
ecasound_debug_LDFLAGS = $(ecasound_LDFLAGS)
ecasound_debug_LDADD = $(termcap_library) \
$(ECA_S_READLINE_LIBS) \
$(top_builddir)/libecasound/libecasound_debug.la \
$(top_builddir)/kvutils/libkvutils_debug.la
all: all-am
.SUFFIXES:
.SUFFIXES: .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecasound/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign ecasound/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
ecasound$(EXEEXT): $(ecasound_OBJECTS) $(ecasound_DEPENDENCIES)
@rm -f ecasound$(EXEEXT)
$(CXXLINK) $(ecasound_LDFLAGS) $(ecasound_OBJECTS) $(ecasound_LDADD) $(LIBS)
ecasound_debug$(EXEEXT): $(ecasound_debug_OBJECTS) $(ecasound_debug_DEPENDENCIES)
@rm -f ecasound_debug$(EXEEXT)
$(CXXLINK) $(ecasound_debug_LDFLAGS) $(ecasound_debug_OBJECTS) $(ecasound_debug_LDADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-comhelp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-curses.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-neteci-server.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eca-plaintext.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecasound.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/textdebug.Po@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS)
installdirs:
for dir in "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am: install-binPROGRAMS
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-data install-data-am install-exec \
install-exec-am install-info install-info-am install-man \
install-strip installcheck installcheck-am installdirs \
maintainer-clean maintainer-clean-generic mostlyclean \
mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
pdf pdf-am ps ps-am tags uninstall uninstall-am \
uninstall-binPROGRAMS uninstall-info-am
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,170 @@
// ------------------------------------------------------------------------
// ecasound.cpp: Console mode user interface to ecasound.
// Copyright (C) 2000,2009 Kai Vehmanen
//
// Attributes:
// eca-style-version: 3 (see Ecasound Programmer's Guide)
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#include "eca-comhelp.h"
/* FIXME: get chainop list from libecasound!
* - 2009/Jan: or maybe not, people should just be pointed to
* ecasound(1) */
static const char* ecasound_parameter_help_rep =
"USAGE: ecasound [options] \n"
" -c enable interactive mode \n"
" -C disable interactive mode (batchmode)\n"
" -d:debug_level show debug info \n"
" -D print all trace messages to stderr\n"
" -q quiet mode, no output\n"
" -s[:]file.ecs load chainsetup from 'file' \n"
" -E \"foo1 ; foo 2\" execute interactive commands at start\n"
" --server enable ecasound's network control mode\n"
" --server-tcp-port=NNN use TCP port NNN\n"
" --no-server disable the daemon mode (default)\n"
" --osc-udp-port=NNN listen for OSC messages on UDP port NNN\n"
" --keep-running (or -K) do not exit from batchmode\n"
" --help (or -h) show this help\n"
" --version print version info\n"
" --- \n"
" -b:buffersize size of sample buffer in samples\n"
" -B:mode buffering mode\n"
" -m:mixmode mixmode\n"
" -n:name set chainsetup name\n"
" -r[:priority] raise runtime priority\n"
" -sr:sample_rate set internal sample rate\n"
" -x truncate outputs\n"
" -X open outputs for update (default)\n"
" -z:feature enable feature 'feature', see ecasound(1)\n"
" --- \n"
" -t:seconds processing time in seconds\n"
" -tl enable looping\n"
" --- \n"
" -a:name1,name2, ... select/create chains ('all' reserved)\n"
" -f:type,channels,srate set file format (for all following inputs/outputs)\n"
" -i[:]infile specify an input (assigned to active chains)\n"
" -o[:]outfile specify an input (assigned to active chains)\n"
" -y:seconds set start position for preceding input/output\n"
" --- \n"
" -Md:rawmidi,midi_device set MIDI-device\n"
" -Mms:device_id send MMC start/stop\n"
" -Mss send MIDI start/stop\n"
" --- \n"
" -pf:preset.eep insert the first preset from file 'preset.eep'\n"
" -pn:preset_name insert preset 'preset_name' from the\n"
" preset database\n"
" --- \n"
" -eS:stamp-id audio stamp\n"
" -ea:amp-% amplify\n"
" -eac:amp-%,channel channel amplify\n"
" -eaw:amp-%,max-clipped-samples - \n"
" amplify with clip-control\n"
" -ec:compression-rate-dB,threshold-% ...\n"
" compressor\n"
" -eca:peak-limit-%,release-time-sec,fast-crate,overall-crate ...\n"
" advanced compressor\n"
" -eemb:bpm,on-time-msec pulse gate (bpm)\n"
" -eemp:freq-Hz,on-time-% pulse gate\n"
" -eemt:bpm,depth-% tremolo\n"
" -ef1:center-freq,width resonant bandpass filter\n"
" -ef3:cutoff-freq,resonance,gain ...\n"
" resonant lowpass filter\n"
" -ef4:cutoff-freq,resonance ...\n"
" resonant lowpass filter (2nd-order,24dB)\n"
" -efa:delay-samples,feedback-% ...\n"
" allpass filter\n"
" -efb:center-freq,width bandpass filter\n"
" -efc:delay-samples,radius ...\n"
" comb filter\n"
" -efh:cutoff-freq highpass filter\n"
" -efi:delay-samples,radius ...\n"
" inverse comb filter\n"
" -efl:cutoff-freq lowpass filter\n"
" -efr:center-freq,width bandreject filter\n"
" -efs:center-freq,width resonator filter\n"
" -ei:change-% pitch shifter\n"
" -el:name,par1,...,parN LADSPA-plugin 'name'\n"
" -eli:id,par1,...,parnN LADSPA-plugin with numeric 'id'\n"
" -enm:threshold-level-%,pre-hold-time-msec,attack-time-msec,post-hold-time-msec,release-time-msec ...\n"
" noise gate\n"
" -erc:from-channel,to-channel ...\n"
" copy 'from-channel' to 'to-channel'\n"
" -erm:to-channel mix all channels to channel 'to-channel' \n"
" -epp:right-% normal pan\n"
" -etc:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
" chorus\n"
" -etd:delay-time-msec,surround-mode,number-of-delays,mix-%,feedback-% ...\n"
" delay\n"
" -ete:room-size,feedback-%,wet-% ...\n"
" advanced reverb\n"
" -etf:delay-time-msec fake stereo\n"
" -etl:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
" flanger\n"
" -etm:delay-time-msec,number-of-delays,mix-% ...\n"
" multitap delay\n"
" -etp:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
" phaser\n"
" -etr:delay-time,surround-mode,feedback-% ...\n"
" reverb\n"
" -ev:cumulative-mode,result-max-multiplier ...\n"
" analyze/maximize volume\n"
" -evp:peak-ch1,peak-chN peak amplitude watcher\n"
" -ezf find optimal value for DC-offset adjustment\n"
" -ezx:channel-count,delta-ch1,...,delta-chN\n"
" adjust DC-offset\n"
" --- \n"
" -gc:open-at-sec,duration-sec ...\n"
" time crop gate\n"
" -ge:threshold-openlevel-%,threshold-closelevel-%,rms-enabled ...\n"
" threshold gate\n"
" --- \n"
" -kf:param-id,range-low,range-high,freq,mode,preset-number ...\n"
" file envelope (generic oscillator)\n"
" -kl:param-id,range-low,range-high,length-sec ...\n"
" linear envelope (fade-in and fade-out)\n"
" -kl2:param-id,range-low,range-high,1st-stage-sec,2nd-stage-sec ...\n"
" two-stage linear envelope\n"
" -klg:param-id,range-low,range-high,point_count ...\n"
" generic linear envelope\n"
" -km:param-id,range-low,range-high,controller,channel ...\n"
" MIDI-controlled envelope\n"
" -kog:param-id,range-low,range-high,freq,mode,pcount,start_val,end_val ...\n"
" generic oscillator\n"
" -kos:param-id,range-low,range-high,freq,phase-offset ...\n"
" sine oscillator\n"
" -ksv:param-id,range-low,range-high,stamp-id,rms-toggle ...\n"
" volume analyzing controller"
" --- \n"
" -kx use last specified controller as\n"
" controller target\n"
"\n"
"Note that this is only a partial list of available options. For\n"
"a complete list of available options, as well as more detailed\n"
"descriptions of of their use, see ecasound(1) manual page and\n"
"the documentation at ecasound's website. Documentation is available\n"
"online at:\n"
" - http://eca.cx/ecasound/Documentation/ecasound_manpage.html\n"
" - http://eca.cx/ecasound/Documentation/examples.html\n"
"\n"
"Report bugs to ecasound-list mailing list (http://www.eca.cx/contact).\n";
const char* ecasound_parameter_help(void)
{
return ecasound_parameter_help_rep;
}

View File

@ -0,0 +1,6 @@
#ifndef INCLUDED_ECA_COMHELP_H
#define INCLUDED_ECA_COMHELP_H
const char* ecasound_parameter_help(void);
#endif

View File

@ -0,0 +1,44 @@
#ifndef INCLUDED_ECA_CONSOLE_H
#define INCLUDED_ECA_CONSOLE_H
#include <string>
/**
* Abstract interface for console
* mode ecasound user interface
* implementations.
*
* @author Kai Vehmanen
*/
class ECA_CONSOLE {
public:
/**
* Prints the text string 'msg'.
*/
virtual void print(const std::string& msg) = 0;
/**
* Prints the ecasound banner.
*/
virtual void print_banner(void) = 0;
/**
* Reads the next user command.
*
* @param prompt prompt shown to user
*
* @see last_command()
*/
virtual void read_command(const std::string& prompt) = 0;
/**
* Returns the last read user command.
*/
virtual const std::string& last_command(void) const = 0;
virtual ~ECA_CONSOLE(void) {};
};
#endif /* INCLUDED_ECA_CONSOLE_H */

View File

@ -0,0 +1,220 @@
// ------------------------------------------------------------------------
// eca-curses.cpp: Curses implementation of the console user interface.
// Copyright (C) 1999-2004,2007 Kai Vehmanen
//
// Attributes:
// eca-style-version: 2
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <cstdlib>
#include <iostream>
#include <map>
#include <string>
#if defined(ECA_PLATFORM_CURSES)
#ifdef ECA_USE_NCURSES_H
#include <ncurses.h>
#include <term.h> /* for setupterm() */
#elif ECA_USE_NCURSES_NCURSES_H
#include <ncurses/ncurses.h>
#include <ncurses/term.h> /* for setupterm() */
#else
#include <curses.h>
#include <term.h> /* for setupterm() */
#endif
#define READLINE_LIBRARY
#include <readline.h>
#include <history.h>
#include <eca-iamode-parser.h>
#include <eca-version.h>
#include <kvu_utils.h> /* kvu_string_search_and_replace() */
#include "ecasound.h"
#include "eca-curses.h"
#if defined(RL_READLINE_VERSION) && RL_READLINE_VERSION >= 0x0402
static char** ecasound_completion (const char *text, int start, int end);
static char* ecasound_command_generator (const char* text, int state);
#else
static char** ecasound_completion (char *text, int start, int end);
static char* ecasound_command_generator (char* text, int state);
#endif
ECA_CURSES::ECA_CURSES(void)
{
rl_initialized_rep = false;
setupterm((char *)0, 1, (int *)0);
init_readline_support();
}
ECA_CURSES::~ECA_CURSES(void)
{
if (rl_initialized_rep == true) {
rl_cleanup_after_signal();
}
}
void ECA_CURSES::print(const std::string& msg)
{
std::cout << msg << std::endl;
}
void ECA_CURSES::print_banner(void)
{
int width = COLS - 4;
if (width > ECASOUND_TERM_WIDTH_DEFAULT)
width = ECASOUND_TERM_WIDTH_DEFAULT;
string banner (width, '*');
std::cout << banner << std::endl;
std::cout << "*";
putp(tigetstr("bold"));
std::cout << " ecasound v"
<< ecasound_library_version
<< ECASOUND_COPYRIGHT;
putp(tigetstr("sgr0"));
std::cout << "\n";
std::cout << banner << std::endl;
}
void ECA_CURSES::read_command(const std::string& prompt)
{
if (rl_initialized_rep != true) rl_initialized_rep = true;
last_cmdchar_repp = readline(const_cast<char*>(prompt.c_str()));
if (last_cmdchar_repp != 0) {
add_history(last_cmdchar_repp);
last_cmd_rep = last_cmdchar_repp;
free(last_cmdchar_repp);
}
else {
/* handle EOF */
last_cmd_rep = "q";
}
}
const std::string& ECA_CURSES::last_command(void) const
{
return last_cmd_rep;
}
void ECA_CURSES::init_readline_support(void)
{
/* for conditional parsing of ~/.inputrc file. */
rl_readline_name = "ecasound";
/* we want to attempt completion first */
#if RL_READLINE_VERSION >= 0x0402
rl_attempted_completion_function = (rl_completion_func_t*)ecasound_completion;
#else
rl_attempted_completion_function = (CPPFunction *)ecasound_completion;
#endif
}
/* **************************************************************** */
/* */
/* Interface to Readline Completion */
/* */
/* **************************************************************** */
/**
* Attempt to complete on the contents of TEXT. START and END bound the
* region of rl_line_buffer that contains the word to complete. TEXT is
* the word to complete. We can use the entire contents of rl_line_buffer
* in case we want to do some simple parsing. Return the array of matches,
* or NULL if there aren't any.
*/
#if RL_READLINE_VERSION >= 0x0402
char** ecasound_completion (const char *text, int start, int end)
#else
char** ecasound_completion (char *text, int start, int end)
#endif
{
char **matches;
matches = (char **)NULL;
/* complete only the first command, otherwise complete files in
* the current directory */
if (start == 0) {
#if RL_READLINE_VERSION >= 0x0402
matches = rl_completion_matches (text, (rl_compentry_func_t *)ecasound_command_generator);
#else
matches = completion_matches (text, (CPFunction *)ecasound_command_generator);
#endif
}
return matches;
}
/**
* Generator function for command completion. STATE lets us know whether
* to start from scratch; without any state (i.e. STATE == 0), then we
* start at the top of the list.
*/
#if RL_READLINE_VERSION >= 0x0402
char* ecasound_command_generator (const char* text, int state)
#else
char* ecasound_command_generator (char* text, int state)
#endif
{
static int list_index, len;
static const std::map<std::string,int>& map_ref = ECA_IAMODE_PARSER::registered_commands();
static std::map<std::string,int>::const_iterator p;
static std::string cmd;
/* If this is a new word to complete, initialize now. This includes
* saving the length of TEXT for efficiency, and initializing the index
* variable to 0
*/
if (!state) {
list_index = 0;
p = map_ref.begin();
len = strlen (text);
}
/* Return the next name which partially matches from the command list */
while (p != map_ref.end()) {
cmd = p->first;
list_index++;
++p;
if (p != map_ref.end()) {
std::string hyphenstr = kvu_string_search_and_replace(text, '_', '-');
if (strncmp(hyphenstr.c_str(), cmd.c_str(), len) == 0) {
return strdup(cmd.c_str());
}
}
}
return (char *)0;
}
#else
#include "eca-curses.h"
ECA_CURSES::ECA_CURSES(void) {}
ECA_CURSES::~ECA_CURSES(void) {}
void ECA_CURSES::print(const std::string& msg) {}
void ECA_CURSES::print_banner(void) {}
void ECA_CURSES::read_command(const std::string& prompt) {}
const std::string& ECA_CURSES::last_command(void) const { static std::string empty; return empty; }
void ECA_CURSES::init_readline_support(void) {}
#endif /* ECA_PLATFORM_CURSES */

View File

@ -0,0 +1,60 @@
#ifndef INCLUDED_ECA_CURSES_H
#define INCLUDED_ECA_CURSES_H
#include <string>
#include "eca-console.h"
/**
* Abstract interface for console
* mode ecasound user interface
* implementations.
*
* @author Kai Vehmanen
*/
class ECA_CURSES : public ECA_CONSOLE {
public:
/**
* Constructor. Initialized the GNU readline
* interface.
*/
ECA_CURSES(void);
/**
* Virtual destructor.
*/
virtual ~ECA_CURSES(void);
/**
* Prints the text string 'msg'.
*/
virtual void print(const std::string& msg);
/**
* Prints the ecasound banner.
*/
virtual void print_banner(void);
/**
* Reads the next user command.
*
* @see last_command()
*/
virtual void read_command(const std::string& prompt);
/**
* Returns the last read user command.
*/
virtual const std::string& last_command(void) const;
private:
void init_readline_support(void);
char* last_cmdchar_repp;
std::string last_cmd_rep;
bool rl_initialized_rep;
};
#endif /* INCLUDED_ECA_CURSES_H */

View File

@ -0,0 +1,557 @@
// ------------------------------------------------------------------------
// eca-neteci-server.c: NetECI server implementation.
// Copyright (C) 2002,2004,2009 Kai Vehmanen
//
// Attributes:
// eca-style-version: 3
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#include <cassert>
#include <cstring> /* memcpy() */
#include <iostream>
#include <string>
#include <fcntl.h> /* POSIX: fcntl() */
#include <pthread.h> /* POSIX: pthread_* */
#include <unistd.h> /* POSIX: fcntl() */
#include <arpa/inet.h> /* BSD: inet_ntoa() */
#include <netinet/in.h> /* BSD: inet_ntoa() */
#include <sys/poll.h> /* POSIX: poll() */
#include <sys/socket.h> /* BSD: getpeername() */
#include <sys/types.h> /* OSX: u_int32_t (INADDR_ANY) */
#include <kvu_dbc.h>
#include <kvu_fd_io.h>
#include <kvu_numtostr.h>
#include <kvu_utils.h>
#include <eca-control-mt.h>
#include <eca-logger.h>
#include <eca-logger-wellformed.h>
#include "ecasound.h"
#include "eca-neteci-server.h"
/**
* Options
*/
// #define NETECI_DEBUG_ENABLED
#define ECA_NETECI_START_BUFFER_SIZE 128
#define ECA_NETECI_MAX_BUFFER_SIZE 65536
/**
* Macro definitions
*/
#ifdef NETECI_DEBUG_ENABLED
#define NETECI_DEBUG(x) x
#else
#define NETECI_DEBUG(x) ((void) 0)
#endif
/**
* Import namespaces
*/
using namespace std;
ECA_NETECI_SERVER::ECA_NETECI_SERVER(ECASOUND_RUN_STATE* state)
: state_repp(state),
srvfd_rep(-1),
server_listening_rep(false),
unix_sockets_rep(false),
cleanup_request_rep(false)
{
}
ECA_NETECI_SERVER::~ECA_NETECI_SERVER(void)
{
if (server_listening_rep == true) {
close_server_socket();
}
}
/**
* Launches the server thread.
*
* @param arg pointer to a ECA_NETECI_SERVER object
*/
void* ECA_NETECI_SERVER::launch_server_thread(void* arg)
{
ECA_LOG_MSG(ECA_LOGGER::user_objects, "Server thread started");
ECA_NETECI_SERVER* self =
reinterpret_cast<ECA_NETECI_SERVER*>(arg);
self->run();
return 0;
}
/**
* Starts running the NetECI server.
*
* After calling this function, the ECA_CONTROL_MAIN object
* may be used at any time from the NetECI server thread.
*/
void ECA_NETECI_SERVER::run(void)
{
create_server_socket();
open_server_socket();
if (server_listening_rep == true) {
listen_for_events();
}
else {
ECA_LOG_MSG(ECA_LOGGER::info,
"Unable to start NetECI server. Please check that no other program is using the TCP port "
+ kvu_numtostr(state_repp->neteci_tcp_port)
+ ".");
}
close_server_socket();
ECA_LOG_MSG(ECA_LOGGER::user_objects,
"server thread exiting");
}
/**
* Creates a server socket with 'socket()'. Depending on
* object configuration either UNIX or IP socket is
* created.
*/
void ECA_NETECI_SERVER::create_server_socket(void)
{
DBC_REQUIRE(server_listening_rep != true);
DBC_REQUIRE(srvfd_rep <= 0);
if (unix_sockets_rep == true) {
srvfd_rep = socket(AF_UNIX, SOCK_STREAM, 0);
if (srvfd_rep >= 0) {
/* create a temporary filename for the socket in a secure way */
socketpath_rep = "/tmp/neteci_server_1";
addr_un_rep.sun_family = AF_UNIX;
memcpy(addr_un_rep.sun_path, socketpath_rep.c_str(), socketpath_rep.size() + 1);
addr_repp = reinterpret_cast<struct sockaddr*>(&addr_un_rep);
}
}
else {
srvfd_rep = socket(PF_INET, SOCK_STREAM, 0);
if (srvfd_rep >= 0) {
addr_in_rep.sin_family = AF_INET;
addr_in_rep.sin_port = htons(state_repp->neteci_tcp_port);
addr_in_rep.sin_addr.s_addr = INADDR_ANY;
addr_repp = reinterpret_cast<struct sockaddr*>(&addr_in_rep);
}
}
}
/**
* Opens the server socket for listening. If succesful,
* 'server_listening_rep' will be true after the call.
*/
void ECA_NETECI_SERVER::open_server_socket(void)
{
DBC_REQUIRE(server_listening_rep != true);
DBC_REQUIRE(srvfd_rep > 0);
int val = 1;
int ret = setsockopt(srvfd_rep, SOL_SOCKET, SO_REUSEADDR, (void *)&val, sizeof(val));
if (ret < 0)
std::cerr << "setsockopt() failed." << endl;
// int res = bind(srvfd_rep, (struct sockaddr*)addr_repp, sizeof(*addr_repp));
int res = 0;
if (unix_sockets_rep == true)
res = bind(srvfd_rep, (struct sockaddr*)&addr_un_rep, sizeof(addr_un_rep));
else
res = bind(srvfd_rep, (struct sockaddr*)&addr_in_rep, sizeof(addr_in_rep));
if (res == 0) {
res = listen(srvfd_rep, 5);
if (res == 0) {
int res = fcntl(srvfd_rep, F_SETFL, O_NONBLOCK);
if (res == -1)
std::cerr << "fcntl() failed." << endl;
NETECI_DEBUG(std::cout << "server socket created." << endl);
server_listening_rep = true;
}
else
std::cerr << "listen() failed." << endl;
}
else {
if (unix_sockets_rep == true) {
unlink(socketpath_rep.c_str());
}
socketpath_rep.resize(0);
std::cerr << "bind() failed." << endl;
}
DBC_ENSURE((unix_sockets_rep == true &&
(((server_listening_rep == true && socketpath_rep.size() > 0) ||
(server_listening_rep != true && socketpath_rep.size() == 0)))) ||
(unix_sockets_rep != true));
}
/**
* Closes the server socket.
*/
void ECA_NETECI_SERVER::close_server_socket(void)
{
DBC_REQUIRE(srvfd_rep > 0);
DBC_REQUIRE(server_listening_rep == true);
NETECI_DEBUG(cerr << "closing socket " << kvu_numtostr(srvfd_rep) << "." << endl);
close(srvfd_rep);
srvfd_rep = -1;
server_listening_rep = false;
DBC_ENSURE(srvfd_rep == -1);
DBC_ENSURE(server_listening_rep != true);
}
/**
* Listens for and accepts incoming connections.
*/
void ECA_NETECI_SERVER::listen_for_events(void)
{
/*
* - loop until we get an exit request from network or from
* ecasound_state
*/
/* - enter poll
* - if new connections, accept them and add the new client to
* client list
* - if incoming bytes, grab ecasound_state lock, send command,
* store retval, release lock, send the reply to client
* - return to poll
*/
while(state_repp->exit_request == 0) {
// NETECI_DEBUG(cerr << "checking for events" << endl);
check_for_events(2000);
}
if (state_repp->exit_request != 0) {
NETECI_DEBUG(cerr << "exit_request received" << endl);
}
}
/**
* Checks for new connections and messages from
* clients.
*
* @param timeout upper-limit in ms for how long
* function waits for events; if -1,
* call will return immediately
* (ie. is non-blocking)
*/
void ECA_NETECI_SERVER::check_for_events(int timeout)
{
int nfds = clients_rep.size() + 1;
struct pollfd* ufds = new struct pollfd [nfds];
ufds[0].fd = srvfd_rep;
ufds[0].events = POLLIN;
ufds[0].revents = 0;
std::list<struct ecasound_neteci_server_client*>::iterator p = clients_rep.begin();
for(int n = 1; n < nfds; n++) {
ufds[n].fd = (*p)->fd;
ufds[n].events = POLLIN;
ufds[n].revents = 0;
++p;
}
DBC_CHECK(nfds == 1 || p == clients_rep.end());
int ret = poll(ufds, nfds, timeout);
if (ret > 0) {
if (ufds[0].revents & POLLIN) {
/* 1. new incoming connection */
handle_connection(srvfd_rep);
}
p = clients_rep.begin();
for(int n = 1; n < nfds; n++) {
if (ufds[n].revents & POLLIN) {
/* 2. client has sent a message */
handle_client_messages(*p);
}
else if (ufds[n].revents == POLLERR ||
ufds[n].revents == POLLHUP ||
ufds[n].revents == POLLNVAL) {
/* 3. error, remove client */
remove_client(*p);
}
if (p != clients_rep.end()) ++p;
}
}
if (cleanup_request_rep == true) {
clean_removed_clients();
}
delete[] ufds;
}
void ECA_NETECI_SERVER::handle_connection(int fd)
{
socklen_t bytes = 0;
string peername;
int connfd = 0;
if (unix_sockets_rep == true) {
bytes = static_cast<socklen_t>(sizeof(addr_un_rep));
connfd = accept(fd, reinterpret_cast<struct sockaddr*>(&addr_un_rep), &bytes);
peername = "UNIX:" + socketpath_rep;
}
else {
bytes = static_cast<socklen_t>(sizeof(addr_in_rep));
connfd = accept(fd, reinterpret_cast<struct sockaddr*>(&addr_in_rep), &bytes);
if (connfd > 0) {
struct sockaddr_in peeraddr;
socklen_t peernamelen;
// struct in_addr peerip;
peername = "TCP/IP:";
int res = getpeername(connfd,
reinterpret_cast<struct sockaddr*>(&peeraddr),
reinterpret_cast<socklen_t*>(&peernamelen));
if (res == 0)
peername += string(inet_ntoa(peeraddr.sin_addr));
else
peername += string(inet_ntoa(addr_in_rep.sin_addr));
}
}
ECA_LOG_MSG(ECA_LOGGER::info,
"New connection from " +
peername + ".");
if (connfd >= 0) {
NETECI_DEBUG(cerr << "incoming connection accepted" << endl);
struct ecasound_neteci_server_client* client = new struct ecasound_neteci_server_client; /* add a new client */
client->fd = connfd;
client->buffer_length = ECA_NETECI_START_BUFFER_SIZE;
client->buffer = new char [client->buffer_length];
client->buffer_current_ptr = 0;
client->peername = peername;
clients_rep.push_back(client);
}
}
/**
* Handle incoming messages for client 'client'.
*/
void ECA_NETECI_SERVER::handle_client_messages(struct ecasound_neteci_server_client* client)
{
char* buf[128];
int connfd = client->fd;
NETECI_DEBUG(cerr << "handle_client_messages for fd "
<< connfd << endl);
ssize_t c = kvu_fd_read(connfd, buf, 128, 5000);
if (c > 0) {
parse_raw_incoming_data(reinterpret_cast<char*>(buf), c, client);
while(parsed_cmd_queue_rep.size() > 0) {
const string& nextcmd = parsed_cmd_queue_rep.front();
if (nextcmd == "quit" || nextcmd == "q") {
NETECI_DEBUG(cerr << "client initiated quit, removing client-fd " << connfd << "." << endl);
remove_client(client);
}
else {
handle_eci_command(nextcmd, client);
}
parsed_cmd_queue_rep.pop_front();
}
/* ... */
}
else {
/* read() <= 0 */
NETECI_DEBUG(cerr << "read error, removing client-fd " << connfd << "." << endl);
remove_client(client);
}
}
void ECA_NETECI_SERVER::parse_raw_incoming_data(const char* buffer,
ssize_t bytes,
struct ecasound_neteci_server_client* client)
{
DBC_REQUIRE(buffer != 0);
DBC_REQUIRE(bytes >= 0);
DBC_REQUIRE(client != 0);
DBC_DECLARE(int old_client_ptr = client->buffer_current_ptr);
DBC_DECLARE(unsigned int old_cmd_queue_size = parsed_cmd_queue_rep.size());
NETECI_DEBUG(cerr << "parse incoming data; "
<< bytes << " bytes. Buffer length is "
<< client->buffer_length << endl);
for(int n = 0; n < bytes; n++) {
DBC_CHECK(client->buffer_current_ptr <= client->buffer_length);
if (client->buffer_current_ptr == client->buffer_length) {
int new_buffer_length = client->buffer_length * 2;
char *new_buffer = new char [new_buffer_length];
if (new_buffer_length > ECA_NETECI_MAX_BUFFER_SIZE) {
cerr << "client buffer overflow, unable to increase buffer size. flushing..." << endl;
client->buffer_current_ptr = 0;
}
else {
NETECI_DEBUG(cerr << "client buffer overflow, increasing buffer size from "
<< client->buffer_length << " to " << new_buffer_length << " bytes." << endl);
for(int i = 0; i < client->buffer_length; i++) new_buffer[i] = client->buffer[i];
delete[] client->buffer;
client->buffer = new_buffer;
client->buffer_length = new_buffer_length;
}
}
NETECI_DEBUG(cerr << "copying '" << buffer[n] << "'\n");
client->buffer[client->buffer_current_ptr] = buffer[n];
if (client->buffer_current_ptr > 0 &&
client->buffer[client->buffer_current_ptr] == '\n' &&
client->buffer[client->buffer_current_ptr - 1] == '\r') {
string cmd (client->buffer, client->buffer_current_ptr - 1);
NETECI_DEBUG(cerr << "storing command '" << cmd << "'" << endl);
parsed_cmd_queue_rep.push_back(cmd);
NETECI_DEBUG(cerr << "copying "
<< client->buffer_length - client->buffer_current_ptr - 1
<< " bytes from " << client->buffer_current_ptr + 1
<< " to the beginning of the buffer."
<< " Index is " << client->buffer_current_ptr << endl);
DBC_CHECK(client->buffer_current_ptr < client->buffer_length);
#if 0
/* must not use memcpy() as the
affected areas may overlap! */
for(int o = 0, p = index + 1;
p < client->buffer_length; o++, p++) {
client->buffer[o] = client->buffer[p];
}
#endif
client->buffer_current_ptr = 0;
}
else {
// NETECI_DEBUG(cerr << "crlf not found, index=" << index << ", n=" << n << "cur_ptr=" << client->buffer_current_ptr << ".\n");
client->buffer_current_ptr++;
}
}
DBC_ENSURE(client->buffer_current_ptr > old_client_ptr ||
parsed_cmd_queue_rep.size() > old_cmd_queue_size);
}
void ECA_NETECI_SERVER::handle_eci_command(const string& cmd, struct ecasound_neteci_server_client* client)
{
ECA_CONTROL_MT* ctrl = state_repp->control;
NETECI_DEBUG(cerr << "handle eci command: " << cmd << endl);
assert(ctrl != 0);
struct eci_return_value retval;
ctrl->command(cmd, &retval);
string strtosend =
ECA_LOGGER_WELLFORMED::create_wellformed_message(ECA_LOGGER::eiam_return_values,
std::string(ECA_CONTROL_MAIN::return_value_type_to_string(&retval))
+ " " +
ECA_CONTROL_MAIN::return_value_to_string(&retval));
int bytes_to_send = strtosend.size();
while(bytes_to_send > 0) {
int ret = kvu_fd_write(client->fd, strtosend.c_str(), strtosend.size(), 5000);
if (ret < 0) {
cerr << "error in kvu_fd_write(), removing client.\n";
remove_client(client);
break;
}
else {
bytes_to_send -= ret;
}
}
}
/**
* Removes 'client' from list of clients.
*
* Note! Internally, the 'fd' field of the deleted client
* is marked to be -1.
*
* @see clean_removed_clients()
*/
void ECA_NETECI_SERVER::remove_client(struct ecasound_neteci_server_client* client)
{
NETECI_DEBUG(std::cout << "removing client." << std::endl);
if (client != 0 && client->fd > 0) {
ECA_LOG_MSG(ECA_LOGGER::info,
"Closing connection " +
client->peername + ".");
close(client->fd);
client->fd = -1;
}
cleanup_request_rep = true;
}
/**
* Cleans the list of clients from removed objects.
*
* @see remove_client()
*/
void ECA_NETECI_SERVER::clean_removed_clients(void)
{
DBC_DECLARE(size_t oldsize = clients_rep.size());
DBC_DECLARE(size_t counter = 0);
NETECI_DEBUG(std::cerr << "cleaning removed clients." << std::endl);
list<struct ecasound_neteci_server_client*>::iterator p = clients_rep.begin();
while(p != clients_rep.end()) {
NETECI_DEBUG(std::cerr << "checking for delete, client " << *p << std::endl);
if (*p != 0 && (*p)->fd == -1) {
if ((*p)->buffer != 0) {
delete[] (*p)->buffer;
(*p)->buffer = 0;
}
std::list<struct ecasound_neteci_server_client*>::iterator q = p;
++q;
NETECI_DEBUG(std::cerr << "deleting client " << *p << std::endl);
delete *p;
NETECI_DEBUG(std::cerr << "erasing client " << *p << std::endl);
*p = 0;
clients_rep.erase(p);
p = q;
DBC_DECLARE(++counter);
}
else {
++p;
}
}
cleanup_request_rep = false;
DBC_ENSURE(clients_rep.size() == oldsize - counter);
}

View File

@ -0,0 +1,78 @@
#ifndef INCLUDED_ECA_NETECI_SERVER_H
#define INCLUDED_ECA_NETECI_SERVER_H
#include <list>
#include <string>
#include <sys/socket.h> /* Generic socket definitions */
#include <sys/un.h> /* UNIX socket definitions */
#include <netinet/in.h> /* IP socket definitions */
struct ecasound_state;
class ECASOUND_RUN_STATE;
struct ecasound_neteci_server_client {
std::string peername;
char* buffer;
int fd;
int buffer_current_ptr;
int buffer_length;
};
/**
* NetECI server implementation.
*
* @author Kai Vehmanen
*/
class ECA_NETECI_SERVER {
public:
/**
* Constructor.
*/
ECA_NETECI_SERVER(ECASOUND_RUN_STATE* state);
/**
* Virtual destructor.
*/
~ECA_NETECI_SERVER(void);
static void* launch_server_thread(void* arg);
private:
void run(void);
void create_server_socket(void);
void open_server_socket(void);
void close_server_socket(void);
void listen_for_events(void);
void check_for_events(int timeout);
void handle_connection(int fd);
void handle_client_messages(struct ecasound_neteci_server_client* client);
void handle_eci_command(const std::string& cmd, struct ecasound_neteci_server_client* client);
void parse_raw_incoming_data(const char* buffer,
ssize_t bytes,
struct ecasound_neteci_server_client* client);
void remove_client(struct ecasound_neteci_server_client* client);
void clean_removed_clients(void);
struct sockaddr_un addr_un_rep;
struct sockaddr_in addr_in_rep;
struct sockaddr* addr_repp;
ECASOUND_RUN_STATE* state_repp;
std::list<struct ecasound_neteci_server_client*> clients_rep;
/* FIXME: turn into a buffer of pointers to allow ptr-fields */
std::list<std::string> parsed_cmd_queue_rep;
std::string socketpath_rep;
int srvfd_rep;
bool server_listening_rep;
bool unix_sockets_rep;
bool cleanup_request_rep;
};
#endif /* INCLUDED_ECA_NETECI_SERVER_H */

View File

@ -0,0 +1,81 @@
// ------------------------------------------------------------------------
// eca-plaintext.cpp: Plaintext implementation of the console user
// interface.
// Copyright (C) 2002-2004 Kai Vehmanen
//
// Attributes:
// eca-style-version: 2
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#include <iostream>
#include <string>
#include <cassert>
#include <eca-version.h>
#include "ecasound.h"
#include "eca-plaintext.h"
using namespace std;
ECA_PLAIN_TEXT::ECA_PLAIN_TEXT(std::ostream* ostr)
{
ostream_repp = ostr;
}
ECA_PLAIN_TEXT::~ECA_PLAIN_TEXT(void)
{
}
void ECA_PLAIN_TEXT::print(const std::string& msg)
{
*ostream_repp << msg << endl;
}
void ECA_PLAIN_TEXT::print_banner(void)
{
*ostream_repp << ECASOUND_BANNER_ASTERISK_BAR;
*ostream_repp << "*";
*ostream_repp << " ecasound v"
<< ecasound_library_version
<< ECASOUND_COPYRIGHT;
*ostream_repp << "\n";
*ostream_repp << ECASOUND_BANNER_ASTERISK_BAR;
}
void ECA_PLAIN_TEXT::read_command(const string& prompt)
{
if (ostream_repp->good() == true) {
*ostream_repp << prompt;
ostream_repp->flush();
if (cin.good() == true) {
getline(cin, last_cmd_rep);
}
else {
last_cmd_rep = "q";
}
}
else {
last_cmd_rep = "q";
}
}
const string& ECA_PLAIN_TEXT::last_command(void) const
{
return last_cmd_rep;
}

View File

@ -0,0 +1,57 @@
#ifndef INCLUDED_ECA_PLAINTEXT_H
#define INCLUDED_ECA_PLAINTEXT_H
#include <iostream>
#include <string>
#include "eca-console.h"
/**
* Plain text interface for the console
* mode ecasound.
*
* @author Kai Vehmanen
*/
class ECA_PLAIN_TEXT : public ECA_CONSOLE {
public:
/**
* Constructor.
*/
ECA_PLAIN_TEXT(std::ostream* ostr);
/**
* Virtual destructor.
*/
virtual ~ECA_PLAIN_TEXT(void);
/**
* Prints the text string 'msg'.
*/
virtual void print(const std::string& msg);
/**
* Prints the ecasound banner.
*/
virtual void print_banner(void);
/**
* Reads the next user command.
*
* @see last_command()
*/
virtual void read_command(const std::string& prompt);
/**
* Returns the last read user command.
*/
virtual const std::string& last_command(void) const;
private:
std::string last_cmd_rep;
std::ostream* ostream_repp;
};
#endif /* INCLUDED_ECA_PLAIN_TEXT_H */

View File

@ -0,0 +1,925 @@
// ------------------------------------------------------------------------
// ecasound.cpp: Console mode user interface to ecasound.
// Copyright (C) 2002-2010 Kai Vehmanen
//
// Attributes:
// eca-style-version: 3 (see Ecasound Programmer's Guide)
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <signal.h> /* POSIX: various signal functions */
#include <unistd.h> /* POSIX: sleep() */
#include <kvu_dbc.h>
#include <kvu_com_line.h>
#include <kvu_utils.h>
#include <eca-control-main.h>
#include <eca-control-mt.h>
#include <eca-error.h>
#include <eca-logger.h>
#include <eca-logger-default.h>
#include <eca-session.h>
#include <eca-version.h>
#ifdef ECA_USE_LIBLO
#include <eca-osc.h>
#endif
#include "eca-comhelp.h"
#include "eca-console.h"
#include "eca-curses.h"
#include "eca-neteci-server.h"
#include "eca-plaintext.h"
#include "textdebug.h"
#include "ecasound.h"
/**
* Check build time reqs
*/
#undef SIGNALS_CAN_BE_BLOCKED
#if defined(HAVE_SIGWAIT)
# if defined(HAVE_SIGPROCMASK) || defined(HAVE_PTHREAD_SIGMASK)
# define SIGNALS_CAN_BE_BLOCKED
# else
# error "Either pthread_sigmask() or sigprocmask() needs to be supported."
# error "One option to try is to undefine HAVE_SIGWAIT and retry compilation "
# error "with plain pause() support."
# endif
#elif defined(HAVE_PAUSE)
/* no op*/
#else
# error ""
#endif
/**
* Static/private function definitions
*/
static void ecasound_create_eca_objects(ECASOUND_RUN_STATE* state, COMMAND_LINE& cline);
static void ecasound_launch_neteci(ECASOUND_RUN_STATE* state);
static void ecasound_launch_osc(ECASOUND_RUN_STATE* state);
static int ecasound_pass_at_launch_commands(ECASOUND_RUN_STATE* state);
static void ecasound_main_loop_interactive(ECASOUND_RUN_STATE* state);
static void ecasound_main_loop_batch(ECASOUND_RUN_STATE* state);
void ecasound_parse_command_line(ECASOUND_RUN_STATE* state,
const COMMAND_LINE& clinein,
COMMAND_LINE* clineout);
static void ecasound_print_usage(void);
static void ecasound_print_version_banner(void);
static void ecasound_signal_setup(ECASOUND_RUN_STATE* state);
static void ecasound_signal_unblock(ECASOUND_RUN_STATE* state);
extern "C" {
static void* ecasound_watchdog_thread(void* arg);
static void ecasound_signal_handler(int signal);
}
/* Define to get exit debug traces */
// #define ENABLE_ECASOUND_EXIT_PROCESS_TRACES 1
/* Exit process has not yet started. */
#define ECASOUND_EXIT_PHASE_NONE 0
/* Termination will block until signal watchdog thread
* has exited. */
#define ECASOUND_EXIT_PHASE_WAIT_FOR_WD 1
/* Watchdog has terminated, only a single thread
* is left running. */
#define ECASOUND_EXIT_PHASE_ONE_THREAD 2
/* All resources freed, about to return from main(). */
#define ECASOUND_EXIT_PHASE_DONE 3
/**
* Global variable that is set to one of 'ECASOUND_EXIT_PHASE_*'
*
* When ecasound's main()
* function is about to exit (all engine threads have
* been terminated and only single thread aside the
* watchdog is left, and to '2' when all running state
* has been clearer in ~ECASOUND_RUN_STATE().
*/
static sig_atomic_t glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_NONE;
/* Global variable that is set to one, when common
* POSIX signals are blocked and watchdog thread is
* blocking on a call to pthread_sigmask(), sigprocmask(),
* or pause(). */
static sig_atomic_t glovar_wd_signals_blocked = 0;
/* Global variable counting how many SIGINT signals
* have been ignored. */
static sig_atomic_t glovar_soft_signals_ignored = 0;
/* Debuggin macros, see ENABLE_ECASOUND_EXIT_PROCESS_TRACES
* above */
#ifdef ENABLE_ECASOUND_EXIT_PROCESS_TRACES
#define TRACE_EXIT(x) do { x; } while(0)
#else
#define TRACE_EXIT(x) while(0) { x; }
#endif
/**
* Namespace imports
*/
using namespace std;
ECASOUND_RUN_STATE::ECASOUND_RUN_STATE(void)
: console(0),
control(0),
logger(0),
eciserver(0),
osc(0),
session(0),
launchcmds(0),
neteci_thread(0),
watchdog_thread(0),
lock(0),
exit_request(0),
signalset(0),
retval(ECASOUND_RETVAL_SUCCESS),
neteci_mode(false),
neteci_tcp_port(2868),
osc_mode(false),
osc_udp_port(-1),
keep_running_mode(false),
cerr_output_only_mode(false),
interactive_mode(false),
quiet_mode(false)
{
}
ECASOUND_RUN_STATE::~ECASOUND_RUN_STATE(void)
{
/* note: global variable */
DBC_CHECK(glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_ONE_THREAD);
if (control != 0) { delete control; control = 0; }
if (session != 0) { delete session; session = 0; }
if (launchcmds != 0) { delete launchcmds; launchcmds = 0; }
if (eciserver != 0) { delete eciserver; eciserver = 0; }
#ifdef ECA_USE_LIBLO
if (osc != 0) { delete osc; osc = 0; }
#endif
if (console != 0) { delete console; console = 0; }
if (neteci_thread != 0) { delete neteci_thread; neteci_thread = 0; }
if (watchdog_thread != 0) { delete watchdog_thread; watchdog_thread = 0; }
if (lock != 0) { delete lock; lock = 0; }
if (signalset != 0) { delete signalset; signalset = 0; }
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_DONE;
}
/**
* Function definitions
*/
int main(int argc, char *argv[])
{
ECASOUND_RUN_STATE state;
bool have_curses =
#if defined(ECA_PLATFORM_CURSES)
true
#else
false
#endif
;
/* 1. setup signals and the signal watchdog thread */
ecasound_signal_setup(&state);
/* 2. parse command-line args */
COMMAND_LINE* cline = new COMMAND_LINE(argc, argv);
COMMAND_LINE* clineout = new COMMAND_LINE();
ecasound_parse_command_line(&state, *cline, clineout);
delete cline; cline = 0;
/* 3. create console interface */
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
if (have_curses == true &&
state.quiet_mode != true &&
state.cerr_output_only_mode != true) {
state.console = new ECA_CURSES();
state.logger = new TEXTDEBUG();
}
else {
ostream* ostr = (state.cerr_output_only_mode == true) ? &cerr : &cout;
state.console = new ECA_PLAIN_TEXT(ostr);
state.logger = new ECA_LOGGER_DEFAULT(*ostr);
}
ECA_LOGGER::attach_logger(state.logger);
if (state.quiet_mode != true) {
/* 4. print banner */
state.console->print_banner();
}
/* 5. set default debug levels */
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::errors, true);
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::info, true);
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::subsystems, true);
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::eiam_return_values, true);
ECA_LOGGER::instance().set_log_level(ECA_LOGGER::module_names, true);
/* 6. create eca objects */
ecasound_create_eca_objects(&state, *clineout);
delete clineout; clineout = 0;
/* 7. enable remote control over socket connection */
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
/* 7.a) ... ECI over socket connection */
if (state.neteci_mode == true) {
ecasound_launch_neteci(&state);
}
/* 7.b) ... over OSC */
if (state.osc_mode == true) {
ecasound_launch_osc(&state);
}
}
/* 8. pass launch commands */
ecasound_pass_at_launch_commands(&state);
/* 9. start processing */
if (state.retval == ECASOUND_RETVAL_SUCCESS) {
if (state.interactive_mode == true)
ecasound_main_loop_interactive(&state);
else
ecasound_main_loop_batch(&state);
}
}
TRACE_EXIT(cerr << endl << "ecasound: out of mainloop..." << endl);
/* step: terminate neteci thread */
if (state.neteci_mode == true) {
/* wait until the NetECI thread has exited */
state.exit_request = 1;
if (state.neteci_thread)
pthread_join(*state.neteci_thread, NULL);
}
/* step: terminate the engine thread */
if (state.control != 0) {
if (state.control->is_running() == true) {
state.control->stop_on_condition();
}
if (state.control->is_connected() == true) {
state.control->disconnect_chainsetup();
}
}
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_WAIT_FOR_WD;
TRACE_EXIT(cerr << endl << "ecasound: joining watchdog..." << endl);
/* step: Send a signal to the watchdog thread to wake it uP */
pthread_kill(*state.watchdog_thread, SIGHUP);
/* step: Unblock signals for the main thread as well. At this
* point the engine threads have been already terminated,
* so we don't have to anymore worry about which thread
* gets the signals. */
ecasound_signal_unblock(&state);
pthread_join(*state.watchdog_thread, NULL);
TRACE_EXIT(cerr << endl << "ecasound: joined watchdog..." << endl);
glovar_ecasound_exit_phase = ECASOUND_EXIT_PHASE_ONE_THREAD;
DBC_CHECK(state.retval == ECASOUND_RETVAL_SUCCESS ||
state.retval == ECASOUND_RETVAL_INIT_FAILURE ||
state.retval == ECASOUND_RETVAL_START_ERROR ||
state.retval == ECASOUND_RETVAL_RUNTIME_ERROR);
TRACE_EXIT(cerr << endl << "ecasound: main() exiting with code " << state.retval << endl);
return state.retval;
}
/**
* Enters the main processing loop.
*/
void ecasound_create_eca_objects(ECASOUND_RUN_STATE* state,
COMMAND_LINE& cline)
{
DBC_REQUIRE(state != 0);
DBC_REQUIRE(state->console != 0);
try {
state->session = new ECA_SESSION(cline);
state->control = new ECA_CONTROL_MT(state->session);
DBC_ENSURE(state->session != 0);
DBC_ENSURE(state->control != 0);
}
catch(ECA_ERROR& e) {
state->console->print("---\necasound: ERROR: [" + e.error_section() + "] : \"" + e.error_message() + "\"\n");
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
}
}
/**
* Launches a background thread that allows NetECI
* clients to connect to the current ecasound
* session.
*/
void ecasound_launch_neteci(ECASOUND_RUN_STATE* state)
{
DBC_REQUIRE(state != 0);
// DBC_REQUIRE(state->console != 0);
// state->console->print("ecasound: starting the NetECI server.");
state->neteci_thread = new pthread_t;
state->lock = new pthread_mutex_t;
pthread_mutex_init(state->lock, NULL);
state->eciserver = new ECA_NETECI_SERVER(state);
int res = pthread_create(state->neteci_thread,
NULL,
ECA_NETECI_SERVER::launch_server_thread,
reinterpret_cast<void*>(state->eciserver));
if (res != 0) {
cerr << "ecasound: Warning! Unable to create a thread for control over socket connection (NetECI)." << endl;
delete state->neteci_thread; state->neteci_thread = 0;
delete state->lock; state->lock = 0;
delete state->eciserver; state->eciserver = 0;
}
// state->console->print("ecasound: NetECI server started");
}
/**
* Sets up and activates Ecasound OSC interface
*/
void ecasound_launch_osc(ECASOUND_RUN_STATE* state)
{
#ifdef ECA_USE_LIBLO
DBC_REQUIRE(state != 0);
state->osc = new ECA_OSC_INTERFACE (state->control, state->osc_udp_port);
if (state->osc)
state->osc->start();
#endif
}
static int ecasound_pass_at_launch_commands(ECASOUND_RUN_STATE* state)
{
if (state->launchcmds) {
std::vector<std::string>::const_iterator p = state->launchcmds->begin();
while(p != state->launchcmds->end()) {
struct eci_return_value retval;
state->control->command(*p, &retval);
state->control->print_last_value(&retval);
++p;
}
}
return 0;
}
static void ecasound_check_for_quit(ECASOUND_RUN_STATE* state, const string& cmd)
{
if (cmd == "quit" || cmd == "q") {
state->console->print("---\necasound: Exiting...");
state->exit_request = 1;
ECA_LOGGER::instance().flush();
}
}
/**
* The main processing loop for interactive use.
*/
void ecasound_main_loop_interactive(ECASOUND_RUN_STATE* state)
{
DBC_REQUIRE(state != 0);
DBC_REQUIRE(state->console != 0);
ECA_CONTROL_MAIN* ctrl = state->control;
while(state->exit_request == 0) {
state->console->read_command("ecasound ('h' for help)> ");
const string& cmd = state->console->last_command();
if (cmd.size() > 0 && state->exit_request == 0) {
struct eci_return_value retval;
ctrl->command(cmd, &retval);
ctrl->print_last_value(&retval);
ecasound_check_for_quit(state, cmd);
}
}
}
/**
* The main processing loop for noninteractive use.
*/
void ecasound_main_loop_batch(ECASOUND_RUN_STATE* state)
{
DBC_REQUIRE(state != 0);
DBC_REQUIRE(state->console != 0);
ECA_CONTROL_MAIN* ctrl = state->control;
struct eci_return_value connect_retval;
if (ctrl->is_selected() == true &&
ctrl->is_valid() == true) {
ctrl->connect_chainsetup(&connect_retval);
}
if (state->neteci_mode != true &&
state->osc_mode != true) {
/* case: 2.1: non-interactive, neither NetECI or OSC is used,
* so this thread can use 'ctrl' exclusively */
if (ctrl->is_connected() == true) {
if (!state->exit_request) {
int res = ctrl->run(!state->keep_running_mode);
if (res < 0) {
state->retval = ECASOUND_RETVAL_RUNTIME_ERROR;
cerr << "ecasound: Warning! Errors detected during processing." << endl;
}
}
}
else {
ctrl->print_last_value(&connect_retval);
state->retval = ECASOUND_RETVAL_START_ERROR;
}
}
else {
/* case: 2.2: non-interactive, NetECI active
*
* (special handling is needed as NetECI needs
* to submit atomic bundles of ECI commands and thus
* needs to be able to lock the ECA_CONTROL object
* for itself) */
int res = -1;
if (ctrl->is_connected() == true) {
res = ctrl->start();
}
/* note: if keep_running_mode is enabled, we do not
* exit even if there are errors during startup */
if (state->keep_running_mode != true &&
res < 0) {
state->retval = ECASOUND_RETVAL_START_ERROR;
state->exit_request = 1;
}
while(state->exit_request == 0) {
if (state->keep_running_mode != true &&
ctrl->is_finished() == true)
break;
/* note: sleep for one second and let the NetECI thread
* access the ECA_CONTROL object for a while */
kvu_sleep(1, 0);
}
ecasound_check_for_quit(state, "quit");
}
// cerr << endl << "ecasound: mainloop exiting..." << endl;
}
/**
* Parses the command lines options in 'cline'.
*/
void ecasound_parse_command_line(ECASOUND_RUN_STATE* state,
const COMMAND_LINE& cline,
COMMAND_LINE* clineout)
{
if (cline.size() < 2) {
ecasound_print_usage();
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
}
else {
cline.begin();
while(cline.end() != true) {
if (cline.current() == "-o:stdout" ||
cline.current() == "stdout") {
state->cerr_output_only_mode = true;
/* pass option to libecasound */
clineout->push_back(cline.current());
}
else if (cline.current() == "-d:0" ||
cline.current() == "-q") {
state->quiet_mode = true;
/* pass option to libecasound */
clineout->push_back(cline.current());
}
else if (cline.current() == "-c") {
state->interactive_mode = true;
}
else if (cline.current() == "-C") {
state->interactive_mode = false;
}
else if (cline.current() == "-D") {
state->cerr_output_only_mode = true;
}
else if (cline.current() == "--server" ||
cline.current() == "--daemon") {
/* note: --daemon* deprecated as of 2.6.0 */
state->neteci_mode = true;
}
else if (cline.current().compare(0, 2, "-E") == 0) {
cline.next();
if (cline.end() != true) {
state->launchcmds =
new std::vector<std::string>
(kvu_string_to_vector(cline.current(), ';'));
}
}
else if (cline.current().find("--server-tcp-port") != string::npos ||
cline.current().find("--daemon-port") != string::npos) {
std::vector<std::string> argpair =
kvu_string_to_vector(cline.current(), '=');
if (argpair.size() > 1) {
/* --server-tcp-port=XXXX */
/* note: --daemon* deprecated as of 2.6.0 */
state->neteci_tcp_port = atoi(argpair[1].c_str());
}
}
else if (cline.current() == "--no-server" ||
cline.current() == "--nodaemon") {
/* note: --daemon deprecated as of 2.6.0 */
state->neteci_mode = false;
}
else if (cline.current().find("--osc-udp-port") != string::npos) {
std::vector<std::string> argpair =
kvu_string_to_vector(cline.current(), '=');
if (argpair.size() > 1) {
/* --osc-udp-port=XXXX */
state->osc_udp_port = atoi(argpair[1].c_str());
fprintf(stdout,
"set UDP port based on %s to %d.\n", cline.current().c_str(), state->osc_udp_port);
}
#ifdef ECA_USE_LIBLO
state->osc_mode = true;
#else
state->osc_mode = false;
cerr << "ERROR: ecasound was built without OSC support" << endl;
#endif
}
else if (cline.current() == "-h" ||
cline.current() == "--help") {
ecasound_print_usage();
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
break;
}
else if (cline.current() == "-K" ||
cline.current() == "--keep-running") {
state->keep_running_mode = true;
}
else if (cline.current() == "--version") {
ecasound_print_version_banner();
state->retval = ECASOUND_RETVAL_INIT_FAILURE;
break;
}
else {
/* pass rest of the options to libecasound */
clineout->push_back(cline.current());
}
cline.next();
}
}
}
void ecasound_print_usage(void)
{
cout << ecasound_parameter_help();
}
void ecasound_print_version_banner(void)
{
cout << "ecasound v" << ecasound_library_version << endl;
cout << "Copyright (C) 1997-2010 Kai Vehmanen and others." << endl;
cout << "Ecasound comes with ABSOLUTELY NO WARRANTY." << endl;
cout << "You may redistribute copies of ecasound under the terms of the GNU" << endl;
cout << "General Public License. For more information about these matters, see" << endl;
cout << "the file named COPYING." << endl;
}
static void ecasound_signal_handler(int signal)
{
/* note: If either sigprocmask() or pthread_sigmask()
* is available, all relevant signals should be blocked
* and this handler should be never called until the final
* phase (ECASOUND_EXIT_PHASE_WAIT_FOR_WD) of the process
* termination starts.
*/
#if defined(SIGNALS_CAN_BE_BLOCKED)
if (glovar_wd_signals_blocked) {
TRACE_EXIT(cerr << "WARNING: ecasound_signal_handler entered, this should _NOT_ happen!";
cerr << " pid=" << getpid() << endl);
}
#else /* !SIGNALS_CAN_BE_BLOCKED */
{
static int ignored = 0;
TRACE_EXIT(cerr << "ecasound_signal_handler, built with pause(), ignore count "
<< ignored << endl);
/* note: When signal blocking is not possible, ignore
* the first two signal (1st is the user sent signal,
* and second is the SIGHUP from ecasound main(). If
* we receive a third one, only then it's time for
* the emergency exit. */
if (++ignored <= 2) {
return;
}
}
#endif
TRACE_EXIT(cerr << "Signal "
<< signal
<< " received in exit phase "
<< glovar_ecasound_exit_phase << endl);
/* note: In ECASOUND_EXIT_PHASE_WAIT_FOR_WD, the main() thread
* will send a signal to the watchdog and we need to
* ignore this properly (as it's an internally generated
* signal, not sent from an external source. */
if (glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_NONE ||
glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_ONE_THREAD ||
glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_DONE) {
if (signal == SIGINT &&
glovar_soft_signals_ignored == 0) {
cerr << endl
<< "NOTICE: SIGINT (ctrl-c) was received while terminating ecasound. If\n"
<< " another signal is received, the normal cleanup procedure will\n"
<< " be skipped and process will terminate immediately.\n";
glovar_soft_signals_ignored = 1;
return;
}
/* note: user needs to see this, not using TRACE_EXIT() macro */
cerr << endl
<< "WARNING: Signal was received while terminating ecasound, so exiting immediately!\n"
<< " Normal exit process is skipped, which may have some side-effects\n"
<< " (e.g. file header information not updated).\n";
/* step: Make sure the watchdog is woken up (a hack, but it seems
* exit() can in some cases be blocked when watchdog is
* still in sigwait() at this point. */
if (signal != SIGHUP)
kill(0, SIGHUP);
exit(ECASOUND_RETVAL_CLEANUP_ERROR);
}
}
/**
* Sets up a signal mask with sigaction() that blocks
* all common signals, and then launces a signal watchdog
* thread that waits on the blocked signals using
* sigwait().
*
* This design causes all non-fatal termination signals
* to be routed through a single thread. This signal watchdog
* in turn performs a clean exit upon receiving a signal.
* Without this setup, interactions between threads when handling
* would be harder to control (especially considering that
* ecasound needs to work on various different platforms).
*/
void ecasound_signal_setup(ECASOUND_RUN_STATE* state)
{
sigset_t* signalset;
/* man pthread_sigmask:
* "...signal actions and signal handlers, as set with
* sigaction(2), are shared between all threads"
*/
/* handle the following signals explicitly */
signalset = new sigset_t;
state->signalset = signalset;
sigemptyset(signalset);
sigaddset(signalset, SIGTERM);
sigaddset(signalset, SIGINT);
sigaddset(signalset, SIGHUP);
sigaddset(signalset, SIGPIPE);
sigaddset(signalset, SIGQUIT);
/* create a dummy signal handler */
struct sigaction blockaction;
blockaction.sa_handler = ecasound_signal_handler;
sigemptyset(&blockaction.sa_mask);
blockaction.sa_flags = 0;
/* attach the dummy handler to the following signals */
sigaction(SIGTERM, &blockaction, 0);
sigaction(SIGINT, &blockaction, 0);
sigaction(SIGHUP, &blockaction, 0);
sigaction(SIGPIPE, &blockaction, 0);
sigaction(SIGQUIT, &blockaction, 0);
#ifdef __FreeBSD__
/* ignore signals instead of passing them to our handler */
blockaction.sa_handler = SIG_IGN;
sigaction(SIGFPE, &blockaction, 0);
#endif
state->watchdog_thread = new pthread_t;
int res = pthread_create(state->watchdog_thread,
NULL,
ecasound_watchdog_thread,
reinterpret_cast<void*>(state));
if (res != 0) {
cerr << "ecasound: Warning! Unable to create watchdog thread." << endl;
}
/* block all signals in 'signalset' (see above) */
#if defined(HAVE_PTHREAD_SIGMASK)
pthread_sigmask(SIG_BLOCK, signalset, NULL);
#elif defined(HAVE_SIGPROCMASK)
sigprocmask(SIG_BLOCK, signalset, NULL);
#endif
}
static void ecasound_wd_wait_for_signals(ECASOUND_RUN_STATE* state)
{
#ifdef HAVE_SIGWAIT
{
/********************************************/
/* impl 1: sigwait() */
/********************************************/
int signalno = 0;
# if defined(HAVE_PTHREAD_SIGMASK)
pthread_sigmask(SIG_BLOCK, state->signalset, NULL);
# elif defined(HAVE_SIGPROCMASK)
/* the set of signals must be blocked before entering sigwait() */
sigprocmask(SIG_BLOCK, state->signalset, NULL);
# else
# error "Build environment error."
# endif
/* note: specific to sigwait() logic */
glovar_wd_signals_blocked = 1;
sigwait(state->signalset, &signalno);
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) Received signal " << signalno << ". Cleaning up and exiting..." << endl);
}
#elif HAVE_PAUSE /* !HAVE_SIGWAIT */
/**************************************************/
/* impl 2: pause() (alternative to sigwait())
***************************************************/
/* note: with pause() we don't set 'glovar_ecasound_signal_blocked' as
* it is normal to get signals when watchdog is running */
pause();
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) Received signal and returned from pause(). Cleaning up and Exiting..." << endl);
#else /* !HAVE_SIGWAIT && !HAVE_PAUSE */
# error "Build environment error."
#endif
}
/**
* Unblocks signals defined for 'state' for the calling thread,
* or with pthread_sigmask() is not supported, for the whole
* process.
*/
static void ecasound_signal_unblock(ECASOUND_RUN_STATE* state)
{
#ifdef HAVE_SIGWAIT
# if defined(HAVE_PTHREAD_SIGMASK)
pthread_sigmask(SIG_UNBLOCK, state->signalset, NULL);
# elif defined(HAVE_SIGPROCMASK)
/* the set of signals must be blocked before entering sigwait() */
sigprocmask(SIG_UNBLOCK, state->signalset, NULL);
# else
# error "Build environment error."
# endif
#endif
}
/**
* Runs a watchdog thread that centrally catches signals that
* will cause ecasound to exit.
*/
void* ecasound_watchdog_thread(void* arg)
{
ECASOUND_RUN_STATE* state = reinterpret_cast<ECASOUND_RUN_STATE*>(arg);
/* step: announce we are alive */
// cerr << "Watchdog-thread created, pid=" << getpid() << "." << endl;
/* step: block until a signal is received */
ecasound_wd_wait_for_signals(state);
/* step: unblock signals for watchdog thread after process
* termination has been started */
ecasound_signal_unblock(state);
glovar_wd_signals_blocked = 0;
/* step: signal the mainloop that process should terminate */
state->exit_request = 1;
/* step: in case mainloop is blocked running a batch job, we signal
* the engine thread directly and force it to terminate */
if (state->interactive_mode != true &&
state->control)
state->control->quit_async();
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) looping until main reaches join point..." << endl);
while(glovar_ecasound_exit_phase != 1) {
TRACE_EXIT(cerr << "(ecasound-watchdog) watchdog thread exiting (looping)..." << endl);
/* sleep for one 200ms */
kvu_sleep(0, 200000000);
/* note: A race condition exists between ECA_CONTROL_BASE
* quit_async() and run(): if quit_async() is called
* after run() has been entered, but before run()
* has managed to start the engine, it is possible engine
* may still be started.
*
* Thus we will keep checking the engine status until
* shutdown is really completed.
*
* For robustness, this check is also done when in
* interactive mode (in case the mainloop does not for
* some reason react to our exit request).
*/
if (state->control) {
if (state->control->is_engine_running() == true) {
state->control->quit_async();
}
}
}
/* note: this function should always exit before main() */
DBC_CHECK(glovar_ecasound_exit_phase == ECASOUND_EXIT_PHASE_WAIT_FOR_WD);
TRACE_EXIT(cerr << endl << "(ecasound-watchdog) thread exiting..." << endl);
return 0;
}

View File

@ -0,0 +1,72 @@
#ifndef INCLUDED_ECASOUND_H
#define INCLUDED_ECASOUND_H
#include <string>
#include <vector>
#include <pthread.h> /* POSIX: pthread_create() */
#include <signal.h> /* POSIX: sigaction(), sigwait(), sig_atomic_t */
class ECA_CONSOLE;
class ECA_CONTROL_MT;
class ECA_LOGGER_INTERFACE;
class ECA_NETECI_SERVER;
class ECA_SESSION;
class ECA_OSC_INTERFACE;
/**
* String constants
*/
#define ECASOUND_BANNER_ASTERISK_BAR "********************************************************************************\n"
#define ECASOUND_COPYRIGHT " (C) 1997-2010 Kai Vehmanen and others "
#define ECASOUND_RETVAL_SUCCESS 0 /**< Succesful run */
#define ECASOUND_RETVAL_INIT_FAILURE 1 /**< Unable to initialize */
#define ECASOUND_RETVAL_START_ERROR 2 /**< Unable to start processing */
#define ECASOUND_RETVAL_RUNTIME_ERROR 3 /**< Error during processing */
#define ECASOUND_RETVAL_CLEANUP_ERROR 4 /**< Error during cleanup/exit */
#define ECASOUND_TERM_WIDTH_DEFAULT 74
/**
* Type definitions
*/
/* Note! Check the initialization in ecasound.cpp if
* you change the state struct! */
class ECASOUND_RUN_STATE {
public:
ECASOUND_RUN_STATE(void);
~ECASOUND_RUN_STATE(void);
ECA_CONSOLE* console;
ECA_CONTROL_MT* control;
ECA_LOGGER_INTERFACE* logger;
ECA_NETECI_SERVER* eciserver;
ECA_OSC_INTERFACE* osc;
ECA_SESSION* session;
std::vector<std::string>* launchcmds;
pthread_t* neteci_thread;
pthread_t* watchdog_thread;
pthread_mutex_t* lock;
sig_atomic_t exit_request;
sigset_t* signalset;
int retval;
bool neteci_mode;
int neteci_tcp_port;
bool osc_mode;
int osc_udp_port;
bool keep_running_mode;
bool cerr_output_only_mode;
bool interactive_mode;
bool quiet_mode;
};
#endif /* INCLUDED_ECASOUND_H */

View File

@ -0,0 +1,222 @@
// ------------------------------------------------------------------------
// textdebug.cpp: Implementation of console logging subsystem.
// Copyright (C) 1999-2002,2004-2005,2008,2009 Kai Vehmanen
//
// Attributes:
// eca-style-version: 2
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>
#include <eca-logger-interface.h>
#include "ecasound.h"
#include "textdebug.h"
#ifdef ECA_USE_NCURSES_H
#include <ncurses.h>
#include <term.h> /* for setupterm() */
#elif ECA_USE_NCURSES_NCURSES_H
#include <ncurses/ncurses.h>
#include <ncurses/term.h> /* for setupterm() */
#elif ECA_USE_CURSES_H
#include <curses.h>
#include <term.h> /* for setupterm() */
#endif
using namespace std;
const static int tb_terminal_width_default = ECASOUND_TERM_WIDTH_DEFAULT;
/**
* Set terminal width used in pretty-printing ecasound console output.
*/
static int tb_terminal_width = tb_terminal_width_default;
/**
* Set terminal width used in pretty-printing banners and
* other purely cosmetic traces.
*/
static int tb_terminal_width_banners = tb_terminal_width_default;
/**
* Wraps text 'msg' by adding <newline> + "... " breaks so that none
* of the lines exceed 'width' characteds.
*/
static string tb_wrap(const string& msg, int width, int first_line_offset)
{
string result;
int wrlines = 0;
int offset = first_line_offset;
const string wrap_prefix ("... ");
size_t wrap_offset = wrap_prefix.size();
size_t begin, end;
#undef VERBOSE_DEBUG
#ifdef VERBOSE_DEBUG
fprintf(stdout,
"msg-in=<%s>\n",
msg.c_str());
#endif
for(begin = 0, end = 0; end < msg.size(); end++) {
if (begin == end)
continue;
/* case: trace messages has a newline itself, no wrap needed */
if (msg[end] == '\n') {
result += string(msg, begin, end - begin);
begin = end;
offset = 0;
++wrlines;
}
/* case: current line exceeds the width, wrap */
else if (end - begin + offset >= static_cast<size_t>(width)) {
string tmpstr (msg, begin, end - begin);
size_t last_space = tmpstr.find_last_of(" ");
/* case: spaces on the line, wrap before last token */
if (last_space != string::npos) {
result += string(tmpstr, 0, last_space);
begin += last_space + 1;
}
/* case: no spaces on the line, cannot wrap */
else {
/* note: with first line, wrap all input */
if (static_cast<size_t>(first_line_offset) > wrap_offset &&
wrlines == 0) {
/* nop */
}
else {
result += tmpstr;
begin = end;
}
}
result += "\n" + wrap_prefix;
offset = wrap_offset;
++wrlines;
}
}
if ((end - begin) > 0) {
result += string(msg, begin, end - begin);
}
#ifdef VERBOSE_DEBUG
fprintf(stdout,
"msg-out=<%s>\n",
result.c_str());
#endif
return result;
}
void TEXTDEBUG::stream(std::ostream* dos)
{
dostream_repp = dos;
}
std::ostream* TEXTDEBUG::stream(void)
{
return dostream_repp;
}
void TEXTDEBUG::do_flush(void)
{
dostream_repp->flush();
}
void TEXTDEBUG::do_msg(ECA_LOGGER::Msg_level_t level, const std::string& module_name, const std::string& log_message)
{
if (is_log_level_set(level) == true) {
int offset = 0;
if (level == ECA_LOGGER::subsystems) {
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
*dostream_repp << "- [ ";
putp(tigetstr("bold"));
offset += 4;
#endif
}
else if (module_name.size() > 0 &&
is_log_level_set(ECA_LOGGER::module_names) == true &&
level != ECA_LOGGER::eiam_return_values) {
std::string module_name_without_ext
= ECA_LOGGER_INTERFACE::filter_module_name(module_name);
*dostream_repp << "("
<< module_name_without_ext
<< ") ";
offset += module_name_without_ext.size() + 3;
}
*dostream_repp << tb_wrap(log_message, tb_terminal_width, offset);
if (level == ECA_LOGGER::subsystems) {
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
putp(tigetstr("sgr0"));
*dostream_repp << " ] ";
#else
*dostream_repp << " ] ";
#endif
offset += 3;
int fillchars = tb_terminal_width_banners
- (static_cast<int>(log_message.size()) + offset);
if (fillchars > 0) {
string fillstr (fillchars, '-');
*dostream_repp << fillstr;
}
}
*dostream_repp << endl;
}
}
TEXTDEBUG::TEXTDEBUG(void)
{
char *columns_str = getenv("COLUMNS");
if (columns_str) {
tb_terminal_width =
std::atoi(columns_str) - 4;
if (tb_terminal_width < 8)
tb_terminal_width = tb_terminal_width_default;
}
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
else if (COLS > 0) {
tb_terminal_width = COLS - 4;
}
#endif
if (tb_terminal_width <
tb_terminal_width_banners)
tb_terminal_width_banners = tb_terminal_width;
dostream_repp = &std::cout;
}
TEXTDEBUG::~TEXTDEBUG(void)
{
flush();
}

View File

@ -0,0 +1,28 @@
#ifndef INCLUDED_TEXTDEBUG_H
#define INCLUDED_TEXTDEBUG_H
#include <string>
#include <iostream>
#include <eca-logger-interface.h>
class TEXTDEBUG : public ECA_LOGGER_INTERFACE {
public:
virtual void do_msg(ECA_LOGGER::Msg_level_t level, const std::string& module_name, const std::string& log_message);
virtual void do_flush(void);
virtual void do_log_level_changed(void) { }
TEXTDEBUG(void);
virtual ~TEXTDEBUG(void);
private:
std::ostream* dostream_repp;
void stream(std::ostream* dos);
std::ostream* stream(void);
};
#endif /* INCLUDED_TEXTDEBUG_H */

View File

@ -0,0 +1,31 @@
# settings decided at build time
ecasound-version = @VERSION@
resource-directory = @pkgdatadir@
resource-file-genosc-envelopes = generic_oscillators
resource-file-effect-presets = effect_presets
ladspa-plugin-directory = @prefix@/lib/ladspa
# settings that affect creation of chainsetups (examples)
#midi-device = rawmidi,/dev/midi
#default-output = autodetect
#default-audio-format = s16_le,2,44100,i
#default-to-precise-sample-rates = false
default-mix-mode = avg
#bmode-defaults-nonrt = 1024,false,50,false,100000,true
#bmode-defaults-rt = 1024,true,50,true,100000,true
#bmode-defaults-rtlowlatency = 256,true,50,true,100000,false
# commands for launching external programs
#ext-cmd-text-editor = nano
#ext-cmd-text-editor-use-getenv = true
#ext-cmd-wave-editor = ecawave
#ext-cmd-mp3-input = mpg123 --stereo -r %s -b 0 -q -s -k %o %f
#ext-cmd-mp3-output = lame -b %B -s %S --little-endian -S - %f
#ext-cmd-ogg-input = ogg123 -d raw -o byteorder:%E --file=- %f
#ext-cmd-ogg-output = oggenc -b %B --raw --raw-bits=%b --raw-chan=%c --raw-rate=%s --raw-endianness 0 --output=%f -
#ext-cmd-mikmod = mikmod -d stdout -o 16s -q -f %s -p 0 --noloops %f
#ext-cmd-timidity = timidity -Or1S -id -s %s -o - %f
#ext-cmd-flac-input = flac -d -c %f
#ext-cmd-flac-output = flac -o %f -f --force-raw-format --channels=%c --bps=%b --sample-rate=%s --sign=%I --endian=%E -
#ext-cmd-aac-input = faad -w -b 1 -f 2 -d %f
#ext-cmd-aac-output = faac -P -o %f -R %s -B %b -C %c -

View File

@ -0,0 +1,736 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# ecatools/Makefile. Generated from Makefile.in by configure.
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
# ----------------------------------------------------------------------
# File: ecasound/ecatools/Makefile.am
# Description: Utility applications built on Ecasound libraries
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = .
top_srcdir = ..
pkgdatadir = $(datadir)/ecasound
pkglibdir = $(libdir)/ecasound
pkgincludedir = $(includedir)/ecasound
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = /usr/bin/install -c
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = x86_64-unknown-linux-gnu
host_triplet = x86_64-unknown-linux-gnu
bin_PROGRAMS = ecaconvert$(EXEEXT) \
ecafixdc$(EXEEXT) ecalength$(EXEEXT) \
ecanormalize$(EXEEXT) \
ecaplay$(EXEEXT) \
ecasignalview$(EXEEXT)
#bin_PROGRAMS = ecaconvert_debug$(EXEEXT) \
# ecafixdc_debug$(EXEEXT) \
# ecalength_debug$(EXEEXT) \
# ecanormalize_debug$(EXEEXT) \
# ecaplay_debug$(EXEEXT) \
# ecasignalview_debug$(EXEEXT)
subdir = ecatools
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_ecaconvert_OBJECTS = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
ecaconvert_OBJECTS = $(am_ecaconvert_OBJECTS)
am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc.la
#am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc_debug.la
am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils.la
#am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils_debug.la
ecaconvert_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am__objects_1 = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecaconvert_debug_OBJECTS = $(am__objects_1)
ecaconvert_debug_OBJECTS = $(am_ecaconvert_debug_OBJECTS)
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
ecaconvert_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecafixdc_OBJECTS = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
ecafixdc_OBJECTS = $(am_ecafixdc_OBJECTS)
ecafixdc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am__objects_2 = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecafixdc_debug_OBJECTS = $(am__objects_2)
ecafixdc_debug_OBJECTS = $(am_ecafixdc_debug_OBJECTS)
ecafixdc_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecalength_OBJECTS = ecalength.$(OBJEXT)
ecalength_OBJECTS = $(am_ecalength_OBJECTS)
ecalength_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_3 = ecalength.$(OBJEXT)
am_ecalength_debug_OBJECTS = $(am__objects_3)
ecalength_debug_OBJECTS = $(am_ecalength_debug_OBJECTS)
am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
ecalength_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
am_ecanormalize_OBJECTS = ecanormalize.$(OBJEXT) \
ecicpp_helpers.$(OBJEXT)
ecanormalize_OBJECTS = $(am_ecanormalize_OBJECTS)
ecanormalize_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2)
am__objects_4 = ecanormalize.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecanormalize_debug_OBJECTS = $(am__objects_4)
ecanormalize_debug_OBJECTS = $(am_ecanormalize_debug_OBJECTS)
ecanormalize_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecaplay_OBJECTS = ecaplay.$(OBJEXT)
ecaplay_OBJECTS = $(am_ecaplay_OBJECTS)
ecaplay_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_5 = ecaplay.$(OBJEXT)
am_ecaplay_debug_OBJECTS = $(am__objects_5)
ecaplay_debug_OBJECTS = $(am_ecaplay_debug_OBJECTS)
ecaplay_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
am_ecasignalview_OBJECTS = ecasignalview.$(OBJEXT) \
ecicpp_helpers.$(OBJEXT)
ecasignalview_OBJECTS = $(am_ecasignalview_OBJECTS)
am__DEPENDENCIES_5 =
ecasignalview_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_5) \
$(am__DEPENDENCIES_5)
am__objects_6 = ecasignalview.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecasignalview_debug_OBJECTS = $(am__objects_6)
ecasignalview_debug_OBJECTS = $(am_ecasignalview_debug_OBJECTS)
am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_5)
ecasignalview_debug_DEPENDENCIES = $(am__DEPENDENCIES_6)
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
SCRIPTS = $(bin_SCRIPTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
DIST_SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run aclocal-1.9
AMDEP_FALSE = #
AMDEP_TRUE =
AMTAR = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run tar
AM_CFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_CPPFLAGS = -D_REENTRANT -D_XOPEN_SOURCE=500
AM_CXXFLAGS = -ffast-math -fstrict-aliasing -DNDEBUG -DENABLE_DBC
AM_LDFLAGS =
AR = ar
ARTSC_CONFIG = none
AUTOCONF = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoconf
AUTOHEADER = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run autoheader
AUTOMAKE = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run automake-1.9
AWK = gawk
CC = gcc
CCDEPMODE = depmode=gcc3
CFLAGS = -g -O2
CPP = gcc -E
CPPFLAGS =
CXX = g++
CXXCPP = g++ -E
CXXDEPMODE = depmode=gcc3
CXXFLAGS = -g -O2
CYGPATH_W = echo
DEFS = -DHAVE_CONFIG_H
DEPDIR = .deps
DSYMUTIL =
ECA_AM_ALL_STATIC_FALSE =
ECA_AM_ALL_STATIC_TRUE = #
ECA_AM_COMPILE_ALSA_FALSE = #
ECA_AM_COMPILE_ALSA_TRUE =
ECA_AM_COMPILE_ARTS_FALSE =
ECA_AM_COMPILE_ARTS_TRUE = #
ECA_AM_COMPILE_AUDIOFILE_FALSE = #
ECA_AM_COMPILE_AUDIOFILE_TRUE =
ECA_AM_COMPILE_JACK_FALSE =
ECA_AM_COMPILE_JACK_TRUE = #
ECA_AM_COMPILE_OSS_FALSE = #
ECA_AM_COMPILE_OSS_TRUE =
ECA_AM_COMPILE_SAMPLERATE_FALSE = #
ECA_AM_COMPILE_SAMPLERATE_TRUE =
ECA_AM_COMPILE_SNDFILE_FALSE = #
ECA_AM_COMPILE_SNDFILE_TRUE =
ECA_AM_DEBUG_MODE_FALSE =
ECA_AM_DEBUG_MODE_TRUE = #
ECA_AM_DISABLE_EFFECTS_FALSE =
ECA_AM_DISABLE_EFFECTS_TRUE = #
ECA_AM_FEELING_EXPERIMENTAL_FALSE =
ECA_AM_FEELING_EXPERIMENTAL_TRUE = #
ECA_AM_KVUTILS_INSTALLED_FALSE = #
ECA_AM_KVUTILS_INSTALLED_TRUE =
ECA_AM_PYECASOUND_CEXT_FALSE =
ECA_AM_PYECASOUND_CEXT_TRUE = #
ECA_AM_PYECASOUND_INSTALL_FALSE = #
ECA_AM_PYECASOUND_INSTALL_TRUE =
ECA_AM_RUBYECASOUND_INSTALL_FALSE =
ECA_AM_RUBYECASOUND_INSTALL_TRUE = #
ECA_AM_SYSTEM_READLINE_FALSE = #
ECA_AM_SYSTEM_READLINE_TRUE =
ECA_AM_USE_NCURSES_FALSE = #
ECA_AM_USE_NCURSES_TRUE =
ECA_AM_USE_TERMCAP_FALSE =
ECA_AM_USE_TERMCAP_TRUE = #
ECA_S_EXTRA_CPPFLAGS =
ECA_S_EXTRA_LIBS = -lsamplerate -laudiofile -lsndfile -lasound
ECA_S_JACK_INCLUDES =
ECA_S_JACK_LIBS =
ECA_S_PREFIX = /usr/local
ECA_S_PYTHON_DLMODULES = /usr/lib/python2.6/lib-dynload
ECA_S_PYTHON_INCLUDES =
ECA_S_PYTHON_MODULES = /usr/lib/python2.6
ECA_S_READLINE_INCLUDES = /usr/include/readline
ECA_S_READLINE_LIBS = -lreadline -lhistory
ECA_S_RUBY_SITEDIR =
ECHO = echo
ECHO_C =
ECHO_N = -n
ECHO_T =
EGREP = /bin/grep -E
EXEEXT =
F77 =
FFLAGS =
GREP = /bin/grep
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_PROGRAM = ${INSTALL}
INSTALL_SCRIPT = ${INSTALL}
INSTALL_STRIP_PROGRAM = ${SHELL} $(install_sh) -c -s
LDFLAGS =
LIBECASOUNDC_VERSION = 2
LIBECASOUNDC_VERSION_AGE = 1
LIBECASOUND_VERSION = 22
LIBECASOUND_VERSION_AGE = 0
LIBKVUTILS_VERSION = 9
LIBKVUTILS_VERSION_AGE = 5
LIBLO_CFLAGS =
LIBLO_LIBS =
LIBOBJS =
LIBOIL_CFLAGS =
LIBOIL_LIBS =
LIBS = -ldl -lm -lrt -lpthread
LIBTOOL = $(SHELL) $(top_builddir)/libtool
LN_S = ln -s
LTLIBOBJS =
MAKEINFO = ${SHELL} /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/missing --run makeinfo
NMEDIT =
OBJEXT = o
PACKAGE = ecasound
PACKAGE_BUGREPORT =
PACKAGE_NAME = ecasound
PACKAGE_STRING = ecasound 2.7.2
PACKAGE_TARNAME = ecasound
PACKAGE_VERSION = 2.7.2
PATH_SEPARATOR = :
PKG_CONFIG = /usr/bin/pkg-config
PYTHONPATH = /usr/bin/python
RANLIB = ranlib
RUBYPATH = none
SED = /bin/sed
SET_MAKE =
SHELL = /bin/bash
STRIP = strip
VERSION = 2.7.2
ac_ct_CC = gcc
ac_ct_CXX = g++
ac_ct_F77 =
am__fastdepCC_FALSE = #
am__fastdepCC_TRUE =
am__fastdepCXX_FALSE = #
am__fastdepCXX_TRUE =
am__include = include
am__leading_dot = .
am__quote =
am__tar = ${AMTAR} chof - "$$tardir"
am__untar = ${AMTAR} xf -
bindir = ${exec_prefix}/bin
build = x86_64-unknown-linux-gnu
build_alias =
build_cpu = x86_64
build_os = linux-gnu
build_vendor = unknown
datadir = ${datarootdir}
datarootdir = ${prefix}/share
docdir = ${datarootdir}/doc/${PACKAGE_TARNAME}
dvidir = ${docdir}
exec_prefix = ${prefix}
host = x86_64-unknown-linux-gnu
host_alias =
host_cpu = x86_64
host_os = linux-gnu
host_vendor = unknown
htmldir = ${docdir}
includedir = ${prefix}/include
infodir = ${datarootdir}/info
install_sh = /home/naomi/dev-campcaster/campcaster/ecasound-2.7.2/install-sh
libdir = ${exec_prefix}/lib
libexecdir = ${exec_prefix}/libexec
localedir = ${datarootdir}/locale
localstatedir = ${prefix}/var
mandir = ${datarootdir}/man
mkdir_p = mkdir -p --
oldincludedir = /usr/include
pdfdir = ${docdir}
prefix = /usr/local
program_transform_name = s,x,x,
psdir = ${docdir}
sbindir = ${exec_prefix}/sbin
sharedstatedir = ${prefix}/com
sysconfdir = ${prefix}/etc
target_alias =
EXTRA_DIST = ecasound.el ecamonitor
libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
#libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
#libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
ncurses_library = -lncurses
#termcap_library = -ltermcap
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
bin_SCRIPTS = ecamonitor
# --
noinst_HEADERS = ecicpp_helpers.h
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecalength_SOURCES = ecalength.c
ecalength_LDADD = $(libecasoundc_path)
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecaplay_SOURCES = ecaplay.c
ecaplay_LDADD = $(libecasoundc_path)
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
# --
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
ecalength_debug_SOURCES = $(ecalength_SOURCES)
ecalength_debug_LDADD = $(ecalength_LDADD)
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
ecaplay_debug_LDADD = $(ecaplay_LDADD)
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecatools/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign ecatools/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
ecaconvert$(EXEEXT): $(ecaconvert_OBJECTS) $(ecaconvert_DEPENDENCIES)
@rm -f ecaconvert$(EXEEXT)
$(CXXLINK) $(ecaconvert_LDFLAGS) $(ecaconvert_OBJECTS) $(ecaconvert_LDADD) $(LIBS)
ecaconvert_debug$(EXEEXT): $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_DEPENDENCIES)
@rm -f ecaconvert_debug$(EXEEXT)
$(CXXLINK) $(ecaconvert_debug_LDFLAGS) $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_LDADD) $(LIBS)
ecafixdc$(EXEEXT): $(ecafixdc_OBJECTS) $(ecafixdc_DEPENDENCIES)
@rm -f ecafixdc$(EXEEXT)
$(CXXLINK) $(ecafixdc_LDFLAGS) $(ecafixdc_OBJECTS) $(ecafixdc_LDADD) $(LIBS)
ecafixdc_debug$(EXEEXT): $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_DEPENDENCIES)
@rm -f ecafixdc_debug$(EXEEXT)
$(CXXLINK) $(ecafixdc_debug_LDFLAGS) $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_LDADD) $(LIBS)
ecalength$(EXEEXT): $(ecalength_OBJECTS) $(ecalength_DEPENDENCIES)
@rm -f ecalength$(EXEEXT)
$(LINK) $(ecalength_LDFLAGS) $(ecalength_OBJECTS) $(ecalength_LDADD) $(LIBS)
ecalength_debug$(EXEEXT): $(ecalength_debug_OBJECTS) $(ecalength_debug_DEPENDENCIES)
@rm -f ecalength_debug$(EXEEXT)
$(LINK) $(ecalength_debug_LDFLAGS) $(ecalength_debug_OBJECTS) $(ecalength_debug_LDADD) $(LIBS)
ecanormalize$(EXEEXT): $(ecanormalize_OBJECTS) $(ecanormalize_DEPENDENCIES)
@rm -f ecanormalize$(EXEEXT)
$(CXXLINK) $(ecanormalize_LDFLAGS) $(ecanormalize_OBJECTS) $(ecanormalize_LDADD) $(LIBS)
ecanormalize_debug$(EXEEXT): $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_DEPENDENCIES)
@rm -f ecanormalize_debug$(EXEEXT)
$(CXXLINK) $(ecanormalize_debug_LDFLAGS) $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_LDADD) $(LIBS)
ecaplay$(EXEEXT): $(ecaplay_OBJECTS) $(ecaplay_DEPENDENCIES)
@rm -f ecaplay$(EXEEXT)
$(LINK) $(ecaplay_LDFLAGS) $(ecaplay_OBJECTS) $(ecaplay_LDADD) $(LIBS)
ecaplay_debug$(EXEEXT): $(ecaplay_debug_OBJECTS) $(ecaplay_debug_DEPENDENCIES)
@rm -f ecaplay_debug$(EXEEXT)
$(LINK) $(ecaplay_debug_LDFLAGS) $(ecaplay_debug_OBJECTS) $(ecaplay_debug_LDADD) $(LIBS)
ecasignalview$(EXEEXT): $(ecasignalview_OBJECTS) $(ecasignalview_DEPENDENCIES)
@rm -f ecasignalview$(EXEEXT)
$(CXXLINK) $(ecasignalview_LDFLAGS) $(ecasignalview_OBJECTS) $(ecasignalview_LDADD) $(LIBS)
ecasignalview_debug$(EXEEXT): $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_DEPENDENCIES)
@rm -f ecasignalview_debug$(EXEEXT)
$(CXXLINK) $(ecasignalview_debug_LDFLAGS) $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f $$d$$p; then \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
else :; fi; \
done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; for p in $$list; do \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
include ./$(DEPDIR)/ecaconvert.Po
include ./$(DEPDIR)/ecafixdc.Po
include ./$(DEPDIR)/ecalength.Po
include ./$(DEPDIR)/ecanormalize.Po
include ./$(DEPDIR)/ecaplay.Po
include ./$(DEPDIR)/ecasignalview.Po
include ./$(DEPDIR)/ecicpp_helpers.Po
.c.o:
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c $<
.c.obj:
if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=yes \
# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
# $(LTCOMPILE) -c -o $@ $<
.cpp.o:
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=no \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
# source='$<' object='$@' libtool=yes \
# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
# $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am: install-binPROGRAMS install-binSCRIPTS
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-binSCRIPTS install-data \
install-data-am install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-binSCRIPTS uninstall-info-am
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,94 @@
# ----------------------------------------------------------------------
# File: ecasound/ecatools/Makefile.am
# Description: Utility applications built on Ecasound libraries
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
EXTRA_DIST = ecasound.el ecamonitor
if ECA_AM_DEBUG_MODE
libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
else
libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
endif
if ECA_AM_USE_NCURSES
ncurses_library = -lncurses
endif
if ECA_AM_USE_TERMCAP
termcap_library = -ltermcap
endif
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
bin_SCRIPTS = ecamonitor
if ECA_AM_DEBUG_MODE
bin_PROGRAMS = ecaconvert_debug \
ecafixdc_debug \
ecalength_debug \
ecanormalize_debug \
ecaplay_debug \
ecasignalview_debug
else
bin_PROGRAMS = ecaconvert \
ecafixdc \
ecalength \
ecanormalize \
ecaplay \
ecasignalview
endif
# --
noinst_HEADERS = ecicpp_helpers.h
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecalength_SOURCES = ecalength.c
ecalength_LDADD = $(libecasoundc_path)
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecaplay_SOURCES = ecaplay.c
ecaplay_LDADD = $(libecasoundc_path)
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
# --
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
ecalength_debug_SOURCES = $(ecalength_SOURCES)
ecalength_debug_LDADD = $(ecalength_LDADD)
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
ecaplay_debug_LDADD = $(ecaplay_LDADD)
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install

View File

@ -0,0 +1,736 @@
# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
# 2003, 2004, 2005 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
@SET_MAKE@
# ----------------------------------------------------------------------
# File: ecasound/ecatools/Makefile.am
# Description: Utility applications built on Ecasound libraries
# License: GPL (see ecasound/{AUTHORS,COPYING})
# ----------------------------------------------------------------------
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name)
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@ECA_AM_DEBUG_MODE_FALSE@bin_PROGRAMS = ecaconvert$(EXEEXT) \
@ECA_AM_DEBUG_MODE_FALSE@ ecafixdc$(EXEEXT) ecalength$(EXEEXT) \
@ECA_AM_DEBUG_MODE_FALSE@ ecanormalize$(EXEEXT) \
@ECA_AM_DEBUG_MODE_FALSE@ ecaplay$(EXEEXT) \
@ECA_AM_DEBUG_MODE_FALSE@ ecasignalview$(EXEEXT)
@ECA_AM_DEBUG_MODE_TRUE@bin_PROGRAMS = ecaconvert_debug$(EXEEXT) \
@ECA_AM_DEBUG_MODE_TRUE@ ecafixdc_debug$(EXEEXT) \
@ECA_AM_DEBUG_MODE_TRUE@ ecalength_debug$(EXEEXT) \
@ECA_AM_DEBUG_MODE_TRUE@ ecanormalize_debug$(EXEEXT) \
@ECA_AM_DEBUG_MODE_TRUE@ ecaplay_debug$(EXEEXT) \
@ECA_AM_DEBUG_MODE_TRUE@ ecasignalview_debug$(EXEEXT)
subdir = ecatools
DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/configure.in
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
am_ecaconvert_OBJECTS = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
ecaconvert_OBJECTS = $(am_ecaconvert_OBJECTS)
@ECA_AM_DEBUG_MODE_FALSE@am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc.la
@ECA_AM_DEBUG_MODE_TRUE@am__DEPENDENCIES_1 = $(top_builddir)/libecasoundc/libecasoundc_debug.la
@ECA_AM_DEBUG_MODE_FALSE@am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils.la
@ECA_AM_DEBUG_MODE_TRUE@am__DEPENDENCIES_2 = $(top_builddir)/kvutils/libkvutils_debug.la
ecaconvert_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am__objects_1 = ecaconvert.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecaconvert_debug_OBJECTS = $(am__objects_1)
ecaconvert_debug_OBJECTS = $(am_ecaconvert_debug_OBJECTS)
am__DEPENDENCIES_3 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
ecaconvert_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecafixdc_OBJECTS = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
ecafixdc_OBJECTS = $(am_ecafixdc_OBJECTS)
ecafixdc_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
am__objects_2 = ecafixdc.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecafixdc_debug_OBJECTS = $(am__objects_2)
ecafixdc_debug_OBJECTS = $(am_ecafixdc_debug_OBJECTS)
ecafixdc_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecalength_OBJECTS = ecalength.$(OBJEXT)
ecalength_OBJECTS = $(am_ecalength_OBJECTS)
ecalength_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_3 = ecalength.$(OBJEXT)
am_ecalength_debug_OBJECTS = $(am__objects_3)
ecalength_debug_OBJECTS = $(am_ecalength_debug_OBJECTS)
am__DEPENDENCIES_4 = $(am__DEPENDENCIES_1)
ecalength_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
am_ecanormalize_OBJECTS = ecanormalize.$(OBJEXT) \
ecicpp_helpers.$(OBJEXT)
ecanormalize_OBJECTS = $(am_ecanormalize_OBJECTS)
ecanormalize_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2)
am__objects_4 = ecanormalize.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecanormalize_debug_OBJECTS = $(am__objects_4)
ecanormalize_debug_OBJECTS = $(am_ecanormalize_debug_OBJECTS)
ecanormalize_debug_DEPENDENCIES = $(am__DEPENDENCIES_3)
am_ecaplay_OBJECTS = ecaplay.$(OBJEXT)
ecaplay_OBJECTS = $(am_ecaplay_OBJECTS)
ecaplay_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_5 = ecaplay.$(OBJEXT)
am_ecaplay_debug_OBJECTS = $(am__objects_5)
ecaplay_debug_OBJECTS = $(am_ecaplay_debug_OBJECTS)
ecaplay_debug_DEPENDENCIES = $(am__DEPENDENCIES_4)
am_ecasignalview_OBJECTS = ecasignalview.$(OBJEXT) \
ecicpp_helpers.$(OBJEXT)
ecasignalview_OBJECTS = $(am_ecasignalview_OBJECTS)
am__DEPENDENCIES_5 =
ecasignalview_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_2) $(am__DEPENDENCIES_5) \
$(am__DEPENDENCIES_5)
am__objects_6 = ecasignalview.$(OBJEXT) ecicpp_helpers.$(OBJEXT)
am_ecasignalview_debug_OBJECTS = $(am__objects_6)
ecasignalview_debug_OBJECTS = $(am_ecasignalview_debug_OBJECTS)
am__DEPENDENCIES_6 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2) \
$(am__DEPENDENCIES_5) $(am__DEPENDENCIES_5)
ecasignalview_debug_DEPENDENCIES = $(am__DEPENDENCIES_6)
binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
SCRIPTS = $(bin_SCRIPTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
$(AM_LDFLAGS) $(LDFLAGS) -o $@
CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag=CXX --mode=compile $(CXX) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
CXXLD = $(CXX)
CXXLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
DIST_SOURCES = $(ecaconvert_SOURCES) $(ecaconvert_debug_SOURCES) \
$(ecafixdc_SOURCES) $(ecafixdc_debug_SOURCES) \
$(ecalength_SOURCES) $(ecalength_debug_SOURCES) \
$(ecanormalize_SOURCES) $(ecanormalize_debug_SOURCES) \
$(ecaplay_SOURCES) $(ecaplay_debug_SOURCES) \
$(ecasignalview_SOURCES) $(ecasignalview_debug_SOURCES)
HEADERS = $(noinst_HEADERS)
ETAGS = etags
CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@
AM_CFLAGS = @AM_CFLAGS@
AM_CPPFLAGS = @AM_CPPFLAGS@
AM_CXXFLAGS = @AM_CXXFLAGS@
AM_LDFLAGS = @AM_LDFLAGS@
AR = @AR@
ARTSC_CONFIG = @ARTSC_CONFIG@
AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
CPP = @CPP@
CPPFLAGS = @CPPFLAGS@
CXX = @CXX@
CXXCPP = @CXXCPP@
CXXDEPMODE = @CXXDEPMODE@
CXXFLAGS = @CXXFLAGS@
CYGPATH_W = @CYGPATH_W@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DSYMUTIL = @DSYMUTIL@
ECA_AM_ALL_STATIC_FALSE = @ECA_AM_ALL_STATIC_FALSE@
ECA_AM_ALL_STATIC_TRUE = @ECA_AM_ALL_STATIC_TRUE@
ECA_AM_COMPILE_ALSA_FALSE = @ECA_AM_COMPILE_ALSA_FALSE@
ECA_AM_COMPILE_ALSA_TRUE = @ECA_AM_COMPILE_ALSA_TRUE@
ECA_AM_COMPILE_ARTS_FALSE = @ECA_AM_COMPILE_ARTS_FALSE@
ECA_AM_COMPILE_ARTS_TRUE = @ECA_AM_COMPILE_ARTS_TRUE@
ECA_AM_COMPILE_AUDIOFILE_FALSE = @ECA_AM_COMPILE_AUDIOFILE_FALSE@
ECA_AM_COMPILE_AUDIOFILE_TRUE = @ECA_AM_COMPILE_AUDIOFILE_TRUE@
ECA_AM_COMPILE_JACK_FALSE = @ECA_AM_COMPILE_JACK_FALSE@
ECA_AM_COMPILE_JACK_TRUE = @ECA_AM_COMPILE_JACK_TRUE@
ECA_AM_COMPILE_OSS_FALSE = @ECA_AM_COMPILE_OSS_FALSE@
ECA_AM_COMPILE_OSS_TRUE = @ECA_AM_COMPILE_OSS_TRUE@
ECA_AM_COMPILE_SAMPLERATE_FALSE = @ECA_AM_COMPILE_SAMPLERATE_FALSE@
ECA_AM_COMPILE_SAMPLERATE_TRUE = @ECA_AM_COMPILE_SAMPLERATE_TRUE@
ECA_AM_COMPILE_SNDFILE_FALSE = @ECA_AM_COMPILE_SNDFILE_FALSE@
ECA_AM_COMPILE_SNDFILE_TRUE = @ECA_AM_COMPILE_SNDFILE_TRUE@
ECA_AM_DEBUG_MODE_FALSE = @ECA_AM_DEBUG_MODE_FALSE@
ECA_AM_DEBUG_MODE_TRUE = @ECA_AM_DEBUG_MODE_TRUE@
ECA_AM_DISABLE_EFFECTS_FALSE = @ECA_AM_DISABLE_EFFECTS_FALSE@
ECA_AM_DISABLE_EFFECTS_TRUE = @ECA_AM_DISABLE_EFFECTS_TRUE@
ECA_AM_FEELING_EXPERIMENTAL_FALSE = @ECA_AM_FEELING_EXPERIMENTAL_FALSE@
ECA_AM_FEELING_EXPERIMENTAL_TRUE = @ECA_AM_FEELING_EXPERIMENTAL_TRUE@
ECA_AM_KVUTILS_INSTALLED_FALSE = @ECA_AM_KVUTILS_INSTALLED_FALSE@
ECA_AM_KVUTILS_INSTALLED_TRUE = @ECA_AM_KVUTILS_INSTALLED_TRUE@
ECA_AM_PYECASOUND_CEXT_FALSE = @ECA_AM_PYECASOUND_CEXT_FALSE@
ECA_AM_PYECASOUND_CEXT_TRUE = @ECA_AM_PYECASOUND_CEXT_TRUE@
ECA_AM_PYECASOUND_INSTALL_FALSE = @ECA_AM_PYECASOUND_INSTALL_FALSE@
ECA_AM_PYECASOUND_INSTALL_TRUE = @ECA_AM_PYECASOUND_INSTALL_TRUE@
ECA_AM_RUBYECASOUND_INSTALL_FALSE = @ECA_AM_RUBYECASOUND_INSTALL_FALSE@
ECA_AM_RUBYECASOUND_INSTALL_TRUE = @ECA_AM_RUBYECASOUND_INSTALL_TRUE@
ECA_AM_SYSTEM_READLINE_FALSE = @ECA_AM_SYSTEM_READLINE_FALSE@
ECA_AM_SYSTEM_READLINE_TRUE = @ECA_AM_SYSTEM_READLINE_TRUE@
ECA_AM_USE_NCURSES_FALSE = @ECA_AM_USE_NCURSES_FALSE@
ECA_AM_USE_NCURSES_TRUE = @ECA_AM_USE_NCURSES_TRUE@
ECA_AM_USE_TERMCAP_FALSE = @ECA_AM_USE_TERMCAP_FALSE@
ECA_AM_USE_TERMCAP_TRUE = @ECA_AM_USE_TERMCAP_TRUE@
ECA_S_EXTRA_CPPFLAGS = @ECA_S_EXTRA_CPPFLAGS@
ECA_S_EXTRA_LIBS = @ECA_S_EXTRA_LIBS@
ECA_S_JACK_INCLUDES = @ECA_S_JACK_INCLUDES@
ECA_S_JACK_LIBS = @ECA_S_JACK_LIBS@
ECA_S_PREFIX = @ECA_S_PREFIX@
ECA_S_PYTHON_DLMODULES = @ECA_S_PYTHON_DLMODULES@
ECA_S_PYTHON_INCLUDES = @ECA_S_PYTHON_INCLUDES@
ECA_S_PYTHON_MODULES = @ECA_S_PYTHON_MODULES@
ECA_S_READLINE_INCLUDES = @ECA_S_READLINE_INCLUDES@
ECA_S_READLINE_LIBS = @ECA_S_READLINE_LIBS@
ECA_S_RUBY_SITEDIR = @ECA_S_RUBY_SITEDIR@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
ECHO_T = @ECHO_T@
EGREP = @EGREP@
EXEEXT = @EXEEXT@
F77 = @F77@
FFLAGS = @FFLAGS@
GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
LDFLAGS = @LDFLAGS@
LIBECASOUNDC_VERSION = @LIBECASOUNDC_VERSION@
LIBECASOUNDC_VERSION_AGE = @LIBECASOUNDC_VERSION_AGE@
LIBECASOUND_VERSION = @LIBECASOUND_VERSION@
LIBECASOUND_VERSION_AGE = @LIBECASOUND_VERSION_AGE@
LIBKVUTILS_VERSION = @LIBKVUTILS_VERSION@
LIBKVUTILS_VERSION_AGE = @LIBKVUTILS_VERSION_AGE@
LIBLO_CFLAGS = @LIBLO_CFLAGS@
LIBLO_LIBS = @LIBLO_LIBS@
LIBOBJS = @LIBOBJS@
LIBOIL_CFLAGS = @LIBOIL_CFLAGS@
LIBOIL_LIBS = @LIBOIL_LIBS@
LIBS = @LIBS@
LIBTOOL = @LIBTOOL@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
PACKAGE_NAME = @PACKAGE_NAME@
PACKAGE_STRING = @PACKAGE_STRING@
PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHONPATH = @PYTHONPATH@
RANLIB = @RANLIB@
RUBYPATH = @RUBYPATH@
SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
VERSION = @VERSION@
ac_ct_CC = @ac_ct_CC@
ac_ct_CXX = @ac_ct_CXX@
ac_ct_F77 = @ac_ct_F77@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
build_alias = @build_alias@
build_cpu = @build_cpu@
build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
datarootdir = @datarootdir@
docdir = @docdir@
dvidir = @dvidir@
exec_prefix = @exec_prefix@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
libdir = @libdir@
libexecdir = @libexecdir@
localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
oldincludedir = @oldincludedir@
pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
EXTRA_DIST = ecasound.el ecamonitor
@ECA_AM_DEBUG_MODE_FALSE@libkvutils_path = $(top_builddir)/kvutils/libkvutils.la
@ECA_AM_DEBUG_MODE_TRUE@libkvutils_path = $(top_builddir)/kvutils/libkvutils_debug.la
@ECA_AM_DEBUG_MODE_FALSE@libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc.la
@ECA_AM_DEBUG_MODE_TRUE@libecasoundc_path = $(top_builddir)/libecasoundc/libecasoundc_debug.la
@ECA_AM_USE_NCURSES_TRUE@ncurses_library = -lncurses
@ECA_AM_USE_TERMCAP_TRUE@termcap_library = -ltermcap
INCLUDES = -I$(srcdir) -I$(top_srcdir) -I$(top_srcdir)/kvutils -I$(top_srcdir)/libecasound -I$(top_srcdir)/libecasoundc
bin_SCRIPTS = ecamonitor
# --
noinst_HEADERS = ecicpp_helpers.h
ecaconvert_SOURCES = ecaconvert.cpp ecicpp_helpers.cpp
ecaconvert_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecafixdc_SOURCES = ecafixdc.cpp ecicpp_helpers.cpp
ecafixdc_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecalength_SOURCES = ecalength.c
ecalength_LDADD = $(libecasoundc_path)
ecanormalize_SOURCES = ecanormalize.cpp ecicpp_helpers.cpp
ecanormalize_LDADD = $(libecasoundc_path) $(libkvutils_path)
ecaplay_SOURCES = ecaplay.c
ecaplay_LDADD = $(libecasoundc_path)
ecasignalview_SOURCES = ecasignalview.cpp ecicpp_helpers.cpp
ecasignalview_LDADD = $(libecasoundc_path) $(libkvutils_path) $(termcap_library) $(ncurses_library)
# --
ecaconvert_debug_SOURCES = $(ecaconvert_SOURCES)
ecaconvert_debug_LDADD = $(ecaconvert_LDADD)
ecafixdc_debug_SOURCES = $(ecafixdc_SOURCES)
ecafixdc_debug_LDADD = $(ecafixdc_LDADD)
ecalength_debug_SOURCES = $(ecalength_SOURCES)
ecalength_debug_LDADD = $(ecalength_LDADD)
ecanormalize_debug_SOURCES = $(ecanormalize_SOURCES)
ecanormalize_debug_LDADD = $(ecanormalize_LDADD)
ecanormalize_debug_LDFLAGS = $(ecanormalize_LDFLAGS)
ecaplay_debug_SOURCES = $(ecaplay_SOURCES)
ecaplay_debug_LDADD = $(ecaplay_LDADD)
ecasignalview_debug_SOURCES = $(ecasignalview_SOURCES)
ecasignalview_debug_LDADD = $(ecasignalview_LDADD)
all: all-am
.SUFFIXES:
.SUFFIXES: .c .cpp .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
*$$dep*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
&& exit 0; \
exit 1;; \
esac; \
done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign ecatools/Makefile'; \
cd $(top_srcdir) && \
$(AUTOMAKE) --foreign ecatools/Makefile
.PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
*) \
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
esac;
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(top_srcdir)/configure: $(am__configure_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
install-binPROGRAMS: $(bin_PROGRAMS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_PROGRAMS)'; for p in $$list; do \
p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
if test -f $$p \
|| test -f $$p1 \
; then \
f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
else :; fi; \
done
uninstall-binPROGRAMS:
@$(NORMAL_UNINSTALL)
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
clean-binPROGRAMS:
@list='$(bin_PROGRAMS)'; for p in $$list; do \
f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
ecaconvert$(EXEEXT): $(ecaconvert_OBJECTS) $(ecaconvert_DEPENDENCIES)
@rm -f ecaconvert$(EXEEXT)
$(CXXLINK) $(ecaconvert_LDFLAGS) $(ecaconvert_OBJECTS) $(ecaconvert_LDADD) $(LIBS)
ecaconvert_debug$(EXEEXT): $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_DEPENDENCIES)
@rm -f ecaconvert_debug$(EXEEXT)
$(CXXLINK) $(ecaconvert_debug_LDFLAGS) $(ecaconvert_debug_OBJECTS) $(ecaconvert_debug_LDADD) $(LIBS)
ecafixdc$(EXEEXT): $(ecafixdc_OBJECTS) $(ecafixdc_DEPENDENCIES)
@rm -f ecafixdc$(EXEEXT)
$(CXXLINK) $(ecafixdc_LDFLAGS) $(ecafixdc_OBJECTS) $(ecafixdc_LDADD) $(LIBS)
ecafixdc_debug$(EXEEXT): $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_DEPENDENCIES)
@rm -f ecafixdc_debug$(EXEEXT)
$(CXXLINK) $(ecafixdc_debug_LDFLAGS) $(ecafixdc_debug_OBJECTS) $(ecafixdc_debug_LDADD) $(LIBS)
ecalength$(EXEEXT): $(ecalength_OBJECTS) $(ecalength_DEPENDENCIES)
@rm -f ecalength$(EXEEXT)
$(LINK) $(ecalength_LDFLAGS) $(ecalength_OBJECTS) $(ecalength_LDADD) $(LIBS)
ecalength_debug$(EXEEXT): $(ecalength_debug_OBJECTS) $(ecalength_debug_DEPENDENCIES)
@rm -f ecalength_debug$(EXEEXT)
$(LINK) $(ecalength_debug_LDFLAGS) $(ecalength_debug_OBJECTS) $(ecalength_debug_LDADD) $(LIBS)
ecanormalize$(EXEEXT): $(ecanormalize_OBJECTS) $(ecanormalize_DEPENDENCIES)
@rm -f ecanormalize$(EXEEXT)
$(CXXLINK) $(ecanormalize_LDFLAGS) $(ecanormalize_OBJECTS) $(ecanormalize_LDADD) $(LIBS)
ecanormalize_debug$(EXEEXT): $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_DEPENDENCIES)
@rm -f ecanormalize_debug$(EXEEXT)
$(CXXLINK) $(ecanormalize_debug_LDFLAGS) $(ecanormalize_debug_OBJECTS) $(ecanormalize_debug_LDADD) $(LIBS)
ecaplay$(EXEEXT): $(ecaplay_OBJECTS) $(ecaplay_DEPENDENCIES)
@rm -f ecaplay$(EXEEXT)
$(LINK) $(ecaplay_LDFLAGS) $(ecaplay_OBJECTS) $(ecaplay_LDADD) $(LIBS)
ecaplay_debug$(EXEEXT): $(ecaplay_debug_OBJECTS) $(ecaplay_debug_DEPENDENCIES)
@rm -f ecaplay_debug$(EXEEXT)
$(LINK) $(ecaplay_debug_LDFLAGS) $(ecaplay_debug_OBJECTS) $(ecaplay_debug_LDADD) $(LIBS)
ecasignalview$(EXEEXT): $(ecasignalview_OBJECTS) $(ecasignalview_DEPENDENCIES)
@rm -f ecasignalview$(EXEEXT)
$(CXXLINK) $(ecasignalview_LDFLAGS) $(ecasignalview_OBJECTS) $(ecasignalview_LDADD) $(LIBS)
ecasignalview_debug$(EXEEXT): $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_DEPENDENCIES)
@rm -f ecasignalview_debug$(EXEEXT)
$(CXXLINK) $(ecasignalview_debug_LDFLAGS) $(ecasignalview_debug_OBJECTS) $(ecasignalview_debug_LDADD) $(LIBS)
install-binSCRIPTS: $(bin_SCRIPTS)
@$(NORMAL_INSTALL)
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@list='$(bin_SCRIPTS)'; for p in $$list; do \
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
if test -f $$d$$p; then \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
$(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
else :; fi; \
done
uninstall-binSCRIPTS:
@$(NORMAL_UNINSTALL)
@list='$(bin_SCRIPTS)'; for p in $$list; do \
f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
rm -f "$(DESTDIR)$(bindir)/$$f"; \
done
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecaconvert.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecafixdc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecalength.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecanormalize.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecaplay.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecasignalview.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ecicpp_helpers.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
.c.obj:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
.c.lo:
@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
.cpp.o:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
.cpp.obj:
@am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
.cpp.lo:
@am__fastdepCXX_TRUE@ if $(LTCXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
mostlyclean-libtool:
-rm -f *.lo
clean-libtool:
-rm -rf .libs _libs
distclean-libtool:
-rm -f libtool
uninstall-info-am:
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
test -n "$$unique" || unique=$$empty_fix; \
$(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
$$tags $$unique; \
fi
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
$$tags $$unique
GTAGS:
here=`$(am__cd) $(top_builddir) && pwd` \
&& cd $(top_srcdir) \
&& gtags -i $(GTAGS_ARGS) $$here
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
case $$file in \
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
esac; \
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
$(mkdir_p) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
if test -d $$d/$$file; then \
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
fi; \
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
else \
test -f $(distdir)/$$file \
|| cp -p $$d/$$file $(distdir)/$$file \
|| exit 1; \
fi; \
done
check-am: all-am
check: check-am
all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS)
installdirs:
for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \
test -z "$$dir" || $(mkdir_p) "$$dir"; \
done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
uninstall: uninstall-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
clean-generic:
distclean-generic:
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-libtool distclean-tags
dvi: dvi-am
dvi-am:
html: html-am
info: info-am
info-am:
install-data-am:
install-exec-am: install-binPROGRAMS install-binSCRIPTS
install-info: install-info-am
install-man:
installcheck-am:
maintainer-clean: maintainer-clean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
mostlyclean-am: mostlyclean-compile mostlyclean-generic \
mostlyclean-libtool
pdf: pdf-am
pdf-am:
ps: ps-am
ps-am:
uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \
uninstall-info-am
.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
clean-generic clean-libtool ctags distclean distclean-compile \
distclean-generic distclean-libtool distclean-tags distdir dvi \
dvi-am html html-am info info-am install install-am \
install-binPROGRAMS install-binSCRIPTS install-data \
install-data-am install-exec install-exec-am install-info \
install-info-am install-man install-strip installcheck \
installcheck-am installdirs maintainer-clean \
maintainer-clean-generic mostlyclean mostlyclean-compile \
mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
tags uninstall uninstall-am uninstall-binPROGRAMS \
uninstall-binSCRIPTS uninstall-info-am
# --
# special targets with dependency tracking
ecainstall:
$(MAKE) -C $(srcdir)/../libecasound -q 2>/dev/null || make -C $(srcdir)/../libecasound
$(MAKE) -C $(srcdir)/../kvutils -q 2>/dev/null || make -C $(srcdir)/../kvutils
$(MAKE) install
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

View File

@ -0,0 +1,117 @@
// ------------------------------------------------------------------------
// ecaconvert.cpp: A simple command-line tool for converting
// audio files.
// Copyright (C) 2000,2002,2005-2006 Kai Vehmanen
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <string>
#include <cstdio>
#include <kvutils/kvu_com_line.h>
#include <kvutils/kvu_numtostr.h>
#include <eca-control-interface.h>
#include "ecicpp_helpers.h"
/**
* Function declarations
*/
int main(int argc, char *argv[]);
void print_usage(void);
using std::cerr;
using std::cout;
using std::endl;
using std::string;
static const string ecatools_play_version = "20050316-18";
int main(int argc, char *argv[])
{
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
if (cline.size() < 2) {
print_usage();
return(1);
}
string filename;
ECA_CONTROL_INTERFACE eci;
cline.begin();
cline.next(); // skip the program name
string extension (".raw");
if (cline.end() != true) {
extension = cline.current();
cline.next();
}
while(cline.end() != true) {
filename = cline.current();
cout << "Converting file \"" << filename << "\" --> ";
cout << "\"" << filename + extension << "\"." << endl;
eci.command("cs-add default");
eci.command("c-add default");
string format;
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
cout << "Using audio format -f:" << format << "\n";
if (ecicpp_add_output(&eci, filename + extension, format) < 0) break;
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
break;
}
cout << "Starting processing...\n";
// blocks until processing is done
eci.command("run");
cout << "Processing finished.\n";
eci.command("cs-disconnect");
eci.command("cs-select default");
eci.command("cs-remove");
cline.next();
}
return(0);
}
void print_usage(void)
{
cerr << "****************************************************************************\n";
cerr << "* ecaconvert, v" << ecatools_play_version << " (" << VERSION << ")\n";
cerr << "* (C) 2000-2004 Kai Vehmanen, released under GPL licence \n";
cerr << "****************************************************************************\n";
cerr << "\nUSAGE: ecaconvert .extension file1 [ file2, ... fileN ]\n\n";
}

View File

@ -0,0 +1,244 @@
// ------------------------------------------------------------------------
// ecatools-fixdc.cpp: A simple command-line tools for fixing DC-offset.
// Copyright (C) 1999-2003,2005-2006 Kai Vehmanen
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <cmath> /* fabs() */
#include <signal.h>
#include <stdlib.h>
#include <kvutils/kvu_dbc.h>
#include <kvutils/kvu_com_line.h>
#include <kvutils/kvu_temporary_file_directory.h>
#include <kvutils/kvu_numtostr.h>
#include <kvutils/kvu_utils.h>
#include <eca-control-interface.h>
#include "ecicpp_helpers.h"
using std::cerr;
using std::cout;
using std::endl;
using std::string;
/**
* Function declarations
*/
int main(int argc, char *argv[]);
static void ecafixdc_print_usage(void);
static void ecafixdc_signal_handler(int signum);
/**
* Definitions and options
*/
#define ECAFIXDC_PHASE_ANALYSIS 0
#define ECAFIXDC_PHASE_PROCESSING 1
#define ECAFIXDC_PHASE_MAX 2
static const string ecatools_fixdc_version = "20050316-30";
static string ecatools_fixdc_tempfile;
/**
* Function definitions
*/
int main(int argc, char *argv[])
{
struct sigaction es_handler;
es_handler.sa_handler = ecafixdc_signal_handler;
sigemptyset(&es_handler.sa_mask);
es_handler.sa_flags = 0;
sigaction(SIGTERM, &es_handler, 0);
sigaction(SIGINT, &es_handler, 0);
sigaction(SIGQUIT, &es_handler, 0);
sigaction(SIGABRT, &es_handler, 0);
struct sigaction ign_handler;
ign_handler.sa_handler = SIG_IGN;
sigemptyset(&ign_handler.sa_mask);
ign_handler.sa_flags = 0;
/* ignore the following signals */
sigaction(SIGPIPE, &ign_handler, 0);
sigaction(SIGFPE, &ign_handler, 0);
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
if (cline.size() < 2) {
ecafixdc_print_usage();
return(1);
}
std::string filename;
std::string tempfile;
std::vector<double> dcfix_values;
int chcount = 0;
ECA_CONTROL_INTERFACE eci;
TEMPORARY_FILE_DIRECTORY tempfile_dir_rep;
string tmpdir ("ecatools-");
char* tmp_p = getenv("LOGNAME");
if (tmp_p == NULL) tmp_p = getenv("USER");
if (tmp_p != NULL) {
tmpdir += string(tmp_p);
tempfile_dir_rep.reserve_directory(tmpdir);
}
if (tempfile_dir_rep.is_valid() != true) {
cerr << "---\nError while creating temporary directory \"" << tmpdir << "\". Exiting...\n";
return(0);
}
cline.begin();
cline.next(); // skip the program name
while(cline.end() == false) {
filename = cline.current();
ecatools_fixdc_tempfile = tempfile_dir_rep.create_filename("fixdc-tmp", ".wav");
for(int m = 0;m < ECAFIXDC_PHASE_MAX; m++) {
eci.command("cs-add default");
eci.command("c-add default");
if (m == ECAFIXDC_PHASE_ANALYSIS) {
cout << "Calculating DC-offset for file \"" << filename << "\".\n";
string format;
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
cout << "Using audio format -f:" << format << "\n";
chcount = ecicpp_format_channels(format);
dcfix_values.resize(chcount);
cout << "Setting up " << chcount << " separate channels for analysis." << endl;
cout << "Opening temp file \"" << ecatools_fixdc_tempfile << "\".\n";
if (ecicpp_add_output(&eci, ecatools_fixdc_tempfile, format) < 0) break;
eci.command("cop-add -ezf");
eci.command("cop-list");
if (eci.last_string_list().size() != 1) {
cerr << eci.last_error() << endl;
cerr << "---\nError while adding DC-Find (-ezf) chainop. Exiting...\n";
break;
}
}
else {
// FIXME: list all channels (remember to fix audiofx_misc.cpp dcfix)
cout << "Fixing DC-offset \"" << filename << ".\n";
string format;
if (ecicpp_add_file_input(&eci, ecatools_fixdc_tempfile, &format) < 0) break;
cout << "Using audio format -f:" << format << "\n";
if (ecicpp_add_output(&eci, filename, format) < 0) break;
string dcfixstr;
for(int n = 0; n < chcount; n++) {
dcfixstr += kvu_numtostr(dcfix_values[n]) + ",";
}
eci.command("cop-add -ezx:" + kvu_numtostr(chcount) + "," + dcfixstr);
eci.command("cop-list");
if (eci.last_string_list().size() != 1) {
cerr << eci.last_error() << endl;
cerr << "---\nError while adding DC-Fix (-ezx) chainop. Exiting...\n";
break;
}
}
cout << "Starting processing...\n";
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
break;
}
else {
// blocks until processing is done
eci.command("run");
}
cout << "Processing finished.\n";
if (m == ECAFIXDC_PHASE_ANALYSIS) {
DBC_CHECK(static_cast<int>(dcfix_values.size()) >= chcount);
double maxoffset = 0.0f;
for(int nm = 0; nm < chcount; nm++) {
eci.command("cop-select 1");
eci.command("copp-select " + kvu_numtostr(nm + 1));
eci.command("copp-get");
dcfix_values[nm] = eci.last_float();
if (fabs(dcfix_values[nm]) > maxoffset) maxoffset = fabs(dcfix_values[nm]);
cout << "DC-offset for channel " << nm + 1 << " is " <<
kvu_numtostr(dcfix_values[nm], 4) << "." << endl;
}
if (maxoffset <= 0.0f) {
cout << "File \"" << filename << "\" has no DC-offset. Skipping.";
eci.command("cs-disconnect");
eci.command("cs-select default");
eci.command("cs-remove");
break;
}
}
eci.command("cs-disconnect");
eci.command("cs-select default");
eci.command("cs-remove");
}
remove(ecatools_fixdc_tempfile.c_str());
cline.next();
}
return(0);
}
static void ecafixdc_print_usage(void)
{
std::cerr << "****************************************************************************\n";
std::cerr << "* ecafixdc, v" << ecatools_fixdc_version << " (" << VERSION << ")\n";
std::cerr << "* (C) 1997-2004 Kai Vehmanen, released under the GPL license\n";
std::cerr << "****************************************************************************\n";
std::cerr << "\nUSAGE: ecafixdc file1 [ file2, ... fileN ]\n\n";
}
static void ecafixdc_signal_handler(int signum)
{
std::cerr << "Unexpected interrupt... cleaning up.\n";
remove(ecatools_fixdc_tempfile.c_str());
exit(1);
}

View File

@ -0,0 +1,340 @@
/*
This is ecalength, a few lines of code pompously named so because they
let one retrieve the length of an audio file from the command line
using ecasound's engine.
Limitations:
- It will only work correctly if the audio file is at a sampling rate
of 44100 hz, unless the file is a wave file; for other formats such
as .au, .raw and .cdr that have a sr other than 44100 the format needs
to be specified with the -a switch.
NOTE: mp3 files do have sr information in their headers but
unfortunately ecasound currently seems unable to parse this information
correctly. :(
- It is not foolproof, feeding it with something other than an audio
file WILL result in ugly things being spewed back.
(A bit better)
- A thousand more that I haven't thought of.
Please post back any improvement you make; I can be reached at:
observer@colba.net
note: Compile it with:
gcc -Wall -o ecalength ecalength.c `libecasoundc-config --cflags --libs`
* updated: Thu May 10 15:56:18 EDT 2001
- Now works with the new ai/ao scheme.
- Switches implemented, made suitable for scripting.
- Format querying/setting.
- Better error handling.
* updated: Wed Nov 14 23:26:19 EST 2001
- New option -su lets us return the file's length in samples.
(This breaks compatibility with stable series.)
- Reworked the comment above to say that basically only wave files are able
to self-adjust.
- Started to wondered whether my nice options structure isn't a bit too
unobvious for anyone else than me. (???)
- Help screen's getting a bit long, I have to scrollback to see the error
message. (???) (addressed)
* updated: Thu Nov 15 11:51:35 EST 2001
- Tried to format the code a bit better however hopeless it looks, tried to
comment it a bit.
- Tried to catch wrong switches a bit better.
- Only print full help message when no other message is being spewed.
* updated: Sun Jan 6 14:37:02 EST 2002
- Woo! Ecasound's internals now support quoting, had to take advantage of this.
* updated: Mon Apr 29 02:41:13 EEST 2002
- Renamed to ecalength.cpp to avoid troubles with linking ecalength
against uninstalled libecasoundc.
* updated: Thu Oct 31 17:41:05 EET 2002
- Renamed to ecalength.c. Updated the compilation instructions.
*/
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h> /* exit() */
#include "ecasoundc.h"
#define FALSE 0
#define TRUE 1
void make_human(int length, unsigned int *min, unsigned char *sec);
void print_help(char* name);
void print_usage(char* name);
struct options {
char adjust;
char format;
char total;
char script;
char human;
char bits;
char ccount;
char rate;
char samples;
};
int main(int argc, char *argv[]) {
char cmd[512], fstring[16], status = 0, *optstr = "ftsmhbcra:u";
int curopt, curarg;
unsigned char sec;
float curfilelength, totlength = 0;
unsigned int min;
FILE *file;
struct options opts;
/* No surprises please */
opts.adjust = FALSE;
opts.format = FALSE;
opts.total = FALSE;
opts.script = FALSE;
opts.human = FALSE;
opts.bits = FALSE;
opts.ccount = FALSE;
opts.rate = FALSE;
opts.samples = FALSE;
/* Now let's parse and set. */
while ((curopt = getopt(argc, argv, optstr)) != -1) {
switch (curopt) {
case 'a' : opts.adjust = TRUE;
strcpy(fstring, optarg);
break;
case 'f' : opts.format = TRUE;
break;
case 't' : opts.total = TRUE;
break;
case 's' : opts.script = TRUE;
break;
case 'm' : opts.human = TRUE;
break;
case 'b' : opts.bits = TRUE;
break;
case 'c' : opts.ccount = TRUE;
break;
case 'r' : opts.rate = TRUE;
break;
case 'u' : opts.samples = TRUE;
break;
case 'h' : print_help(argv[0]);
exit(0);
case '?' : print_usage(argv[0]);
exit(1);
}
}
/* No file? */
if (argc-optind == 0) {
print_help(argv[0]);
exit(1);
}
/* Well, let's not just shut up if options are out of context, let's whine
* about it a bit so that people know why they're not getting what they
* expected. */
if (!opts.script) {
/* If not in script mode then we should check and make sure that we warn
* if script options have been set. I assume it's fine to spit to stdout
* here. */
/* Local string where we store naughty switches. */
char badopts[10] = "\0";
/* Off we go. */
if (opts.format) { strcat(badopts, "f"); }
if (opts.bits) { strcat(badopts, "b"); }
if (opts.ccount) { strcat(badopts, "c"); }
if (opts.rate) { strcat(badopts, "r"); }
if (opts.human) { strcat(badopts, "m"); }
if (opts.samples) { strcat(badopts, "u"); }
if (strlen(badopts)) {
printf("-%s :: Out of context options will be ignored.\n",
badopts);
}
} else {
/* Now, if we're in script mode we want to make sure of a few things,
* we also want to warn on stderr, of course. */
char badopts[20] = "\0";
/* The whole format thing is a bit complex so I guess we want to help
* out. */
if (!opts.format) {
if (opts.bits) { strcat(badopts, "b"); }
if (opts.ccount) { strcat(badopts, "c"); }
if (opts.rate) { strcat(badopts, "r"); }
if (strlen(badopts) == 1) {
fprintf(stderr, "You can't specify -%s just like that, you need to enter format mode with -f.\n", badopts);
}
if (strlen(badopts) > 1) {
fprintf(stderr, "Look out, you're not in format mode and you have more than one format specifier anyway: just use the -h switch for now.\n");
}
}
/* Catch-all piece of logic to filter errors. */
if ((opts.script) && (((opts.format) && (opts.human)) || ((opts.format)
&& (((opts.bits) && ((opts.ccount) ||
(opts.rate))) ||
((opts.ccount) && (opts.rate)))) ||
(opts.samples && (opts.format || opts.human)))) {
fprintf(stderr, "Error: In script mode not more than one further mode can be specified.\n");
print_usage(argv[0]);
exit(1);
}
}
/* Setting things up. */
eci_init();
eci_command("cs-add main");
eci_command("c-add main");
eci_command("ao-add null");
/* Setting the format if needed. */
if (opts.adjust) {
if (strncmp(":", fstring, 1) == 0) { sprintf(cmd, "cs-set-audio-format %s", fstring+1); }
else { sprintf(cmd, "cs-set-audio-format %s", fstring); }
eci_command(cmd);
if (strlen(eci_last_error()) != 0) {
fprintf(stderr, "Argument to -a is badly formatted.\n");
print_usage(argv[0]);
exit(1);
}
}
curarg = optind;
/* The real thing. */
while(curarg < argc) {
if ((file = fopen(argv[curarg], "r")) != NULL) {
fclose(file);
sprintf(cmd, "ai-add \"%s\"", argv[curarg]);
eci_command(cmd);
eci_command("cs-connect");
if (strlen(eci_last_error()) == 0) {
sprintf(cmd, "ai-select \"%s\"", argv[curarg]);
eci_command(cmd);
eci_command("ai-get-length");
curfilelength = eci_last_float();
if (opts.format) {
eci_command("ai-get-format");
strcpy(fstring, eci_last_string());
}
/* We wanted to print the length in samples so we've done nothing
* all along; let's act now. */
if (opts.script && opts.samples) {
long samplecount;
eci_command("ai-get-length-samples");
samplecount = eci_last_long_integer();
printf("%li", samplecount);
}
/* Here cometh the cleansing. */
eci_command("cs-disconnect");
eci_command("ai-remove");
/* Need we humanize ourselves? */
if (!(opts.script) || ((opts.script && opts.human))) {
make_human((int)(curfilelength+0.5), &min, &sec);
}
if (!(opts.script)) { printf("%s: ", argv[curarg]); }
if (!(opts.script) ||
((opts.script) && (!(opts.format) && !(opts.human) &&
!(opts.samples)))) {
printf("%.3f", curfilelength);
}
if (!(opts.script)) { printf("s \t("); }
if (!(opts.script) || ((opts.script) && (opts.human))) {
printf("%im%is", min, sec);
}
if (!(opts.script)) { printf(")"); }
if ((opts.format) &&
!((opts.format) && ((opts.bits) || (opts.ccount) || (opts.rate)))) {
if (!(opts.script)) { printf(" \t"); }
printf("%s", fstring);
}
if ((opts.format) && (opts.script) && (opts.bits)) {
printf("%s", strtok(fstring+1, "_"));
}
if ((opts.script) && (opts.format) && (opts.ccount)) {
strtok(fstring, ",");
printf("%s", strtok(NULL, ","));
}
if ((opts.format) && (opts.script) && (opts.rate)) {
strtok(fstring, ",");
strtok(NULL, ",");
printf("%s", strtok(NULL, ","));
}
printf("\n");
if ((opts.total) && !(opts.script)) {
totlength += curfilelength;
}
}
else {
if (opts.script) { printf("-2\n"); }
else { printf("%s: Read error.\n", argv[curarg]); }
status = -2;
eci_command("ai-remove");
}
}
else {
if (opts.script) { printf("-1\n"); }
else { printf("%s: fopen error.\n", argv[curarg]); }
status = -1;
}
curarg++;
}
if ((opts.total) && !(opts.script)) {
/* This could be made a script option as well, does anyone care? */
make_human((int)(totlength+0.5), &min, &sec);
printf("Total: %.3fs \t\t(%im%is)\n", totlength, min, sec);
}
eci_command("cs-remove");
eci_cleanup();
exit(status);
}
void make_human(int length, unsigned int *min, unsigned char *sec) {
*min = (length/60);
*sec = (length % 60);
}
void print_help(char *name) {
printf("Usage: %s [-ahtsfmbcru] FILE1 [FILE2] [FILEn]\n "
"\t-h Prints this usage message. (help)\n"
"\t-a[:]bits,channels,rate Changes the format assumed by default \n"
"\t for headerless data. (adjust)\n"
"\t-t Prints the summed length of all the files processed. (total)\n"
"\t (Ignored if with -s) \n"
"\t-s Enables script mode: One info type per file per line. (script)\n"
"\t (Defaults to length in secs.) \n"
"\t-f With -s will return the format string as info, alone it will \n"
"\t add it to the main display. (format)\n"
"\t -b If -s and -f are enabled with this the info printed will be \n"
"\t the sample's bitwidth. (bits)\n"
"\t -c If -s and -f are enabled with this the info printed will be \n"
"\t the channel count. (channel count)\n"
"\t -r If -s and -f are enabled with this the info printed will be \n"
"\t the sampling rate. (rate)\n"
"\t-m Will print human computable time as in main display but in \n"
"\t batch fashion. (minutes)\n"
"\t (Only with -s)\n"
"\t-u This batchmode option returns the length of specified files \n"
"\t in samples. (Smallest Unit)\n"
"\t (This information is worthless if you don't know the sampling \n"
"\t rate of the file.) (Only with -s)\n"
"(Note that out of context options will be ignored.)\n\n", name);
}
void print_usage(char *name) {
printf("Usage: %s [-ahtsfmbcru] FILE1 [FILE2] [FILEn]\n\n\t Use the -h switch for help or see the man page.\n\n", name);
}

View File

@ -0,0 +1,237 @@
#!/usr/bin/env python
# ------------------------------------------------------------------------
# ecamonitor: Ecasound monitor client implemented using NetECI
# Copyright (C) 2002-2003,2009 Kai Vehmanen
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
# ------------------------------------------------------------------------
import curses
import re
import socket
import string
import sys
import time
ecamonitor_remote_host = "localhost"
ecamonitor_remote_port = 2868
ecamonitor_version = "v20090419-7"
# TODO:
# - nothing at the moment
# References:
# - http://www.python.org/doc/essays/styleguide.html
# - http://py-howto.sourceforge.net/curses/curses.html
# - http://www.python.org/doc/2.2.2/lib/module-curses.html
# - http://py-howto.sourceforge.net/regex/regex.html
# - http://www.python.org/doc/2.2.2/lib/module-re.html
# - http://py-howto.sourceforge.net/sockets/sockets.html
# - http://www.python.org/doc/2.2.2/lib/module-string.html
def connect_to_server(remote_host, remote_port):
"""Connects to the ecasound server.
@return Socket object for the connection.
"""
while 1:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((remote_host, remote_port))
s.setblocking(1)
return(s)
except Exception, e:
if e[0] == 111: # 111 = connection refused
time.sleep(1)
pass
else:
raise
def issue_eiam_command(s, cmd):
"""Sends a command to ecasound and waits for an response.
@param s socket for an active connection
@param cmd EIAM command to send
@return tuple of return value type and value
"""
tm = ''
counter = 0
s.send(cmd + '\r\n')
while counter < 16:
count = counter + 1
newdata = s.recv(4096)
if len(newdata) == 0:
return ('e','')
tm = tm + newdata
# lets test whether we have received a valid
# EIAM command
try:
m = expand_eiam_response(tm)
return parse_eiam_response(m, tm)
except Exception, e:
pass
return ('e','')
def expand_eiam_response(str):
"""Checks wheter 'str' is a valid EIAM response.
@return Regex match object.
"""
m = re.match('256 ([0-9]{1,5}) (.+)\r\n(.*)\r\n\r\n.*', str, re.MULTILINE | re.S)
return m
def parse_eiam_response(m, str):
"""Parses a valid EIAM response.
@param m Valid regex match object.
@param str The whole EIAM response.
@return tuple of return value type and value
"""
if not m:
m = re.match('256 ([0-9]{1,5}) (.+)\r\n(.*)', str, re.MULTILINE | re.S)
if not m:
raise Exception, 'Regexp failed!'
if m and len(m.groups()) == 0:
print "(ecamonitor) Matching groups failed: ", m.groups()
if m and len(m.groups()) == 3:
#print 'received=', len(m.group(3)), ', expected=', m.group(1)
if int(m.group(1)) != len(m.group(3)):
print "(ecamonitor) Response length error."
if m:
return (m.group(2), m.group(3))
return ('e','')
def main():
s = None
remote_host = ecamonitor_remote_host
remote_port = ecamonitor_remote_port
if not hasattr(sys, 'version_info') or (hasattr(sys, 'version_info') and sys.version_info[1] <2):
print 'Error! Ecamonitor requires python-2.0 or newer to run!'
return 1
if len(sys.argv) > 1:
destination = sys.argv[1]
address = string.split(destination, ':')
remote_host = address[0]
if len(address) > 1:
remote_port = int(address[1])
try:
stdscr = curses.initscr()
pad = curses.newpad(255, 80)
pad.nodelay(1) # to make getch() nonblocking
while 1:
try:
pad.erase()
pad.addstr(0, 0, "ecamonitor " + ecamonitor_version, curses.A_BOLD)
if s == None:
pad.addstr(2, 0, "No connection. Trying to connect to " + remote_host + ":" + str(remote_port) + ".\n")
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
#time.sleep(3)
s = connect_to_server(remote_host, remote_port)
pad.addstr(3, 0, "Connection established.\n")
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
pad.addstr(1, 0, "")
else:
pad.addstr("\n")
pad.addstr("\n------------------------------------------------------------")
pad.addstr("\nEngine status: ")
pad.addstr((issue_eiam_command(s, 'engine-status')[1]), curses.A_BOLD)
pad.addstr("\nConnected chainsetup: ")
pad.addstr(issue_eiam_command(s, 'cs-connected')[1], curses.A_BOLD)
pad.addstr("\nSelected chainsetup: ")
pad.addstr(issue_eiam_command(s, 'cs-selected')[1], curses.A_BOLD)
#pad.addstr("\nSelected chainsetup status:: ")
#pad.addstr(issue_eiam_command(s, 'cs-status')[1])
pad.addstr("\n\nPosition: ")
pad.addstr(issue_eiam_command(s, 'cs-get-position')[1] + "s", curses.A_BOLD)
pad.addstr(" / Length: ")
pad.addstr(issue_eiam_command(s, 'cs-get-length')[1] + "s", curses.A_BOLD)
pad.addstr("\nChains: ")
pad.addstr(str(len(string.split(issue_eiam_command(s, 'c-list')[1],','))), curses.A_BOLD)
pad.addstr(" / Inputs: ")
pad.addstr(str(len(string.split(issue_eiam_command(s, 'ai-list')[1],','))), curses.A_BOLD)
pad.addstr(" / Outputs: ")
pad.addstr(str(len(string.split(issue_eiam_command(s, 'ao-list')[1],','))), curses.A_BOLD)
pad.addstr("\n\n------------------------------------------------------------\n")
res = issue_eiam_command(s, 'aio-status')
pad.addstr(res[1])
pad.addstr("\n\n------------------------------------------------------------\n")
res = issue_eiam_command(s, 'cop-status')
pad.addstr(res[1])
pad.addstr("\n\n------------------------------------------------------------\n")
res = issue_eiam_command(s, 'ctrl-status')
pad.addstr(res[1])
pad.addstr("\n\n------------------------------------------------------------\n")
pad.refresh(0, 0, 0, 0, stdscr.getmaxyx()[0]-1, stdscr.getmaxyx()[1]-1)
time.sleep(1.0)
ch=pad.getch()
if ch == ord('q'):
break
except curses.error:
raise
except socket.error, e:
if e[0] == 32 or e[0] == 104 or e[0] == 111:
s = None
pass
else:
curses.endwin()
print "Exception!" , e
raise
except KeyboardInterrupt:
break
finally:
if s != None:
s.close()
curses.endwin()
if __name__ == '__main__':
main()

View File

@ -0,0 +1,233 @@
// ------------------------------------------------------------------------
// ecanormalize.cpp: A simple command-line tools for normalizing
// sample volume.
// Copyright (C) 1999-2006 Kai Vehmanen
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string>
#include <iostream>
#include <cstdio>
#include <signal.h>
#include <stdlib.h>
#include <kvutils/kvu_com_line.h>
#include <kvutils/kvu_temporary_file_directory.h>
#include <kvutils/kvu_numtostr.h>
#include <eca-control-interface.h>
#include "ecicpp_helpers.h"
/**
* Definitions and options
*/
using std::cerr;
using std::cout;
using std::endl;
using std::string;
/**
* Function declarations
*/
int main(int argc, char *argv[]);
static void ecanormalize_print_usage(void);
static void ecanormalize_signal_handler(int signum);
/**
* Definitions and options
*/
#define ECANORMALIZE_PHASE_ANALYSIS 0
#define ECANORMALIZE_PHASE_PROCESSING 1
#define ECANORMALIZE_PHASE_MAX 2
/**
* Global variables
*/
static const string ecatools_normalize_version = "20050316-27";
static string ecatools_normalize_tempfile;
/**
* Function definitions
*/
int main(int argc, char *argv[])
{
struct sigaction es_handler;
es_handler.sa_handler = ecanormalize_signal_handler;
sigemptyset(&es_handler.sa_mask);
es_handler.sa_flags = 0;
sigaction(SIGTERM, &es_handler, 0);
sigaction(SIGINT, &es_handler, 0);
sigaction(SIGQUIT, &es_handler, 0);
sigaction(SIGABRT, &es_handler, 0);
struct sigaction ign_handler;
ign_handler.sa_handler = SIG_IGN;
sigemptyset(&ign_handler.sa_mask);
ign_handler.sa_flags = 0;
/* ignore the following signals */
sigaction(SIGPIPE, &ign_handler, 0);
sigaction(SIGFPE, &ign_handler, 0);
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
if (cline.size() < 2) {
ecanormalize_print_usage();
return(1);
}
try {
string filename;
double multiplier = 1.0f;
TEMPORARY_FILE_DIRECTORY tempfile_dir_rep;
string tmpdir ("ecatools-");
char* tmp_p = getenv("LOGNAME");
if (tmp_p == NULL) tmp_p = getenv("USER");
if (tmp_p != NULL) {
tmpdir += string(tmp_p);
tempfile_dir_rep.reserve_directory(tmpdir);
}
if (tempfile_dir_rep.is_valid() != true) {
cerr << "---\nError while creating temporary directory \"" << tmpdir << "\". Exiting...\n";
return(0);
}
ecatools_normalize_tempfile = tempfile_dir_rep.create_filename("normalize-tmp", ".wav");
ECA_CONTROL_INTERFACE eci;
cline.begin();
cline.next(); // skip the program name
while(cline.end() == false) {
filename = cline.current();
for(int m = 0; m < ECANORMALIZE_PHASE_MAX; m++) {
eci.command("cs-add default");
eci.command("c-add default");
if (m == ECANORMALIZE_PHASE_ANALYSIS) {
cout << "Analyzing file \"" << filename << "\".\n";
string format;
if (ecicpp_add_file_input(&eci, filename, &format) < 0) break;
cout << "Using audio format -f:" << format << "\n";
cout << "Opening temp file \"" << ecatools_normalize_tempfile << "\".\n";
if (ecicpp_add_output(&eci, ecatools_normalize_tempfile, format) < 0) break;
eci.command("cop-add -ev");
eci.command("cop-list");
if (eci.last_string_list().size() != 1) {
cerr << eci.last_error() << endl;
cerr << "---\nError while adding -ev chainop. Exiting...\n";
break;
}
}
else {
string format;
if (ecicpp_add_file_input(&eci, ecatools_normalize_tempfile, &format) < 0) break;
cout << "Using audio format -f:" << format << "\n";
if (ecicpp_add_output(&eci, filename, format) < 0) break;
eci.command("cop-add -ea:" + kvu_numtostr(multiplier * 100.0f));
eci.command("cop-list");
if (eci.last_string_list().size() != 1) {
cerr << eci.last_error() << endl;
cerr << "---\nError while adding -ev chainop. Exiting...\n";
break;
}
}
cout << "Starting processing...\n";
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
break;
}
else {
// blocks until processing is done
eci.command("run");
}
cout << "Processing finished.\n";
if (m == ECANORMALIZE_PHASE_ANALYSIS) {
eci.command("cop-select 1");
eci.command("copp-select 2"); /* 2nd param of -ev, first one
* sets the mode */
eci.command("copp-get");
multiplier = eci.last_float();
if (multiplier <= 1.0) {
cout << "File \"" << filename << "\" is already normalized.\n";
eci.command("cs-disconnect");
eci.command("cs-select default");
eci.command("cs-remove");
break;
}
else {
cout << "Normalizing file \"" << filename << "\" (amp-%: ";
cout << multiplier * 100.0 << ").\n";
}
}
eci.command("cs-disconnect");
eci.command("cs-select default");
eci.command("cs-remove");
}
cout << "Removing temp file \"" << ecatools_normalize_tempfile << "\".\n";
remove(ecatools_normalize_tempfile.c_str());
cline.next();
}
}
catch(...) {
cerr << "\nCaught an unknown exception.\n";
}
return(0);
}
static void ecanormalize_print_usage(void)
{
cerr << "****************************************************************************\n";
cerr << "* ecanormalize, v" << ecatools_normalize_version << " (" << VERSION << ")\n";
cerr << "* (C) 1997-2004 Kai Vehmanen, released under the GPL license\n";
cerr << "****************************************************************************\n";
cerr << "\nUSAGE: ecanormalize file1 [ file2, ... fileN ]\n\n";
}
static void ecanormalize_signal_handler(int signum)
{
cerr << "Unexpected interrupt... cleaning up.\n";
remove(ecatools_normalize_tempfile.c_str());
exit(1);
}

View File

@ -0,0 +1,757 @@
/**
* ecaplay.c: A simple command-line tool for playing audio files.
*
* Copyright (C) 1999-2002,2004-2006 Kai Vehmanen
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/**
* TODO:
* - show playlist length during runtime
* - random start switch (both for cmdline and playlist modes)
* - write some notes about locking issues
*/
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h> /* ANSI-C: malloc(), free() */
#include <string.h> /* ANSI-C: strlen(), strncmp() */
#include <unistd.h> /* POSIX: ... */
#include <signal.h> /* POSIX: sigaction() */
#include <sys/stat.h> /* POSIX: mkdir() */
#include <sys/types.h> /* POSIX: mkdir() */
#include <ecasoundc.h>
/**
* Function declarations
*/
int main(int argc, char *argv[]);
static void add_input_to_chainsetup(eci_handle_t eci, const char* nextrack);
static int flush_tracks(void);
static const char* get_next_track(int *tracknum, int argc, char *argv[], eci_handle_t *eci);
static char* get_playlist_path(void);
static const char* get_track_cmdline(int n, int argc, char *argv[]);
static const char* get_track_playlist(int* next_track);
static void initialize_chainsetup_for_playback(eci_handle_t* eci, const char* nexttrack, int tracknum);
static void initialize_check_output(eci_handle_t* eci);
static int list_tracks(void);
static int play_tracks(int argc, char *argv[]);
static void print_usage(FILE* stream);
static int process_option(const char* option);
static int queue_tracks(int argc, char *argv[]);
static int set_audio_format(eci_handle_t* eci, const char* fmt);
static void setup_signal_handling(void);
static void signal_handler(int signum);
/**
* Definitions and options
*/
#define ECAPLAY_AFMT_MAXLEN 64
#define ECAPLAY_EIAM_LOGLEVEL 256
#define ECAPLAY_TIMEOUT 3
#define ECAPLAY_MODE_NORMAL 0
#define ECAPLAY_MODE_PL_FLUSH 1
#define ECAPLAY_MODE_PL_LIST 2
#define ECAPLAY_MODE_PL_PLAY 3
#define ECAPLAY_MODE_PL_QUEUE 4
#define ECAPLAY_PLAYLIST_BASEDIR ".ecasound"
#define ECAPLAY_PLAYLIST_FILE "ecaplay_queue"
/**
* Global variables
*/
static const char* ecaplay_version = "20061206-45"; /* ecaplay version */
static char ecaplay_next[PATH_MAX]; /* file to play next */
static char ecaplay_audio_format[ECAPLAY_AFMT_MAXLEN]; /* audio format to use */
static const char* ecaplay_output = NULL; /* output device to use */
static int ecaplay_debuglevel = ECAPLAY_EIAM_LOGLEVEL; /* debug level to use */
static int ecaplay_skip = 0; /* how many playlist items to skip */
static int ecaplay_mode = ECAPLAY_MODE_NORMAL; /* playlist mode */
/* FIX: static int ecaplay_list_len = -1; playlist length */
static int ecaplay_initialized = 0; /* playlist mode */
static sig_atomic_t ecaplay_skip_flag = 0; /* signal flag for ctrl-c */
/**
* Function definitions
*/
int main(int argc, char *argv[])
{
int i, res = 0;
/* get the default output device */
ecaplay_output = getenv("ECAPLAY_OUTPUT_DEVICE");
/* process command-line arguments */
for(i = 1; i < argc; i++) { res += process_option(argv[i]); }
if (res == 0) {
switch(ecaplay_mode) {
case ECAPLAY_MODE_PL_FLUSH:
res = flush_tracks();
break;
case ECAPLAY_MODE_PL_LIST:
res = list_tracks();
break;
case ECAPLAY_MODE_PL_QUEUE:
res = queue_tracks(argc, argv);
break;
case ECAPLAY_MODE_NORMAL:
case ECAPLAY_MODE_PL_PLAY:
res = play_tracks(argc, argv);
break;
default:
assert(0);
}
}
if (res != 0) {
fprintf(stderr, "(ecaplay) Errors encountered, return code is %d.\n", res);
}
return res;
}
/**
* Adds input 'nexttrack' to currently selected chainsetup
* of 'eci'. Sets the global variable 'ecaplay_audio_format'.
*/
static void add_input_to_chainsetup(eci_handle_t eci, const char* nexttrack)
{
size_t len = strlen("ai-add '") + strlen(nexttrack) + strlen("'") + 1;
char* tmpbuf = malloc(len);
assert(tmpbuf != NULL);
snprintf(tmpbuf, len, "ai-add \"%s\"", nexttrack);
eci_command_r(eci, tmpbuf);
/* check that add succeeded */
eci_command_r(eci, "ai-list");
if (eci_last_string_list_count_r(eci) != 1) {
fprintf(stderr, "(ecaplay) Warning! Failed to add input '%s'.\n", nexttrack);
}
/* we must connect to get correct input format */
eci_command_r(eci, "ao-add null");
eci_command_r(eci, "cs-connect");
eci_command_r(eci, "ai-iselect 1");
eci_command_r(eci, "ai-get-format");
strncpy(ecaplay_audio_format,
eci_last_string_r(eci),
ECAPLAY_AFMT_MAXLEN);
ecaplay_audio_format[ECAPLAY_AFMT_MAXLEN - 1] = 0;
/* disconnect and remove the null output */
eci_command_r(eci, "cs-disconnect");
eci_command_r(eci, "ao-iselect 1");
eci_command_r(eci, "ao-remove");
free(tmpbuf);
}
/**
* Flushes the playlist contents.
*
* @return zero on success, non-zero otherwise
*/
static int flush_tracks(void)
{
char *path = get_playlist_path();
if (truncate(path, 0) != 0) {
printf("(ecaplay) Unable to flush playlist '%s'.\n", path);
return -1;
}
return 0;
}
/**
* Checks that current chainsetup has exactly one
* output.
*/
static void initialize_check_output(eci_handle_t* eci)
{
eci_command_r(eci, "ao-list");
if (eci_last_string_list_count_r(eci) != 1) {
fprintf(stderr, "(ecaplay) Warning! Failed to add output device.\n");
}
else {
static int once = 1;
if (once) {
eci_command_r(eci, "ao-iselect 1");
eci_command_r(eci, "ao-describe");
char *tmpstr = (char*)eci_last_string_r(eci);
/* skip the "-x:" prefix where x is one of [io] */
while(*tmpstr && *tmpstr++ != ':')
;
printf("(ecaplay) Output device: '%s'\n", tmpstr);
once = 0;
}
}
}
static void initialize_chainsetup_for_playback(eci_handle_t* eci, const char* nexttrack, int tracknum)
{
const char* ret = NULL;
*eci = eci_init_r();
ecaplay_initialized = 1;
if (ecaplay_debuglevel != -1) {
char tmpbuf[32];
snprintf(tmpbuf, 32, "debug %d", ecaplay_debuglevel);
eci_command_r(*eci, tmpbuf);
}
eci_command_r(*eci, "cs-add ecaplay_chainsetup");
/* check that add succeeded */
eci_command_r(*eci, "cs-list");
if (eci_last_string_list_count_r(*eci) != 2) {
fprintf(stderr, "(ecaplay) Warning! Failed to add a new chainsetup.\n");
}
/* as this is a new chainsetup, we can assume that
* adding chains succeeds */
eci_command_r(*eci, "c-add ecaplay_chain");
add_input_to_chainsetup(*eci, nexttrack);
set_audio_format(*eci, ecaplay_audio_format);
if (ecaplay_output == NULL) {
eci_command_r(*eci, "ao-add-default");
/* check that add succeeded */
initialize_check_output(*eci);
}
else {
int len = strlen("ao-add ") + strlen(ecaplay_output) + 1;
char* tmpbuf = (char*)malloc(len);
snprintf(tmpbuf, len, "ao-add %s", ecaplay_output);
eci_command_r(*eci, tmpbuf);
initialize_check_output(*eci);
free(tmpbuf);
}
/* FIXME: add detection of consecutive errors */
eci_command_r(*eci, "cs-connect");
if (eci_error_r(*eci)) {
fprintf(stderr, "(ecaplay) Unable to play file '%s':\n%s\n", nexttrack, eci_last_error_r(*eci));
}
else {
eci_command_r(*eci, "cs-connected");
ret = eci_last_string_r(*eci);
if (strncmp(ret, "ecaplay_chainsetup", strlen("ecaplay_chainsetup")) != 0) {
fprintf(stderr, "(ecaplay) Error while playing file '%s' . Skipping...\n", nexttrack);
}
else {
/* note: audio format set separately for each input file */
printf("(ecaplay) Playing %d: '%s' (%s).\n", tracknum, nexttrack, ecaplay_audio_format);
eci_command_r(*eci, "start");
}
}
}
static const char* get_next_track(int *tracknum, int argc, char *argv[], eci_handle_t *eci)
{
const char *nexttrack = NULL;
if (ecaplay_mode == ECAPLAY_MODE_PL_PLAY)
nexttrack = get_track_playlist(tracknum);
else
nexttrack = get_track_cmdline(*tracknum, argc, argv);
if (nexttrack != NULL) {
/* queue nexttrack for playing */
if (ecaplay_initialized) {
eci_cleanup_r(*eci);
}
initialize_chainsetup_for_playback(eci, nexttrack, *tracknum);
}
else {
/* reached end of playlist */
if (ecaplay_mode != ECAPLAY_MODE_PL_PLAY) {
/* normal mode; end processing after all files played */
/* printf("(ecaplay) No more files...\n"); */
assert(nexttrack == NULL);
}
else {
/* if in playlist mode, loop from beginning */
*tracknum = 1;
/* FIXME: if in playlist mode; query the current lenght of
* playlist and set 'tracknum = (tracknum % pllen)' */
if (ecaplay_mode == ECAPLAY_MODE_PL_PLAY)
nexttrack = get_track_playlist(tracknum);
else
nexttrack = get_track_cmdline(*tracknum, argc, argv);
/* printf("(ecaplay) Looping back to start of playlist...(%s)\n", nexttrack); */
if (nexttrack != NULL) {
/* queue nexttrack for playing */
if (ecaplay_initialized) {
eci_cleanup_r(*eci);
}
initialize_chainsetup_for_playback(eci, nexttrack, *tracknum);
}
else {
/* get_next_track() failed two times, stopping processing */
assert(nexttrack == NULL);
}
}
}
return nexttrack;
}
/**
* Returns the track number 'n' from the list
* given in argc and argv.
*
* @return track name or NULL on error
*/
static const char* get_track_cmdline(int n, int argc, char *argv[])
{
int i, c = 0;
assert(n > 0 && n <= argc);
for(i = 1; i < argc; i++) {
/* FIXME: add support for '-- -foo.wav' */
if (argv[i][0] != '-') {
if (++c == n) {
return argv[i];
}
}
}
return NULL;
}
/**
* Returns a string containing the full path to the
* playlist file. Ownership of the string is transfered
* to the caller (i.e. it must be free()'ed).
*
* @return full pathname or NULL if error has occured
*/
static char* get_playlist_path(void)
{
char *path = malloc(PATH_MAX);
struct stat statbuf;
/* create pathname based on HOME */
strncpy(path, getenv("HOME"), PATH_MAX);
strncat(path, "/" ECAPLAY_PLAYLIST_BASEDIR, PATH_MAX - strlen(path) - 1);
/* make sure basedir exists */
if (stat(path, &statbuf) != 0) {
printf("(ecaplay) Creating directory %s.\n", path);
mkdir(path, 0700);
}
else {
if (!S_ISDIR(statbuf.st_mode)) {
/* error, basedir exists but is not a directory */
free(path);
path = NULL;
}
}
if (path != NULL) {
/* add filename to basedir */
strncat(path, "/" ECAPLAY_PLAYLIST_FILE, PATH_MAX - strlen(path) - 1);
}
return path;
}
/**
* Returns the track from playlist matching number 'next_track'.
*
* In case 'next_track' is larger than the playlist length,
* track 'next_track mod playlist_len' will be selected, and
* the modified playlist item number stored to 'next_track'.
*
* Note: modifies global variable 'ecaplay_next'.
*
* @return track name or NULL on error
*/
static const char* get_track_playlist(int* next_track)
{
const char *res = NULL;
char *path;
FILE *f1;
int next = *next_track;
assert(next > 0);
path = get_playlist_path();
if (path == NULL) {
return path;
}
f1 = fopen(path, "rb");
if (f1 != NULL) {
int c, w, cur_item = 1;
/* iterate through all data octet at a time */
for(w = 0;;) {
c = fgetc(f1);
if (c == EOF) {
if (next > cur_item) {
/* next_track beyond playlist length, reset to valid track number */
next = next % cur_item;
*next_track = next;
/* seek back to start and look again */
fseek(f1, 0, SEEK_SET);
cur_item = 1;
w = 0;
continue;
}
break;
}
if (cur_item == next) {
if (c == '\n') {
ecaplay_next[w] = 0;
res = ecaplay_next;
break;
}
else {
ecaplay_next[w] = c;
}
++w;
}
if (c == '\n') {
++cur_item;
}
}
/* close the file and return results */
fclose(f1);
}
free(path);
return res;
}
/**
* Lists tracks on the playlist.
*
* @return zero on success, non-zero otherwise
*/
static int list_tracks(void)
{
FILE *f1;
char *path = get_playlist_path();
f1 = fopen(path, "rb");
if (f1 != NULL) {
int c;
while((c = fgetc(f1)) != EOF) {
printf("%c", c);
}
fclose(f1);
return 0;
}
return -1;
}
/**
* Play tracks using the Ecasound engine via the
* ECI interface.
*
* Depending on the mode, tracks are selected either
* from the command-line or from the playlist.
*/
static int play_tracks(int argc, char *argv[])
{
eci_handle_t eci = NULL;
int tracknum = 1, stop = 0;
const char* nexttrack = NULL;
assert(ecaplay_mode == ECAPLAY_MODE_NORMAL ||
ecaplay_mode == ECAPLAY_MODE_PL_PLAY);
tracknum += ecaplay_skip;
nexttrack = get_next_track(&tracknum, argc, argv, &eci);
if (nexttrack != NULL) {
setup_signal_handling();
while(nexttrack != NULL) {
unsigned int timeleft = ECAPLAY_TIMEOUT;
while(timeleft > 0) {
timeleft = sleep(timeleft);
if (timeleft > 0 && ecaplay_skip_flag > 1) {
fprintf(stderr, "\n(ecaplay) Interrupted, exiting...\n");
eci_cleanup_r(eci);
stop = 1;
break;
}
}
/* see above while() loop */
if (stop) break;
if (ecaplay_skip_flag == 0) {
eci_command_r(eci, "engine-status");
}
else {
printf("(ecaplay) Skipping...\n");
}
if (ecaplay_skip_flag != 0 || strcmp(eci_last_string_r(eci), "running") != 0) {
ecaplay_skip_flag = 0;
++tracknum;
nexttrack = get_next_track(&tracknum, argc, argv, &eci);
/* printf("Next track is %s.\n", nexttrack); */
}
}
fprintf(stderr, "exiting...\n");
/* see while() loop above */
if (stop == 0) {
eci_cleanup_r(eci);
}
}
return 0;
}
static void print_usage(FILE* stream)
{
fprintf(stream, "Ecaplay v%s (%s)\n\n", ecaplay_version, VERSION);
fprintf(stream, "Copyright (C) 1997-2005 Kai Vehmanen, released under GPL licence \n");
fprintf(stream, "Ecaplay comes with ABSOLUTELY NO WARRANTY.\n");
fprintf(stream, "You may redistribute copies of ecasound under the terms of the GNU\n");
fprintf(stream, "General Public License. For more information about these matters, see\n");
fprintf(stream, "the file named COPYING.\n");
fprintf(stream, "\nUSAGE: ecaplay [-dfhklopq] [ file1 file2 ... fileN ]\n\n");
fprintf(stream, "See ecaplay(1) man page for more details.\n");
}
static int process_option(const char* option)
{
if (option[0] == '-') {
if (strncmp("--help", option, sizeof("--help")) == 0 ||
strncmp("--version", option, sizeof("--version")) == 0) {
print_usage(stdout);
return 0;
}
switch(option[1])
{
case 'd':
{
const char* level = &option[3];
if (option[2] != 0 && option[3] != 0) {
ecaplay_debuglevel |= atoi(level);
printf("(ecaplay) Setting log level to %d.\n", ecaplay_debuglevel);
}
break;
}
case 'f':
{
ecaplay_mode = ECAPLAY_MODE_PL_FLUSH;
printf("(ecaplay) Flushing playlist.\n");
break;
}
case 'h':
{
print_usage(stdout);
return 0;
}
case 'k':
{
const char* skip = &option[3];
if (option[2] != 0 && option[3] != 0) {
ecaplay_skip = atoi(skip);
printf("(ecaplay) Skipping the first %d files..\n", ecaplay_skip);
}
break;
}
case 'l':
{
ecaplay_mode = ECAPLAY_MODE_PL_LIST;
/* printf("(ecaplay) Listing playlist contents.\n"); */
break;
}
case 'o':
{
const char* output = &option[3];
if (option[2] != 0 && option[3] != 0) {
ecaplay_output = output;
/* printf("(ecaplay) Output device: '%s'\n", ecaplay_output); */
}
break;
}
case 'p':
{
ecaplay_mode = ECAPLAY_MODE_PL_PLAY;
printf("(ecaplay) Playlist mode selected (file: %s).\n",
"~/" ECAPLAY_PLAYLIST_BASEDIR "/" ECAPLAY_PLAYLIST_FILE);
break;
}
case 'q':
{
ecaplay_mode = ECAPLAY_MODE_PL_QUEUE;
printf("(ecaplay) Queuing tracks to playlist.\n");
break;
}
default:
{
fprintf(stderr, "(ecaplay) Error! Unknown option '%s'.\n", option);
print_usage(stderr);
return 1;
}
}
}
return 0;
}
static int queue_tracks(int argc, char *argv[])
{
int i, res = 0;
char *path;
FILE *f1;
path = get_playlist_path();
/* path maybe NULL but fopen can handle it */
f1 = fopen(path, "a+b");
if (f1 != NULL) {
for(i = 1; i < argc; i++) {
char c = argv[i][0];
/* printf("(ecaplay) processing arg '%s' (%c).\n", argv[i], c); */
/* FIXME: add support for '-- -foo.wav' */
if (c != '-') {
/* printf("(ecaplay) 2:processing arg '%s' (%c).\n", argv[i], c); */
if (c != '/') {
/* reserve extra room for '/' */
char* tmp = malloc(PATH_MAX + strlen(argv[i]) + 1);
if (getcwd(tmp, PATH_MAX) != NULL) {
strcat(tmp, "/");
strcat(tmp, argv[i]);
printf("(ecaplay) Track '%s' added to playlist.\n", argv[i]);
fwrite(tmp, 1, strlen(tmp), f1);
}
free(tmp);
}
else {
printf("(ecaplay) Track '%s' added to playlist.\n", argv[i]);
fwrite(argv[i], 1, strlen(argv[i]), f1);
}
fwrite("\n", 1, 1, f1);
}
}
fclose(f1);
}
else {
res = -1;
}
free(path); /* can be NULL */
return res;
}
/**
* Sets the chainsetup audio format to 'fmt'.
*
* @return zero on success, non-zero on error
*/
int set_audio_format(eci_handle_t* eci, const char* fmt)
{
size_t len = strlen("cs-set-audio-format -f:") + strlen(fmt) + 1;
char* tmpbuf = malloc(len);
int res = 0;
strcpy(tmpbuf, "cs-set-audio-format ");
strcat(tmpbuf, fmt);
tmpbuf[len - 1] = 0;
eci_command_r(eci, tmpbuf);
if (eci_error_r(eci)) {
fprintf(stderr, "(ecaplay) Unknown audio format encountered.\n");
res = -1;
}
free(tmpbuf);
return res;
}
static void setup_signal_handling(void)
{
struct sigaction es_handler_int;
struct sigaction ign_handler;
es_handler_int.sa_handler = signal_handler;
sigemptyset(&es_handler_int.sa_mask);
es_handler_int.sa_flags = 0;
ign_handler.sa_handler = SIG_IGN;
sigemptyset(&ign_handler.sa_mask);
ign_handler.sa_flags = 0;
/* handle the follwing signals explicitly */
sigaction(SIGINT, &es_handler_int, 0);
/* ignore the following signals */
sigaction(SIGPIPE, &ign_handler, 0);
sigaction(SIGFPE, &ign_handler, 0);
}
static void signal_handler(int signum)
{
++ecaplay_skip_flag;
}

View File

@ -0,0 +1,593 @@
// ------------------------------------------------------------------------
// ecasignalview.cpp: A simple command-line tools for monitoring
// signal amplitude.
// Copyright (C) 1999-2005,2007,2008 Kai Vehmanen
// Copyright (C) 2005 Jeffrey Cunningham
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <cassert>
#include <cmath>
#include <cstdio>
#include <signal.h>
#include <unistd.h>
#include <sys/time.h> /* POSIX: select() */
#include <sys/select.h> /* POSIX: timeval struct */
#include <kvutils/kvu_com_line.h>
#include <kvutils/kvu_utils.h>
#include <kvutils/kvu_numtostr.h>
#include <eca-control-interface.h>
#include "ecicpp_helpers.h"
#ifdef HAVE_TERMIOS_H
/* see: http://www.opengroup.org/onlinepubs/007908799/xsh/termios.h.html */
#include <termios.h>
#endif
#if defined(ECA_USE_NCURSES_H) || defined(ECA_USE_NCURSES_NCURSES_H) || defined(ECA_USE_CURSES_H)
#define ECASV_USE_CURSES 1
#ifdef ECA_USE_NCURSES_H
#include <ncurses.h>
#include <term.h> /* for setupterm() */
#elif ECA_USE_NCURSES_NCURSES_H
#include <ncurses/ncurses.h>
#include <ncurses/term.h> /* for setupterm() */
#else
#include <curses.h>
#include <term.h> /* for setupterm() */
#endif
#endif /* ECA_*CURSES_H */
#include <cstring>
/**
* Import namespaces
*/
using namespace std;
/**
* Type definitions
*/
struct ecasv_channel_stats {
double last_peak;
double drawn_peak;
double max_peak;
long int clipped_samples;
vector<double> avg_peak; // jkc: addition
int avg_peak_ptr; // jkc: addition
double avg_peak_val; // jkc: addition
};
/**
* Function declarations
*/
int main(int argc, char *argv[]);
void ecasv_parse_command_line(ECA_CONTROL_INTERFACE* cop, int argc, char *argv[]);
void ecasv_fill_defaults(void);
std::string ecasv_cop_to_string(ECA_CONTROL_INTERFACE* cop);
void ecasv_output_init(void);
void ecasv_output_cleanup(void);
int ecasv_print_vu_meters(ECA_CONTROL_INTERFACE* eci,
std::vector<struct ecasv_channel_stats>* chstats);
void ecasv_update_chstats(std::vector<struct ecasv_channel_stats>* chstats,
int ch, double value);
void ecasv_create_bar(double value, int barlen, unsigned char* barbuf);
void ecasv_print_usage(void);
void ecasv_signal_handler(int signum);
void reset_stats_fcn(vector<struct ecasv_channel_stats>* chstats); // jkc: addition
float dB(float v) { return 10.0*log10(v*v); } // jkc: addition
void ecasv_set_buffered(void);
void ecasv_set_unbuffered(void);
int ecasv_kbhit();
/**
* Static global variables
*/
static const string ecatools_signalview_version = "20051112-10";
static bool ecasv_log_display_mode = false; // jkc: addition
static const double ecasv_clipped_threshold_const = 1.0f - 1.0f / 16384.0f;
static const int ecasv_bar_length_const = 32;
static const int ecasv_header_height_const = 9;
static const long int ecasv_rate_default_const = 50;
static const long int ecasv_buffersize_default_const = 128;
static unsigned char ecasv_bar_buffer[ecasv_bar_length_const + 1] = { 0 };
static bool ecasv_enable_debug, ecasv_enable_cumulative_mode;
static long int ecasv_buffersize, ecasv_rate_msec;
static string ecasv_input, ecasv_output, ecasv_format_string;
static int ecasv_chcount = 0;
static ECA_CONTROL_INTERFACE* ecasv_eci_repp = 0;
static sig_atomic_t done = 0;
static sig_atomic_t reset_stats = 0;
static int avg_peak_buffer_sz=100; // jkc: addition
#ifdef HAVE_TERMIOS_H
struct termios old_term, new_term;
#endif
/**
* Function definitions
*/
int main(int argc, char *argv[])
{
int res;
struct sigaction es_handler;
es_handler.sa_handler = ecasv_signal_handler;
sigemptyset(&es_handler.sa_mask);
es_handler.sa_flags = 0;
sigaction(SIGTERM, &es_handler, 0);
sigaction(SIGINT, &es_handler, 0);
sigaction(SIGQUIT, &es_handler, 0);
sigaction(SIGABRT, &es_handler, 0);
sigaction(SIGHUP, &es_handler, 0);
struct sigaction ign_handler;
ign_handler.sa_handler = SIG_IGN;
sigemptyset(&ign_handler.sa_mask);
ign_handler.sa_flags = 0;
/* ignore the following signals */
sigaction(SIGPIPE, &ign_handler, 0);
sigaction(SIGFPE, &ign_handler, 0);
ECA_CONTROL_INTERFACE eci;
eci.command("cs-add default");
eci.command("c-add default");
/* set engine buffersize */
eci.command("cs-set-param -b:" + kvu_numtostr(ecasv_buffersize));
/* in case JACK is used, do not send nor receive transport events */
eci.command("cs-set-param -G:jack,ecasignalview,notransport");
/* note: might change the cs options (-G, -z, etc) */
ecasv_parse_command_line(&eci,argc,argv);
if (ecasv_format_string.size() > 0) {
eci.command("cs-set-audio-format " + ecasv_format_string);
}
string format;
if (ecicpp_add_input(&eci, ecasv_input, &format) < 0) return -1;
cout << "Using audio format -f:" << format << "\n";
ecasv_chcount = ecicpp_format_channels(format);
cout << "Setting up " << ecasv_chcount << " separate channels for analysis." << endl;
if (ecicpp_add_output(&eci, ecasv_output, format) < 0) return -1;
ecasv_eci_repp = &eci;
vector<struct ecasv_channel_stats> chstats;
eci.command("cop-add -evp");
eci.command("cop-add -ev");
if (ecasv_enable_cumulative_mode == true) {
eci.command("cop-set 2,1,1");
}
eci.command("cop-select 1");
if (ecicpp_connect_chainsetup(&eci, "default") < 0) {
return -1;
}
int secs = 0, msecs = ecasv_rate_msec;
while(msecs > 999) {
++secs;
msecs -= 1000;
}
ecasv_output_init();
eci.command("start");
int chr=0; // jkc: addition
int rv=0; // jkc: addition
while(! done ) {
kvu_sleep(secs, msecs * 1000000);
res = ecasv_print_vu_meters(&eci, &chstats);
if (res < 0)
break;
#if defined(ECASV_USE_CURSES)
// jkc: addition until noted
if (ecasv_kbhit()) {
/* note: getch() is a curses.h function */
switch (chr=getch()) {
case 'q':
case 27: /* Esc */
case 'Q':
done=true;
break;
case ' ':
reset_stats_fcn(&chstats);
break;
}
}
// jkc: end of addition
#endif
}
ecasv_output_cleanup();
#ifdef ECASV_USE_CURSES
endwin();
#endif
return rv;
}
void ecasv_parse_command_line(ECA_CONTROL_INTERFACE *eci, int argc, char *argv[])
{
COMMAND_LINE cline = COMMAND_LINE (argc, argv);
if (cline.size() == 0 ||
cline.has("--version") ||
cline.has("--help") ||
cline.has("-h")) {
ecasv_print_usage();
exit(1);
}
ecasv_enable_debug = false;
ecasv_enable_cumulative_mode = false;
ecasv_rate_msec = 0;
ecasv_buffersize = 0;
cline.begin();
cline.next(); // 1st argument
while (cline.end() != true) {
string arg = cline.current();
if (arg.size() > 0) {
if (arg[0] != '-') {
if (ecasv_input == "")
ecasv_input = arg;
else
if (ecasv_output == "")
ecasv_output = arg;
}
else {
string prefix = kvu_get_argument_prefix(arg);
if (prefix == "b")
ecasv_buffersize = atol(kvu_get_argument_number(1, arg).c_str());
if (prefix == "c") ecasv_enable_cumulative_mode = true;
if (prefix == "d") ecasv_enable_debug = true;
if (prefix == "f")
ecasv_format_string = string(arg.begin() + 3, arg.end());
if (prefix == "I") ecasv_log_display_mode = false; // jkc: addition
if (prefix == "L") ecasv_log_display_mode = true; // jkc: addition
if (prefix == "r")
ecasv_rate_msec = atol(kvu_get_argument_number(1, arg).c_str());
if (prefix == "G" ||
prefix == "B" ||
(prefix.size() > 0 && prefix[0] == 'M') ||
prefix == "r" ||
prefix == "z") {
eci->command("cs-option " + arg);
}
}
}
cline.next();
}
ecasv_fill_defaults();
}
void ecasv_fill_defaults(void)
{
// ECA_RESOURCES ecarc;
if (ecasv_input.size() == 0) ecasv_input = "/dev/dsp";
if (ecasv_output.size() == 0) ecasv_output = "null";
if (ecasv_buffersize == 0) ecasv_buffersize = ecasv_buffersize_default_const;
if (ecasv_rate_msec == 0) ecasv_rate_msec = ecasv_rate_default_const;
if (ecasv_format_string.size() == 0) ecasv_format_string = "s16_le,2,44100,i";
// ecarc.resource("default-audio-format");
}
string ecasv_cop_to_string(ECA_CONTROL_INTERFACE* eci)
{
eci->command("cop-status");
return(eci->last_string());
}
void ecasv_output_init(void)
{
#ifdef ECASV_USE_CURSES
initscr();
erase();
int r=0; // jkc: added r for row indexing here and below
mvprintw(r++, 0, "ecasignalview v%s (%s) -- (C) K.Vehmanen, J.Cunningham", ecatools_signalview_version.c_str(), VERSION);
//mvprintw(r++, 0, "* (C) 1999-2005 Kai Vehmanen, Jeff Cunningham *\n");
//mvprintw(r++, 0, "******************************************************\n\n");
++r;
mvprintw(r++, 2, "Input/output: \"%s\" => \"%s\"",
ecasv_input.c_str(),ecasv_output.c_str());
double avg_length = (double)ecasv_rate_msec * avg_peak_buffer_sz;
mvprintw(r++, 2,
"Settings: %s refresh=%ldms bsize=%ld avg-length=%.0fms",
ecasv_format_string.c_str(), ecasv_rate_msec, ecasv_buffersize, avg_length);
/* mvprintw(r++, 0, "refresh rate = %ld (msec), buffer size = %ld, "
"avg-length = %.0f (msec)",
ecasv_rate_msec, ecasv_buffersize, avg_length); */
++r;
const char* bar="------------------------------------------------------------------------------\n";
mvprintw(r++, 0, bar);
mvprintw(r, 0, "channel");
if (ecasv_log_display_mode)
mvprintw(r++,38, "%s avg-peak dB max-peak dB clipped\n", ecasv_bar_buffer);
else
mvprintw(r++,38, "%s avg-peak max-peak clipped\n", ecasv_bar_buffer);
mvprintw(r++, 0, bar);
memset(ecasv_bar_buffer, ' ', ecasv_bar_length_const - 4);
ecasv_bar_buffer[ecasv_bar_length_const - 4] = 0;
mvprintw(r + ecasv_chcount + 3, 0, "Press spacebar to reset stats"); // jkc: addition
move(r + ecasv_chcount - 2, 0);
// 13 + 12
refresh();
#endif
}
void ecasv_output_cleanup(void)
{
#ifdef ECASV_USE_CURSES
endwin();
#endif
// FIXME: should be enabled
#if 0
if (ecasv_eci_repp != 0) {
cout << endl << endl << endl;
ecasv_eci_repp->command("cop-status");
}
#endif
}
// jkc: addition of reset_stats function
void reset_stats_fcn(vector<struct ecasv_channel_stats>* chstats)
{
#ifdef ECASV_USE_CURSES
vector<struct ecasv_channel_stats>::iterator s=chstats->begin();
while (s!=chstats->end()) {
s->last_peak=0;
s->max_peak=0;
s->drawn_peak=0;
s->clipped_samples=0;
s++;
}
#endif
}
// jkc: end of addition
int ecasv_print_vu_meters(ECA_CONTROL_INTERFACE* eci, vector<struct ecasv_channel_stats>* chstats)
{
int result = 0;
/* check wheter to reset peaks */
if (reset_stats) {
reset_stats = 0;
for(int n = 0; n < ecasv_chcount; n++) {
(*chstats)[n].max_peak = 0;
(*chstats)[n].clipped_samples = 0;
}
}
#ifdef ECASV_USE_CURSES
for(int n = 0; n < ecasv_chcount; n++) {
eci->command("copp-select " + kvu_numtostr(n + 1));
eci->command("copp-get");
if (eci->error()) {
result = -1;
break;
}
double value = eci->last_float();
ecasv_update_chstats(chstats, n, value);
ecasv_create_bar((*chstats)[n].drawn_peak, ecasv_bar_length_const, ecasv_bar_buffer);
// jkc: commented out following two lines and substituted what follows until noted
// mvprintw(ecasv_header_height_const+n, 0, "Ch-%02d: %s| %.5f %ld\n",
// n + 1, ecasv_bar_buffer, (*chstats)[n].max_peak, (*chstats)[n].clipped_samples);
// Calculate average peak value
if (ecasv_log_display_mode)
mvprintw(ecasv_header_height_const+n, 0,
"Ch-%02d: %s %.2f %.2f %ld\n",
n+1, ecasv_bar_buffer,
dB((*chstats)[n].avg_peak_val),
dB((*chstats)[n].max_peak),
(*chstats)[n].clipped_samples);
else
mvprintw(ecasv_header_height_const+n, 0,
"Ch-%02d: %s %.5f %.5f %ld\n",
n+1, ecasv_bar_buffer,
(*chstats)[n].avg_peak_val,
(*chstats)[n].max_peak,
(*chstats)[n].clipped_samples);
// jkc: end of substitution
}
move(ecasv_header_height_const + 2 + ecasv_chcount, 0);
refresh();
#else
cout << ecasv_cop_to_string(eci) << endl;
#endif
return result;
}
void ecasv_update_chstats(vector<struct ecasv_channel_stats>* chstats, int ch, double value)
{
/* 1. in case a new channel is encoutered */
if (static_cast<int>(chstats->size()) <= ch) {
chstats->resize(ch + 1);
// jkc: added until noted
(*chstats)[ch].last_peak=0;
(*chstats)[ch].drawn_peak=0;
(*chstats)[ch].max_peak=0;
(*chstats)[ch].clipped_samples=0;
(*chstats)[ch].avg_peak.resize(avg_peak_buffer_sz,0);
(*chstats)[ch].avg_peak_ptr=0;
// jkc: end of additions
}
/* 2. update last_peak and drawn_peak */
(*chstats)[ch].last_peak = value;
if ((*chstats)[ch].last_peak < (*chstats)[ch].drawn_peak) {
(*chstats)[ch].drawn_peak *= ((*chstats)[ch].last_peak / (*chstats)[ch].drawn_peak);
}
else {
(*chstats)[ch].drawn_peak = (*chstats)[ch].last_peak;
}
/* 3. update max_peak */
if (value > (*chstats)[ch].max_peak) {
(*chstats)[ch].max_peak = value;
}
/* 4. update clipped_samples counter */
if (value > ecasv_clipped_threshold_const) {
(*chstats)[ch].clipped_samples++;
}
// jkc: added until noted
/* 5. update running average vector */
(*chstats)[ch].avg_peak[(*chstats)[ch].avg_peak_ptr] = value;
(*chstats)[ch].avg_peak_ptr = ((*chstats)[ch].avg_peak_ptr == avg_peak_buffer_sz-1)?
0 : (*chstats)[ch].avg_peak_ptr+1;
vector<double>::iterator p=(*chstats)[ch].avg_peak.begin();
(*chstats)[ch].avg_peak_val=0;
while (p!=(*chstats)[ch].avg_peak.end()) { (*chstats)[ch].avg_peak_val+=*p++; }
(*chstats)[ch].avg_peak_val/=avg_peak_buffer_sz;
// jkc; end of addition
}
void ecasv_create_bar(double value, int barlen, unsigned char* barbuf)
{
int curlen = static_cast<int>(rint(((value / 1.0f) * barlen)));
for(int n = 0; n < barlen; n++) {
if (n <= curlen)
barbuf[n] = '*';
else
barbuf[n] = ' ';
}
}
/**
* Sets terminal to unbuffered mode (no echo,
* non-canonical input). -jkc
*/
void ecasv_set_unbuffered(void)
{
#ifdef HAVE_TERMIOS_H
tcgetattr( STDIN_FILENO, &old_term );
new_term = old_term;
new_term.c_lflag &= ~( ICANON | ECHO );
tcsetattr( STDIN_FILENO, TCSANOW, &new_term );
#endif
}
/**
* Sets terminal to buffered mode -jkc
*/
void ecasv_set_buffered(void)
{
#ifdef HAVE_TERMIOS_H
tcsetattr( STDIN_FILENO, TCSANOW, &old_term );
#endif
}
/**
* Reads a character from the terminal console. -jkc
*/
int ecasv_kbhit(void)
{
int result;
fd_set set;
struct timeval tv;
FD_ZERO(&set);
FD_SET(STDIN_FILENO,&set); /* watch stdin */
tv.tv_sec = 0;
tv.tv_usec = 0; /* don't wait */
/* quick peek at the input, to see if anything is there */
ecasv_set_unbuffered();
result = select( STDIN_FILENO+1,&set,NULL,NULL,&tv);
ecasv_set_buffered();
return result == 1;
}
void ecasv_print_usage(void)
{
cerr << "****************************************************************************\n";
cerr << "* ecasignalview, v" << ecatools_signalview_version << " (" << VERSION << ")\n";
cerr << "* Copyright 1999-2005 Kai Vehmanen, Jeffrey Cunningham\n";
cerr << "* Licensed under the terms of the GNU General Public License\n";
cerr << "****************************************************************************\n";
cerr << "\nUSAGE: ecasignalview [options] [input] [output] \n";
cerr << "\nOptions:\n";
cerr << "\t-b:buffersize\n";
// cerr << "\t\t-c (cumulative mode)\n";
cerr << "\t-d (debug mode)\n";
cerr << "\t-f:bits,channels,samplerate\n";
cerr << "\t-r:refresh_msec\n\n";
cerr << "\t-I (linear-scale)\n";
cerr << "\t-L (logarithmic-scale)\n";
}
void ecasv_signal_handler(int signum)
{
if (signum == SIGHUP) {
reset_stats = 1;
}
else {
cerr << "Interrupted... cleaning up.\n";
done=1;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,120 @@
// ------------------------------------------------------------------------
// ecicpp_helper.cpp: Helper routines for C++ ECI programming.
// Copyright (C) 2002-2007 Kai Vehmanen
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
// ------------------------------------------------------------------------
#include <cstdlib>
#include <iostream>
#include <string>
#include <vector>
#include <cstdio>
#include <kvu_dbc.h>
#include <kvu_utils.h>
#include <eca-control-interface.h>
#include "ecicpp_helpers.h"
/**
* Definitions and options
*/
using std::cerr;
using std::cout;
using std::endl;
using std::string;
/**
* Function declarations
*/
int ecicpp_add_file_input(ECA_CONTROL_INTERFACE* eci, const string& filename, string* format)
{
if (filename.find(',') != string::npos) {
cerr << "Error: Unable to handle filenames with commas. Exiting...\n";
return -1;
}
return ecicpp_add_input(eci, filename, format);
}
int ecicpp_add_input(ECA_CONTROL_INTERFACE* eci, const string& input, string* format)
{
eci->command("ai-add " + input);
bool error = eci->error();
eci->command("ai-list");
if (error == true || eci->last_string_list().size() != 1) {
cerr << eci->last_error() << endl;
cerr << "---\nError while processing input " << input << ". Exiting...\n";
return -1;
}
/* we must connect to get correct input format */
eci->command("ao-add null");
eci->command("cs-connect");
eci->command("ai-iselect 1");
eci->command("ai-get-format");
*format = eci->last_string();
/* disconnect and remove the null output */
eci->command("cs-disconnect");
eci->command("ao-iselect 1");
eci->command("ao-remove");
return 0;
}
int ecicpp_add_output(ECA_CONTROL_INTERFACE* eci, const string& output, const string& format)
{
eci->command("cs-set-audio-format " + format);
eci->command("ao-add " + output);
bool error = eci->error();
eci->command("ao-list");
if (error == true || eci->last_string_list().size() != 1) {
cerr << eci->last_error() << endl;
cerr << "---\nError while processing output " << output << ". Exiting...\n";
return -1;
}
return 0;
}
int ecicpp_connect_chainsetup(ECA_CONTROL_INTERFACE* eci, const string& csname)
{
eci->command("cs-connect");
bool error = eci->error();
string errorstr = eci->last_error();
eci->command("cs-connected");
if (error == true || eci->last_string() != csname) {
cerr << endl << errorstr << endl;
cerr << "---\nUnable to start processing. Exiting...\n";
return -1;
}
return 0;
}
int ecicpp_format_channels(const string& format)
{
std::vector<std::string> tokens = kvu_string_to_vector(format, ',');
DBC_CHECK(tokens.size() >= 3);
return atoi(tokens[1].c_str());
}

View File

@ -0,0 +1,14 @@
#ifndef INCLUDED_ECICPP_HELPERS_H
#define INCLUDED_ECICPP_HELPERS_H
using std::string;
class ECA_CONTROL_INTERFACE;
int ecicpp_add_file_input(ECA_CONTROL_INTERFACE* eci, const string& filename, string* format);
int ecicpp_add_input(ECA_CONTROL_INTERFACE* eci, const string& input, string* format);
int ecicpp_add_output(ECA_CONTROL_INTERFACE* eci, const string& output, const string& format);
int ecicpp_connect_chainsetup(ECA_CONTROL_INTERFACE* eci, const string& csname);
int ecicpp_format_channels(const string& format);
#endif /* INCLUDED_ECICPP_HELPERS_H */

View File

@ -0,0 +1,212 @@
# --------------------------------------------------------------------
# ecasound effect presets definitions
# --------------------------------------------------------------------
#
# - all lines beginning with a '#' are ignored
# - preset format:
# "preset_name_or_number = <chain-1object> | ... | <chain-N objects>"
# - you can use '\' sign to split lines
# - preset parameters and available descriptors:
# -efl:%1,100 = first param of -efl is a public preset parameter
# -pd:name_of_preset = preset description
# -ppn:par1,...,parN = parameter names (public params)
# -ppd:val1,...,valN = default param values
# -ppl:val1,...,valN = lower bounds for param values
# -ppu:val1,...,valN = upper bounds for param values
# -ppt:flags1,...,flagsN = special flags for parameter N
# ('i'=integer, 'l'=logarithmic, 'o'=output, 't'=toggle)
#
# --------------------------------------------------------------------
# ======
# Compression/dynamics (dyn_)
#
dyn_compress_supersoft = -eca:69,0,0.25,0.25 -ea:%1 \
-pd:Supersoft_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
dyn_compress_soft = -eca:69,0,0.25,0.5 -ea:%1 \
-pd:Soft_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
dyn_compress_medium = -eca:69,0,0.25,1.0 -ea:%1 \
-pd:Medium_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
dyn_compress_hard = -eca:69,0,0.5,1.0 -ea:%1 \
-pd:Hard_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
dyn_compress_infinite = -eca:69,0,1.0,1.0 -ea:%1 \
-pd:Infinite_to_one_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
dyn_compress_brutal = -ec:999,10 -ea:%1 \
-pd:Ultra_brutal_compressor -ppn:gain-% -ppd:100 -ppl:0 -ppu:1000
# ======
# EQ (eq_)
#
eq_template = -efb:10,20 -ea:%1 | \
-efb:40,40 -ea:%2 | \
-efb:100,80 -ea:%3 | \
-efb:220,160 -ea:%4 | \
-efb:460,320 -ea:%5 | \
-efb:940,640 -ea:%6 | \
-efb:1900,1280 -ea:%7 | \
-efb:3800,2520 -ea:%8 | \
-efb:7620,5120 -ea:%9 | \
-efb:15300,10240 -ea:%10 \
-pd:Big_eq_template \
-ppn:10hz,40hz,100hz,220hz,460hz,940hz,1900hz,3800hz,7620hz,15300hz \
-ppd:100,100,100,100,100,100,100,100,100,100 \
-ppl:0,0,0,0,0,0,0,0,0,0 \
-ppu:500,500,500,500,500,500,500,500,500,500
eq_template2 = -efb:1000,2000 -ea:%1 | \
-efb:4000,2000 -ea:%2 \
-pd:Dual_band_eq_template \
-ppn:1000hz,4000hz -ppd:100,100 \
-ppl:0,0 -ppu:500,500
# ======
# Filters (f_)
#
f_lowp_sine = -ef3:800,1.5,0.9 -kos:1,400,4200,0.2,0 \
-pd:Reson_lowpass_filter_controlled_by_a_sine_oscillator
f_lowp_sine2 = -efl:400 -kos:1,200,2000,0.5,0 \
-pd:Lowpass_filter_controlled_by_a_sine_oscillator
f_high_and_low = -efl:400 | -efh:4000 -ea:800 \
-pd:Parallel_high_and_lowpass_filters
f_res_bandpass = -ef1:%1,%2 \
-pd:Reson_bandpass_filter -ppn:freq,width -ppd:1500,700 -ppl:0,1
f_res_lowpass = -ef3:%1,1.5,0.7 \
-pd:Reson_lowpass_filter -ppd:800 -ppl:0
f_lowpass = -efl:%1 -ppn:freq_hz -ppd:300 -pd:Simple_lowpass_filter
f_bandpass = -efb:%1,%2 \
-pd:Bandpass_filter -ppn:freq,width -ppd:1500,700 -ppl:0,1
f_rejectband = -efr:1500,1000 -pd:Band_reject_filter
f_highpass = -efh:2000 \
-pd:Reson_lowpass -ppd:1500 -ppl:0
f_inverse_comb = -efi:8,0.999 \
-pd:Inverse_comb_filter
f_resonator = -efs:1500,1000 -pd:Resonator_filter
f_two_filters = -efl:800 -ea:%1 | -efh:800 -ea:%2 \
-pd:Parallel_highpass_and_lowpass_filters \
-ppl:0,0 -ppu:1000,- \
-ppd:100,100 -ppn:lowgain,highgain
f_two_filters_pareq = -efl:%1 -ea:%2 | \
-efh:%3 -ea:%4 \
-ppn:lowfreq,lowgain,highfreq,highgain \
-ppd:200,100,2000,100 \
-pd:Two_paraller_filters_with_gain_controls
f_filtertest = -efl:%1 -ea:100 | \
-efh:%2 -ea:100 | \
-ea:100 -ppd:100 -ppn:freq1,freq2 \
-pd:Two_paraller_filters
# ======
# Gates (gate_)
gate_noisegate_1 = -enm:18,20,50,50,50 -pd:Noise_gate
gate_noisegate_delanalog = -enm:0.20,0.1,1000,50,0 -pd:Noise_gate_for_analog_hum_removal
gate_crop = -gc:1,0.5 -pd:Crop_gate_example
gate_threshold = -ge:15,20,1 -pd:Threshold_gate_example
# ======
# Time/delay effects (time_)
time_reverb1 = -etr:40,0,85 -pd:Bathroom_reverb
time_reverb2 = -etr:60,0,70 -pd:Plain_reverb
time_reverb3 = -etf:30 -pd:Fake_stereo
time_reverb4 = -pn:reverb1 -pn:reverb2 -pd:Reverb_combo
time_delay1 = -etd:200,0,3,60 -pd:200ms_triple_delay
time_delay2 = -etm:200,3,60 -pd:200ms_triple_multidelay
time_wicked_dub = -etm:500,1,90 -epp:100 -kos:1,0,100,0.3,0.5 | \
-etm:333,1,90 -epp:0 -kos:1,0,100,0.8,0 | -ea:90 \
-pd:Wicked_dub_mix
time_flanger1 = -etl:2,20,50,0.5 -pd:Flanger
time_chorus1 = -etc:2,20,50,0.5 -pd:Chorus
time_phaser1 = -etp:2,50,50,0.05 -pd:Phaser
# ======
# Various / mixes (var_)
var_sweeping_pan = -epp:0 -kos:1,0,100,%1,5 \
-pd:Sweeping_pan_envelope -ppn:speed_hz -ppd:0.2
var_switching_pan = -epp:0 -kf:1,0,100,%1,0,0 \
-pd:Panner_that_alternates_between_left_and_right -ppn:speed_hz -ppd:0.2
var_chipmunk = -ei:400 -efl:400 -kos:1,400,10000,2,0 \
-pd:Chipmunk_generator
var_parchip = -ei:%1 -efl:400 -kos:1,400,10000,%2,0 \
-ppn:pitch,modfreq -ppd:100,0.5 \
-pd:Chipmunk_sweep
var_paralmadness = -efb:0,2000 -kos:1,1,3000,%1,0 -ea:150 | \
-efb:0,2000 -kos:1,3000,5000,%2,0 -ea:150 | \
-efh:0 -kos:1,3000,5000,%3,0 -ea:200 \
-ppn:freq1,freq2,freq3 -ppd:0.2,0.2,0.2 \
-pd:Parallel_madness
# ======
# Contributed / Arto Hamara [artham]
var_stretched_tape = -ei:100 -kos:1,93,100,.5,0 -kx -kos:4,.1,1,.1 \
-pd:Stretched_tape
var_molten_tape = -ei:100 -kos:1,85,105,.5,0 -kx -kos:4,.1,2,.1 \
-pd:Molten_tape
var_dali = -ei:100 -kos:1,85,105,.5,0 -kx -kos:4,.1,2,.1 \
-etd:100,1,0,70 -epp:0 -kos:1,20,80,.5,0 -kx -kos:4,.1,2,.1 \
-pd:Dali
# ======
# Contributed / S.Massy [smassy]
# Results of spending an hour messing around.
#
var_aw = -efl:0 -kos:1,500,5500,%1,0 -ppn:speed -ppd:0.5 \
-pd:Classic_auto_wah
var_aw_custom = -efl:0 -kos:1,%1,%2,%3,0 -ppn:low,high,speed -ppd:100,8000,0.5 \
-pd:Class_auto_wah_with_controls
# Now the autowah again but with the triangular osc which gives a sharper
# movement. It really depends of what you're playing, can sound as good as it
# can sound bad. That's the joy of autowahs.
var_aw_tri = -efl:0 -kf:1,500,5500,%1,1,0 -ppn:speed -ppd:0.5 \
-pd:Auto_wah_triangular_osc
# Now once again we define another version with more definable params.
var_aw_tri_custom = -efl:0 -kf:1,%low,%high,%1,1,0 -ppn:speed -ppd:0.5 \
-pd:Auto_wah_triangular_osc_with_control
# Experimental stuff:
# I was trying to have a wah reacting to the volume, it doesn't work very
# well but I still end up with a "to dig up" envelope shaper.
var_aw_ksv = -eS:0 -efl:0 -ksv:1,1000,6000,0,1 \
-pd:Volume_sensitive_wah
# ======
# Presets using LADSPA plugins (lad_)
lad_hermes = \
-eli:1200,3,%1,0.27,%2,100,%3,40,%4,1.5,1,2,-4,-4,-50,-20,-20,-20,200,1000,3,1,3,5,1500,0.65,0,130,0,5,400,0.8,0,0,-177,1,150,0.9,0.97,30,30,0.025,0.9,0.5,0.05,0.7,0.5,0.1,0.5,0.5,0,20,20 \
-pd:LADSPA_hermesFilter -ppn:p1,p2,p3,p4 -ppd:1,1,1,1
lad_sc4 = \
-eli:1882,0,40,40,-18,6,6,6,%1,%2 \
-pd:LADSPA_SC4_compressor -ppn:output-amplitude-dB,output-gain-reduction-dB \
-ppd:0,0 -ppt:lo,lo
lad_sc4_rg = \
-eli:1882,0,40,40,-18,%1,6,%2,%3,%4 \
-pd:LADSPA_SC4_compressor -ppn:ratio,gain-dB,output-amplitude-dB,output-gain-reduction-dB \
-ppd:6,3,0,0 -ppl:1,-40 -ppu:20,12 -ppt:-,-,lo,lo
lad_metronome = -el:sine_fcac,880,1 -eemb:%1,10 -efl:2000 \
-pd:LADSPA_sineosc_metronome -ppn:bpm -ppd:120 -ppl:1
lad_oscillator_test = -eli:1205,%1,0 -ea:%2 \
-pd:LADSPA_Oscillator_test \
-ppn:freq,gain1 \
-ppd:200,100 \
-ppl:1,0 -ppu:1300,1000 \
-ppt:-,-
lad_oscillator_stack = -el:analogueOsc,%1,%2 -ea:%4 | \
-el:analogueOsc,%1,%3 -ea:%5 \
-pd:LADSPA_stack_of_analogue_oscillators \
-ppn:freq,osctype1,osctype2,gain1,gain2 \
-ppd:200,0,0,100,100 \
-ppl:1,0,0,0,0 -ppu:1300,3,3,1000,1000 \
-ppt:-,i,i,-
# ======
# Other / compatibility presets
metronome = -el:sine_fcac,880,1 -eemb:%1,10 -efl:2000 \
-ppn:bpm -ppd:100 -pd:Sineosc_metronome

Some files were not shown because too many files have changed in this diff Show More