mirror of
https://github.com/italicsjenga/ableton-rack-converter.git
synced 2024-11-25 08:31:30 +11:00
loads and saves!!!
This commit is contained in:
parent
797799ae2d
commit
e2641154d2
67
Cargo.lock
generated
67
Cargo.lock
generated
|
@ -7,8 +7,7 @@ name = "ableton-rack-converter"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"flate2",
|
||||
"minidom",
|
||||
"quick-xml 0.22.0",
|
||||
"xml_dom",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -17,6 +16,15 @@ version = "1.0.2"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "1.0.1"
|
||||
|
@ -56,21 +64,21 @@ version = "0.2.98"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "320cfe77175da3a483efed4bc0adc1968ca050b098ce4f2f1c13a56626128790"
|
||||
|
||||
[[package]]
|
||||
name = "log"
|
||||
version = "0.4.14"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc"
|
||||
|
||||
[[package]]
|
||||
name = "minidom"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "332592c2149fc7dd40a64fc9ef6f0d65607284b474cef9817d1fc8c7e7b3608e"
|
||||
dependencies = [
|
||||
"quick-xml 0.20.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.4.4"
|
||||
|
@ -81,15 +89,6 @@ dependencies = [
|
|||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "26aab6b48e2590e4a64d1ed808749ba06257882b461d01ca71baeb747074a6dd"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "quick-xml"
|
||||
version = "0.22.0"
|
||||
|
@ -98,3 +97,31 @@ checksum = "8533f14c8382aaad0d592c812ac3b826162128b65662331e1127b45c3d18536b"
|
|||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.25"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b"
|
||||
|
||||
[[package]]
|
||||
name = "xml_dom"
|
||||
version = "0.2.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9d785025af9dcb8f8b8ce48c4f5405b8469833802a3432b04838b392c2d97287"
|
||||
dependencies = [
|
||||
"log",
|
||||
"quick-xml",
|
||||
"regex",
|
||||
]
|
||||
|
|
|
@ -7,5 +7,4 @@ edition = "2018"
|
|||
|
||||
[dependencies]
|
||||
flate2 = "1.0"
|
||||
quick-xml = "0.22.0"
|
||||
minidom = "0.13.0"
|
||||
xml_dom = "0.2.5"
|
|
@ -1,6 +1,9 @@
|
|||
use ableton_rack_converter::load_adg;
|
||||
use ableton_rack_converter;
|
||||
use xml_dom::level2::RefNode;
|
||||
|
||||
fn main() {
|
||||
let filename = String::from("C:\\Users\\janka\\Documents\\Projects\\Programming\\ableton-rack-converter\\validation\\Utility10.adg");
|
||||
let device = load_adg(&filename);
|
||||
let file_load = String::from("C:\\Users\\janka\\Documents\\Projects\\Programming\\ableton-rack-converter\\validation\\Utility10.adg");
|
||||
let file_save = String::from("C:\\Users\\janka\\Documents\\Projects\\Programming\\ableton-rack-converter\\validation\\Utility10_save.adg");
|
||||
let device: RefNode = ableton_rack_converter::load_adg(&file_load);
|
||||
ableton_rack_converter::save_adg(&device, &file_save);
|
||||
}
|
||||
|
|
58
src/lib.rs
58
src/lib.rs
|
@ -1,50 +1,46 @@
|
|||
use flate2::read::GzDecoder;
|
||||
use minidom::Element;
|
||||
use std::{fs::File, io::Read, str};
|
||||
use flate2::{read::GzDecoder, write::GzEncoder, Compression};
|
||||
use std::{
|
||||
fs::{self, File},
|
||||
io::{Read, Write},
|
||||
str,
|
||||
};
|
||||
use xml_dom::{level2::RefNode, parser};
|
||||
|
||||
pub fn load_adg(filename: &str) -> AbletonDeviceGroup {
|
||||
let contents = File::open(filename).unwrap();
|
||||
pub fn load_adg(filename: &str) -> RefNode {
|
||||
let contents = File::open(filename).expect("failed to load file");
|
||||
let xml = decompress(contents);
|
||||
let stripped = strip_first_line(&xml);
|
||||
// println!("{}", stripped);
|
||||
decode(&stripped);
|
||||
AbletonDeviceGroup::new(xml)
|
||||
decode(&xml)
|
||||
}
|
||||
|
||||
fn decompress(loaded_file: File) -> String {
|
||||
let mut decoder = GzDecoder::new(loaded_file);
|
||||
let mut decompressed = String::new();
|
||||
decoder.read_to_string(&mut decompressed).unwrap();
|
||||
decoder
|
||||
.read_to_string(&mut decompressed)
|
||||
.expect("could not decompress file");
|
||||
decompressed
|
||||
}
|
||||
|
||||
fn decode(xml: &str) {
|
||||
let root: Result<Element, _> = xml.parse();
|
||||
println!("{:?}", root);
|
||||
// let root2 = root.unwrap();
|
||||
fn decode(xml: &str) -> RefNode {
|
||||
parser::read_xml(xml).expect("failed to parse xml")
|
||||
}
|
||||
|
||||
fn strip_first_line(text: &str) -> &str {
|
||||
let bytes = text.trim().as_bytes();
|
||||
for (i, &val) in bytes.iter().enumerate() {
|
||||
if val == b'\n' {
|
||||
return &text[i + 1..bytes.len()];
|
||||
}
|
||||
}
|
||||
&text
|
||||
pub fn save_adg(dom: &RefNode, filename: &str) {
|
||||
let xml = encode(dom);
|
||||
let compressed = compress(&xml);
|
||||
fs::write(filename, compressed).expect("could not write file");
|
||||
}
|
||||
|
||||
pub struct AbletonDeviceGroup {
|
||||
body: String,
|
||||
fn compress(xml: &str) -> Vec<u8> {
|
||||
let mut encoder = GzEncoder::new(Vec::new(), Compression::default());
|
||||
encoder
|
||||
.write_all(xml.as_bytes())
|
||||
.expect("could not compress");
|
||||
encoder.finish().unwrap()
|
||||
}
|
||||
|
||||
impl AbletonDeviceGroup {
|
||||
pub fn new(body: String) -> AbletonDeviceGroup {
|
||||
AbletonDeviceGroup { body }
|
||||
}
|
||||
pub fn get_body(&self) -> &str {
|
||||
&self.body
|
||||
}
|
||||
fn encode(dom: &RefNode) -> String {
|
||||
dom.to_string()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
|
|
653
validation/Utility10_save
Normal file
653
validation/Utility10_save
Normal file
|
@ -0,0 +1,653 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Ableton SchemaChangeCount="5" Revision="a4cc5da58a12b2430753133883a25ad12aa979b7" Creator="Ableton Live 10.1.35" MajorVersion="5" MinorVersion="10.0_377">
|
||||
<GroupDevicePreset>
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<Device>
|
||||
<AudioEffectGroupDevice Id="0">
|
||||
<LomId Value="0"></LomId>
|
||||
<LomIdView Value="0"></LomIdView>
|
||||
<IsExpanded Value="true"></IsExpanded>
|
||||
<On>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="true"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</On>
|
||||
<ParametersListWrapper LomId="0"></ParametersListWrapper>
|
||||
<LastSelectedTimeableIndex Value="0"></LastSelectedTimeableIndex>
|
||||
<LastSelectedClipEnvelopeIndex Value="0"></LastSelectedClipEnvelopeIndex>
|
||||
<LastPresetRef>
|
||||
<Value>
|
||||
<AbletonDefaultPresetRef Id="0">
|
||||
<FileRef>
|
||||
<HasRelativePath Value="true"></HasRelativePath>
|
||||
<RelativePathType Value="5"></RelativePathType>
|
||||
<RelativePath>
|
||||
<RelativePathElement Id="0" Dir="Devices"></RelativePathElement>
|
||||
<RelativePathElement Dir="Audio Effects" Id="1"></RelativePathElement>
|
||||
<RelativePathElement Dir="Audio Effect Rack" Id="2"></RelativePathElement>
|
||||
</RelativePath>
|
||||
<Name Value=""></Name>
|
||||
<Type Value="1"></Type>
|
||||
<Data>43003A005C00500072006F006700720061006D0044006100740061005C00410062006C0065007400
|
||||
6F006E005C004C006900760065002000310030002000530075006900740065005C00520065007300
|
||||
6F00750072006300650073005C0043006F007200650020004C006900620072006100720079005C00
|
||||
44006500760069006300650073005C0041007500640069006F002000450066006600650063007400
|
||||
73005C0041007500640069006F00200045006600660065006300740020005200610063006B000000</Data>
|
||||
<RefersToFolder Value="true"></RefersToFolder>
|
||||
<SearchHint>
|
||||
<PathHint></PathHint>
|
||||
<FileSize Value="0"></FileSize>
|
||||
<Crc Value="0"></Crc>
|
||||
<MaxCrcSize Value="0"></MaxCrcSize>
|
||||
<HasExtendedInfo Value="false"></HasExtendedInfo>
|
||||
</SearchHint>
|
||||
<LivePackName Value="Core Library"></LivePackName>
|
||||
<LivePackId Value="www.ableton.com/0"></LivePackId>
|
||||
</FileRef>
|
||||
<DeviceId Name="AudioEffectGroupDevice"></DeviceId>
|
||||
</AbletonDefaultPresetRef>
|
||||
</Value>
|
||||
</LastPresetRef>
|
||||
<LockedScripts></LockedScripts>
|
||||
<IsFolded Value="false"></IsFolded>
|
||||
<ShouldShowPresetName Value="true"></ShouldShowPresetName>
|
||||
<UserName Value=""></UserName>
|
||||
<Annotation Value=""></Annotation>
|
||||
<SourceContext>
|
||||
<Value></Value>
|
||||
</SourceContext>
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<Branches></Branches>
|
||||
<IsBranchesListVisible Value="true"></IsBranchesListVisible>
|
||||
<IsReturnBranchesListVisible Value="false"></IsReturnBranchesListVisible>
|
||||
<IsRangesEditorVisible Value="false"></IsRangesEditorVisible>
|
||||
<AreDevicesVisible Value="false"></AreDevicesVisible>
|
||||
<MacroControls.0>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.0>
|
||||
<MacroControls.1>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.1>
|
||||
<MacroControls.2>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.2>
|
||||
<MacroControls.3>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.3>
|
||||
<MacroControls.4>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.4>
|
||||
<MacroControls.5>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.5>
|
||||
<MacroControls.6>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.6>
|
||||
<MacroControls.7>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MacroControls.7>
|
||||
<MacroDisplayNames.0 Value="Macro 1"></MacroDisplayNames.0>
|
||||
<MacroDisplayNames.1 Value="Macro 2"></MacroDisplayNames.1>
|
||||
<MacroDisplayNames.2 Value="Macro 3"></MacroDisplayNames.2>
|
||||
<MacroDisplayNames.3 Value="Macro 4"></MacroDisplayNames.3>
|
||||
<MacroDisplayNames.4 Value="Macro 5"></MacroDisplayNames.4>
|
||||
<MacroDisplayNames.5 Value="Macro 6"></MacroDisplayNames.5>
|
||||
<MacroDisplayNames.6 Value="Macro 7"></MacroDisplayNames.6>
|
||||
<MacroDisplayNames.7 Value="Macro 8"></MacroDisplayNames.7>
|
||||
<MacroDefaults.0 Value="-1"></MacroDefaults.0>
|
||||
<MacroDefaults.1 Value="-1"></MacroDefaults.1>
|
||||
<MacroDefaults.2 Value="-1"></MacroDefaults.2>
|
||||
<MacroDefaults.3 Value="-1"></MacroDefaults.3>
|
||||
<MacroDefaults.4 Value="-1"></MacroDefaults.4>
|
||||
<MacroDefaults.5 Value="-1"></MacroDefaults.5>
|
||||
<MacroDefaults.6 Value="-1"></MacroDefaults.6>
|
||||
<MacroDefaults.7 Value="-1"></MacroDefaults.7>
|
||||
<MacroAnnotations.0 Value=""></MacroAnnotations.0>
|
||||
<MacroAnnotations.1 Value=""></MacroAnnotations.1>
|
||||
<MacroAnnotations.2 Value=""></MacroAnnotations.2>
|
||||
<MacroAnnotations.3 Value=""></MacroAnnotations.3>
|
||||
<MacroAnnotations.4 Value=""></MacroAnnotations.4>
|
||||
<MacroAnnotations.5 Value=""></MacroAnnotations.5>
|
||||
<MacroAnnotations.6 Value=""></MacroAnnotations.6>
|
||||
<MacroAnnotations.7 Value=""></MacroAnnotations.7>
|
||||
<ForceDisplayGenericValue.0 Value="false"></ForceDisplayGenericValue.0>
|
||||
<ForceDisplayGenericValue.1 Value="false"></ForceDisplayGenericValue.1>
|
||||
<ForceDisplayGenericValue.2 Value="false"></ForceDisplayGenericValue.2>
|
||||
<ForceDisplayGenericValue.3 Value="false"></ForceDisplayGenericValue.3>
|
||||
<ForceDisplayGenericValue.4 Value="false"></ForceDisplayGenericValue.4>
|
||||
<ForceDisplayGenericValue.5 Value="false"></ForceDisplayGenericValue.5>
|
||||
<ForceDisplayGenericValue.6 Value="false"></ForceDisplayGenericValue.6>
|
||||
<ForceDisplayGenericValue.7 Value="false"></ForceDisplayGenericValue.7>
|
||||
<AreMacroControlsVisible Value="false"></AreMacroControlsVisible>
|
||||
<IsAutoSelectEnabled Value="false"></IsAutoSelectEnabled>
|
||||
<ChainSelector>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</ChainSelector>
|
||||
<ChainSelectorRelativePosition Value="-1073741824"></ChainSelectorRelativePosition>
|
||||
<ViewsToRestoreWhenUnfolding Value="2"></ViewsToRestoreWhenUnfolding>
|
||||
<ReturnBranches></ReturnBranches>
|
||||
<BranchesSplitterProportion Value="0.5"></BranchesSplitterProportion>
|
||||
<ShowBranchesInSessionMixer Value="false"></ShowBranchesInSessionMixer>
|
||||
<MacroColorIndex.0 Value="0"></MacroColorIndex.0>
|
||||
<MacroColorIndex.1 Value="0"></MacroColorIndex.1>
|
||||
<MacroColorIndex.2 Value="0"></MacroColorIndex.2>
|
||||
<MacroColorIndex.3 Value="0"></MacroColorIndex.3>
|
||||
<MacroColorIndex.4 Value="0"></MacroColorIndex.4>
|
||||
<MacroColorIndex.5 Value="0"></MacroColorIndex.5>
|
||||
<MacroColorIndex.6 Value="0"></MacroColorIndex.6>
|
||||
<MacroColorIndex.7 Value="0"></MacroColorIndex.7>
|
||||
<LockId Value="0"></LockId>
|
||||
<LockSeal Value="0"></LockSeal>
|
||||
<ChainsListWrapper LomId="0"></ChainsListWrapper>
|
||||
<ReturnChainsListWrapper LomId="0"></ReturnChainsListWrapper>
|
||||
</AudioEffectGroupDevice>
|
||||
</Device>
|
||||
<PresetRef>
|
||||
<AbletonDefaultPresetRef Id="0">
|
||||
<FileRef>
|
||||
<HasRelativePath Value="true"></HasRelativePath>
|
||||
<RelativePathType Value="5"></RelativePathType>
|
||||
<RelativePath>
|
||||
<RelativePathElement Id="0" Dir="Devices"></RelativePathElement>
|
||||
<RelativePathElement Dir="Audio Effects" Id="1"></RelativePathElement>
|
||||
<RelativePathElement Id="2" Dir="Audio Effect Rack"></RelativePathElement>
|
||||
</RelativePath>
|
||||
<Name Value=""></Name>
|
||||
<Type Value="1"></Type>
|
||||
<Data>43003A005C00500072006F006700720061006D0044006100740061005C00410062006C0065007400
|
||||
6F006E005C004C006900760065002000310030002000530075006900740065005C00520065007300
|
||||
6F00750072006300650073005C0043006F007200650020004C006900620072006100720079005C00
|
||||
44006500760069006300650073005C0041007500640069006F002000450066006600650063007400
|
||||
73005C0041007500640069006F00200045006600660065006300740020005200610063006B000000</Data>
|
||||
<RefersToFolder Value="true"></RefersToFolder>
|
||||
<SearchHint>
|
||||
<PathHint></PathHint>
|
||||
<FileSize Value="0"></FileSize>
|
||||
<Crc Value="0"></Crc>
|
||||
<MaxCrcSize Value="0"></MaxCrcSize>
|
||||
<HasExtendedInfo Value="false"></HasExtendedInfo>
|
||||
</SearchHint>
|
||||
<LivePackName Value="Core Library"></LivePackName>
|
||||
<LivePackId Value="www.ableton.com/0"></LivePackId>
|
||||
</FileRef>
|
||||
<DeviceId Name="AudioEffectGroupDevice"></DeviceId>
|
||||
</AbletonDefaultPresetRef>
|
||||
</PresetRef>
|
||||
<BranchPresets>
|
||||
<AudioEffectBranchPreset Id="0">
|
||||
<Name Value=""></Name>
|
||||
<IsSoloed Value="false"></IsSoloed>
|
||||
<DevicePresets>
|
||||
<AbletonDevicePreset Id="0">
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<Device>
|
||||
<StereoGain Id="0">
|
||||
<LomId Value="0"></LomId>
|
||||
<LomIdView Value="0"></LomIdView>
|
||||
<IsExpanded Value="true"></IsExpanded>
|
||||
<On>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="true"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</On>
|
||||
<ParametersListWrapper LomId="0"></ParametersListWrapper>
|
||||
<LastSelectedTimeableIndex Value="0"></LastSelectedTimeableIndex>
|
||||
<LastSelectedClipEnvelopeIndex Value="0"></LastSelectedClipEnvelopeIndex>
|
||||
<LastPresetRef>
|
||||
<Value>
|
||||
<AbletonDefaultPresetRef Id="0">
|
||||
<FileRef>
|
||||
<HasRelativePath Value="false"></HasRelativePath>
|
||||
<RelativePathType Value="0"></RelativePathType>
|
||||
<RelativePath></RelativePath>
|
||||
<Name Value=""></Name>
|
||||
<Type Value="0"></Type>
|
||||
<Data></Data>
|
||||
<RefersToFolder Value="false"></RefersToFolder>
|
||||
<SearchHint>
|
||||
<PathHint></PathHint>
|
||||
<FileSize Value="0"></FileSize>
|
||||
<Crc Value="0"></Crc>
|
||||
<MaxCrcSize Value="0"></MaxCrcSize>
|
||||
<HasExtendedInfo Value="false"></HasExtendedInfo>
|
||||
</SearchHint>
|
||||
<LivePackName Value=""></LivePackName>
|
||||
<LivePackId Value=""></LivePackId>
|
||||
</FileRef>
|
||||
<DeviceId Name="StereoGain"></DeviceId>
|
||||
</AbletonDefaultPresetRef>
|
||||
</Value>
|
||||
</LastPresetRef>
|
||||
<LockedScripts></LockedScripts>
|
||||
<IsFolded Value="false"></IsFolded>
|
||||
<ShouldShowPresetName Value="true"></ShouldShowPresetName>
|
||||
<UserName Value=""></UserName>
|
||||
<Annotation Value=""></Annotation>
|
||||
<SourceContext>
|
||||
<Value></Value>
|
||||
</SourceContext>
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<PhaseInvertL>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</PhaseInvertL>
|
||||
<PhaseInvertR>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</PhaseInvertR>
|
||||
<ChannelMode>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="1"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
</ChannelMode>
|
||||
<StereoWidth>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="1"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="4"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</StereoWidth>
|
||||
<MidSideBalance>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="1"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="2"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</MidSideBalance>
|
||||
<MidSideBalanceOn Value="false"></MidSideBalanceOn>
|
||||
<Mono>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</Mono>
|
||||
<BassMono>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</BassMono>
|
||||
<BassMonoAudition Value="false"></BassMonoAudition>
|
||||
<BassMonoFrequency>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="120"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="50"></Min>
|
||||
<Max Value="500"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</BassMonoFrequency>
|
||||
<Balance>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="-1"></Min>
|
||||
<Max Value="1"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</Balance>
|
||||
<Gain>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="1"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="56.2341309"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</Gain>
|
||||
<LegacyGain>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="-35"></Min>
|
||||
<Max Value="35"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</LegacyGain>
|
||||
<Mute>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</Mute>
|
||||
<DcFilter>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="false"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</DcFilter>
|
||||
<LegacyMode Value="false"></LegacyMode>
|
||||
</StereoGain>
|
||||
</Device>
|
||||
<PresetRef>
|
||||
<AbletonDefaultPresetRef Id="0">
|
||||
<FileRef>
|
||||
<HasRelativePath Value="false"></HasRelativePath>
|
||||
<RelativePathType Value="0"></RelativePathType>
|
||||
<RelativePath></RelativePath>
|
||||
<Name Value=""></Name>
|
||||
<Type Value="0"></Type>
|
||||
<Data></Data>
|
||||
<RefersToFolder Value="false"></RefersToFolder>
|
||||
<SearchHint>
|
||||
<PathHint></PathHint>
|
||||
<FileSize Value="0"></FileSize>
|
||||
<Crc Value="0"></Crc>
|
||||
<MaxCrcSize Value="0"></MaxCrcSize>
|
||||
<HasExtendedInfo Value="false"></HasExtendedInfo>
|
||||
</SearchHint>
|
||||
<LivePackName Value=""></LivePackName>
|
||||
<LivePackId Value=""></LivePackId>
|
||||
</FileRef>
|
||||
<DeviceId Name="StereoGain"></DeviceId>
|
||||
</AbletonDefaultPresetRef>
|
||||
</PresetRef>
|
||||
</AbletonDevicePreset>
|
||||
</DevicePresets>
|
||||
<MixerPreset>
|
||||
<AbletonDevicePreset Id="0">
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<Device>
|
||||
<AudioBranchMixerDevice Id="0">
|
||||
<LomId Value="0"></LomId>
|
||||
<LomIdView Value="0"></LomIdView>
|
||||
<IsExpanded Value="true"></IsExpanded>
|
||||
<On>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="true"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</On>
|
||||
<ParametersListWrapper LomId="0"></ParametersListWrapper>
|
||||
<LastSelectedTimeableIndex Value="0"></LastSelectedTimeableIndex>
|
||||
<LastSelectedClipEnvelopeIndex Value="0"></LastSelectedClipEnvelopeIndex>
|
||||
<LastPresetRef>
|
||||
<Value></Value>
|
||||
</LastPresetRef>
|
||||
<LockedScripts></LockedScripts>
|
||||
<IsFolded Value="false"></IsFolded>
|
||||
<ShouldShowPresetName Value="true"></ShouldShowPresetName>
|
||||
<UserName Value=""></UserName>
|
||||
<Annotation Value=""></Annotation>
|
||||
<SourceContext>
|
||||
<Value></Value>
|
||||
</SourceContext>
|
||||
<OverwriteProtectionNumber Value="2561"></OverwriteProtectionNumber>
|
||||
<Speaker>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="true"></Manual>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<MidiCCOnOffThresholds>
|
||||
<Min Value="64"></Min>
|
||||
<Max Value="127"></Max>
|
||||
</MidiCCOnOffThresholds>
|
||||
</Speaker>
|
||||
<Volume>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="1"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="0.0003162277571"></Min>
|
||||
<Max Value="1.99526238"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</Volume>
|
||||
<Panorama>
|
||||
<LomId Value="0"></LomId>
|
||||
<Manual Value="0"></Manual>
|
||||
<MidiControllerRange>
|
||||
<Min Value="-1"></Min>
|
||||
<Max Value="1"></Max>
|
||||
</MidiControllerRange>
|
||||
<AutomationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</AutomationTarget>
|
||||
<ModulationTarget Id="0">
|
||||
<LockEnvelope Value="0"></LockEnvelope>
|
||||
</ModulationTarget>
|
||||
</Panorama>
|
||||
<SendInfos></SendInfos>
|
||||
<RoutingHelper>
|
||||
<Routable>
|
||||
<Target Value="AudioOut/None"></Target>
|
||||
<UpperDisplayString Value="No Output"></UpperDisplayString>
|
||||
<LowerDisplayString Value=""></LowerDisplayString>
|
||||
</Routable>
|
||||
<TargetEnum Value="0"></TargetEnum>
|
||||
</RoutingHelper>
|
||||
<SendsListWrapper LomId="0"></SendsListWrapper>
|
||||
</AudioBranchMixerDevice>
|
||||
</Device>
|
||||
<PresetRef>
|
||||
<AbletonDefaultPresetRef Id="0">
|
||||
<FileRef>
|
||||
<HasRelativePath Value="false"></HasRelativePath>
|
||||
<RelativePathType Value="0"></RelativePathType>
|
||||
<RelativePath></RelativePath>
|
||||
<Name Value=""></Name>
|
||||
<Type Value="0"></Type>
|
||||
<Data></Data>
|
||||
<RefersToFolder Value="false"></RefersToFolder>
|
||||
<SearchHint>
|
||||
<PathHint></PathHint>
|
||||
<FileSize Value="0"></FileSize>
|
||||
<Crc Value="0"></Crc>
|
||||
<MaxCrcSize Value="0"></MaxCrcSize>
|
||||
<HasExtendedInfo Value="false"></HasExtendedInfo>
|
||||
</SearchHint>
|
||||
<LivePackName Value=""></LivePackName>
|
||||
<LivePackId Value=""></LivePackId>
|
||||
</FileRef>
|
||||
<DeviceId Name="AudioBranchMixerDevice"></DeviceId>
|
||||
</AbletonDefaultPresetRef>
|
||||
</PresetRef>
|
||||
</AbletonDevicePreset>
|
||||
</MixerPreset>
|
||||
<BranchSelectorRange>
|
||||
<Min Value="0"></Min>
|
||||
<Max Value="0"></Max>
|
||||
<CrossfadeMin Value="0"></CrossfadeMin>
|
||||
<CrossfadeMax Value="0"></CrossfadeMax>
|
||||
</BranchSelectorRange>
|
||||
<SessionViewBranchWidth Value="55"></SessionViewBranchWidth>
|
||||
<ColorIndex Value="163"></ColorIndex>
|
||||
<AutoColored Value="true"></AutoColored>
|
||||
<AutoColorScheme Value="0"></AutoColorScheme>
|
||||
<SourceContext></SourceContext>
|
||||
</AudioEffectBranchPreset>
|
||||
</BranchPresets>
|
||||
<ReturnBranchPresets></ReturnBranchPresets>
|
||||
</GroupDevicePreset>
|
||||
</Ableton>
|
BIN
validation/Utility10_save.adg
Normal file
BIN
validation/Utility10_save.adg
Normal file
Binary file not shown.
Loading…
Reference in a new issue