Dnes v noci jsem si nahrával m2On Year 07 (speciální silvestrovský přímý přenos z Rimini) a hned poté m2o Only 90 (celý den jen super stará dobrá muzika z 90. let). Nahrávání jsem tedy nechal jet přes noc.
Po více než třinácti hodinách záznamu však program Audacity z ničeho nic přestal nahrávat. Dokonce v něm ani nešlo spustit již zaznamenaná data. Jakoby se prostě vypařila. Na disku mi však zůstalo 16 GB dat v téměř 16400 souborech. Žádným z importů, které program nabízí, nešlo data dostat zpět do ucelené formy. Naštěstí jsem po chvíli zkoumání zjistil, že je-li nahrávka uložena jako projekt, program si vytvoří samostatný XML soubor, ve kterém jsou zaznamenány informace o všech souborech a času jejich umístění. No a protože se mi doopravdy nechtělo ručně zapisovat do souboru všech 16 tisíc řádků, rozhodl jsem se pro vygenerování souboru pomocí php - a je to opravdu velmi jednoduché!
Zde je kompletní zdrojový kód, prosím, čtěte v něm umístěné komentáře!
1 <?
2
3 /* do atributu projectname nastavíme název složky, ve které jsou umístěny všechny datové soubory */
4
5 $content = '<?xml version="1.0"?>
6 <audacityproject projname="audacity_temp" version="1.1.0" audacityversion="1.2.4" sel0="0.0000000000" sel1="0.0000000000" vpos="0" h="9.5550113379" zoom="86.1328125000" rate="44100.000000" >
7 <tags title="" artist="" album="" track="-1" year="" genre="-1" comments="" id3v2="1" />
8 ';
9
10
11 /* jelikož Audacity ukládá hudbu pro každý kanál zvlášť, uložíme si do dvou různých proměnných data pro určitý kanál - u prvního MUSÍ být channel="0" a u druhého MUSÍ být channel="1"
12
13 hodnota maxsamples je maximální hodnota dat uložených v jednom souboru - doporučuji nejdříve zkusit něco nahrát a podívat se do výsledného *.aup souboru, po jak velkých částech Váš program ukládá data
14
15 numsamples je asi celkový počet uložených dat, nicméně já ho nijak neměnil a i tak mi to fungovalo */
16
17 $content1=' <wavetrack name="Audio stopa" channel="0" linked="1" offset="0.00000000" rate="44100.000000" gain="1.000000" pan="0.000000" >
18 <sequence maxsamples="262144" sampleformat="262159" numsamples="801280" >
19 ';
20
21
22 $content2=' <wavetrack name="Audio stopa" channel="1" linked="0" offset="0.00000000" rate="44100.000000" gain="1.000000" pan="0.000000" >
23 <sequence maxsamples="262144" sampleformat="262159" numsamples="801280" >
24 ';
25
26
27 /* zde už přichází na řadu samotné generování dat
28
29 16368 je počet souborů uložených ve složce, kterou jste výše nastavili!
30
31 atribut len MUSÍ mít stejnou hodnotu jako je hodnota maxsamples popisovaná výše, to samé číslo vepište u $start=$start+262144; */
32
33 $start=0;
34
35 for($i=0;$i<=16368;$i++){
36
37
38 if(strlen($i)==1){
39 $cislo="0000".$i;
40 }
41 elseif(strlen($i)==2){
42 $cislo="000".$i;
43 }
44 elseif(strlen($i)==3){
45 $cislo="00".$i;
46 }
47 elseif(strlen($i)==4){
48 $cislo="0".$i;
49 }
50 elseif(strlen($i)==5){
51 $cislo=$i;
52 }
53
54
55
56 if($i%2==0){
57
58 $content1.=' <waveblock start="'.$start.'" >
59 <simpleblockfile filename="b'.$cislo.'.au" len="262144"/>
60 </waveblock>
61 ';
62
63 }
64 else{
65
66 $content2.=' <waveblock start="'.$start.'" >
67 <simpleblockfile filename="b'.$cislo.'.au" len="262144"/>
68 </waveblock>
69 ';
70
71 }
72
73
74
75 if($i%2==0){
76 $start=$start+262144;
77 }
78
79 }
80
81
82 /* uzavřeme všechny tagy */
83
84 $content1.=" </sequence>
85 <envelope numpoints='0'>
86 </envelope>
87 </wavetrack>
88 ";
89
90
91 $content3=" </sequence>
92 <envelope numpoints='0'>
93 </envelope>
94 </wavetrack>
95 ";
96
97
98 $content4='</audacityproject>';
99
100
101
102 /* spojíme proměnné */
103
104 $globalcontent=$content.$content1.$content2.$content3.$content4;
105
106 $soubor = fopen("./aaa.aup", "w+"); // vytvoříme soubor
107 fwrite($soubor, $globalcontent);
108 fclose($soubor);
109
110
111
112 ?>
Vytvořený soubor otevřte v programu Audacity. To je vše.