<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://halfgeek.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Audacity_recovery_script</id>
	<title>Audacity recovery script - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://halfgeek.org/wiki/index.php?action=history&amp;feed=atom&amp;title=Audacity_recovery_script"/>
	<link rel="alternate" type="text/html" href="https://halfgeek.org/wiki/index.php?title=Audacity_recovery_script&amp;action=history"/>
	<updated>2026-06-18T15:00:30Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.0</generator>
	<entry>
		<id>https://halfgeek.org/wiki/index.php?title=Audacity_recovery_script&amp;diff=322&amp;oldid=prev</id>
		<title>161.253.47.104 at 05:58, 26 November 2005</title>
		<link rel="alternate" type="text/html" href="https://halfgeek.org/wiki/index.php?title=Audacity_recovery_script&amp;diff=322&amp;oldid=prev"/>
		<updated>2005-11-26T05:58:30Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;I wrote this script because [http://audacity.sourceforge.net/help/faq?s=files&amp;amp;i=crash-recovery the Audacity Recovery Utility] I installed didn&amp;#039;t work at all.  It operates on mostly the same principles.  It prints an sh script on stdout so you can edit it before running it.&lt;br /&gt;
&lt;br /&gt;
This version only handles two-channel recording, but could easily be modified.&lt;br /&gt;
&lt;br /&gt;
=Usage=&lt;br /&gt;
&lt;br /&gt;
cd to the data directory of the project and do&lt;br /&gt;
&lt;br /&gt;
 ls | recov &amp;gt; out.sh&lt;br /&gt;
 sh out.sh&lt;br /&gt;
&lt;br /&gt;
=Source=&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#! /usr/bin/perl&lt;br /&gt;
&lt;br /&gt;
use warnings;&lt;br /&gt;
use strict;&lt;br /&gt;
use Carp;&lt;br /&gt;
&lt;br /&gt;
my @rescue = ();&lt;br /&gt;
&lt;br /&gt;
while(&amp;lt;&amp;gt;) {&lt;br /&gt;
	chomp;&lt;br /&gt;
	if(/b(\d+)\.au$/o) {&lt;br /&gt;
		push(@rescue,$_);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print STDERR &amp;quot;Got &amp;quot; . scalar(@rescue) . &amp;quot; file(s).\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my @chains = ();&lt;br /&gt;
my $previndex = undef;&lt;br /&gt;
my $chain = undef;&lt;br /&gt;
&lt;br /&gt;
foreach(sort @rescue) {&lt;br /&gt;
	/b(\d+)\.au$/o or die &amp;quot;Unrecognized filename $_\n&amp;quot;;&lt;br /&gt;
	my $index = $1;&lt;br /&gt;
&lt;br /&gt;
	unless( defined($chain) and +($index == $previndex + 1) ) {&lt;br /&gt;
		$chain = [];&lt;br /&gt;
		push(@chains,$chain);&lt;br /&gt;
	}&lt;br /&gt;
	push(@$chain, $_);&lt;br /&gt;
	$previndex = $index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
print STDERR &amp;quot;Separated into &amp;quot; . scalar(@chains) . &amp;quot; contiguous chain(s).\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
print &amp;quot;#! /bin/sh\n&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
my $chainno = 0;&lt;br /&gt;
my $tmp = 0;&lt;br /&gt;
&lt;br /&gt;
foreach my $chain (@chains)&lt;br /&gt;
{&lt;br /&gt;
	my @lists = ([],[]);&lt;br /&gt;
&lt;br /&gt;
	my $chan = 0;&lt;br /&gt;
&lt;br /&gt;
	foreach(sort @$chain) {&lt;br /&gt;
		push( @{$lists[$chan]}, $_ );&lt;br /&gt;
		$chan = +($chan + 1) % 2;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	foreach my $chan (0, 1) {&lt;br /&gt;
		print &amp;quot;echo Recovering chain $chainno channel $chan\n&amp;quot;;&lt;br /&gt;
		my @oproc = ( @{$lists[$chan]} );&lt;br /&gt;
		$_ = qq(&amp;quot;$_&amp;quot;) foreach @oproc;&lt;br /&gt;
&lt;br /&gt;
		my $dst = &amp;#039;&amp;#039;;&lt;br /&gt;
		my $ind = 0;&lt;br /&gt;
&lt;br /&gt;
		while( @oproc &amp;gt; 1 ) {&lt;br /&gt;
			my @proc = @oproc;&lt;br /&gt;
			last if @proc == 1;&lt;br /&gt;
			@oproc = ();&lt;br /&gt;
&lt;br /&gt;
			while( @proc ) {&lt;br /&gt;
				print &amp;quot;echo Pass $ind\n&amp;quot;;&lt;br /&gt;
				$dst = &amp;quot;tmp.output-$tmp.au&amp;quot;;&lt;br /&gt;
				my @round = splice @proc, 0, 30;&lt;br /&gt;
				print &amp;quot;sox @round $dst\n&amp;quot;;&lt;br /&gt;
				push(@oproc, $dst);&lt;br /&gt;
&lt;br /&gt;
				++$ind;&lt;br /&gt;
				++$tmp;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
		print &amp;quot;mv $oproc[0] output-$chainno-$chan.au\n&amp;quot;;&lt;br /&gt;
		print &amp;quot;echo Done.\n&amp;quot;;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	++$chainno;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>161.253.47.104</name></author>
		
	</entry>
</feed>