sorta-reaper 0.1.0 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/Gemfile.lock +5 -3
- data/examples/simple.rb +2 -1
- data/examples/simple.rpp +6 -3
- data/examples/test_audio.wav +0 -0
- data/examples/test_audio.wav.reapeaks +0 -0
- data/lib/sorta/reaper/entity/item.rb +21 -13
- data/lib/sorta/reaper/entity/source.rb +20 -0
- data/lib/sorta/reaper/render/visitor.rb +11 -0
- data/lib/sorta/reaper/version.rb +1 -1
- data/lib/sorta/reaper.rb +1 -0
- metadata +34 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '09485edf7ea572149341753f23617b9b99dcce0d844cdd2ed146d55cfee353b6'
|
4
|
+
data.tar.gz: acc0a5afe772bf6916e6bd57b23d160496cbad7b8efb5cf6993c85294c6a70ba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6bcdaa187bcb945514870e9da6aaa7de862ca067c7569b788a79f9d67ab782410119f344ae12ce86a39093182f46670336ce35e99c3fb3ee63ed0d9477c1b54
|
7
|
+
data.tar.gz: df0d069154f014d71dd26cfff093036ceed46bed1d426e68997aaf83e0b00c64dc6a8ede6399aecd2df038c8d7756350f18a23651424c61b9ad9248c921d2f41
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
sorta-reaper (0.1.
|
4
|
+
sorta-reaper (0.1.3)
|
5
|
+
dry-struct (~> 1.4.0)
|
6
|
+
dry-types (~> 1.5.1)
|
5
7
|
|
6
8
|
GEM
|
7
9
|
remote: https://rubygems.org/
|
@@ -70,8 +72,8 @@ PLATFORMS
|
|
70
72
|
x86_64-linux
|
71
73
|
|
72
74
|
DEPENDENCIES
|
73
|
-
dry-struct
|
74
|
-
dry-types
|
75
|
+
dry-struct (~> 1.4.0)
|
76
|
+
dry-types (~> 1.5.1)
|
75
77
|
rake (~> 13.0)
|
76
78
|
rspec (~> 3.0)
|
77
79
|
rubocop (~> 1.21)
|
data/examples/simple.rb
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
require_relative "../lib/sorta/reaper"
|
4
4
|
|
5
|
-
|
5
|
+
source = Sorta::Reaper::Entity::Source.new(file: File.join(__dir__, "./test_audio.wav"), format: "wave")
|
6
|
+
item = Sorta::Reaper::Entity::Item.new(position: 0, length: 10, source: source)
|
6
7
|
track = Sorta::Reaper::Entity::Track.new(name: "generated_track", items: [item])
|
7
8
|
project = Sorta::Reaper::Entity::Project.new(tracks: [track])
|
8
9
|
|
data/examples/simple.rpp
CHANGED
@@ -1,12 +1,15 @@
|
|
1
1
|
<REAPER_PROJECT 0.1 "6.53/win64" 1651778831
|
2
|
-
<TRACK {
|
2
|
+
<TRACK {a100d418-cea3-4a1f-aeda-a0820e2b1eba}
|
3
3
|
NAME "generated_track"
|
4
4
|
<ITEM
|
5
5
|
POSITION 0
|
6
6
|
LENGTH 10
|
7
|
-
|
7
|
+
<SOURCE MP3
|
8
|
+
FILE "/home/odebe/prog/sorta-reaper/examples/./test_audio.wav"
|
8
9
|
>
|
9
|
-
|
10
|
+
IGUID "8f849df1-59f2-4e67-8c67-6bd876ae3622"
|
11
|
+
>
|
12
|
+
TRACKID "{a100d418-cea3-4a1f-aeda-a0820e2b1eba}"
|
10
13
|
>
|
11
14
|
<NOTES 0 2
|
12
15
|
>
|
Binary file
|
Binary file
|
@@ -8,24 +8,32 @@ module Sorta
|
|
8
8
|
module Entity
|
9
9
|
class Item < Abstract
|
10
10
|
attribute :position, Types::Integer | Types::Float
|
11
|
-
attribute :length, Types::Integer | Types::Float
|
11
|
+
attribute? :length, Types::Integer | Types::Float
|
12
12
|
|
13
13
|
attribute :iguid, Types::String.constrained(uuid_v1: true).default { SecureRandom.uuid }
|
14
14
|
|
15
|
+
attribute? :name, Types::String
|
16
|
+
attribute? :source, Source
|
17
|
+
|
15
18
|
# <ITEM
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
19
|
+
# POSITION 3
|
20
|
+
# SNAPOFFS 0
|
21
|
+
# LENGTH 8.5
|
22
|
+
# LOOP 1
|
23
|
+
# ALLTAKES 0
|
24
|
+
# FADEIN 1 0 0 1 0 0 0
|
25
|
+
# FADEOUT 1 0 0 1 0 0 0
|
26
|
+
# MUTE 0 0
|
27
|
+
# SEL 0
|
28
|
+
# IGUID {7920763B-F9A4-4E42-A5A4-48BB596C96B4}
|
29
|
+
# IID 2
|
30
|
+
# NAME 09-220503_1522.wav
|
31
|
+
# VOLPAN 1 0 1 -1
|
32
|
+
# SOFFS 0
|
33
|
+
# PLAYRATE 1 1 0 -1 0 0.0025
|
34
|
+
# CHANMODE 0
|
35
|
+
# GUID {85A6592F-2881-4A99-A935-1858EDF6E2D7}
|
27
36
|
# >
|
28
|
-
# >
|
29
37
|
end
|
30
38
|
end
|
31
39
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "abstract"
|
4
|
+
|
5
|
+
module Sorta
|
6
|
+
module Reaper
|
7
|
+
module Entity
|
8
|
+
class Source < Abstract
|
9
|
+
attribute? :file, Types::String
|
10
|
+
|
11
|
+
# WAVE, MP3, etc...
|
12
|
+
attribute? :format, Types::String
|
13
|
+
|
14
|
+
# <SOURCE WAVE
|
15
|
+
# FILE "C:\Users\odebe\Documents\REAPER Media\133\09-220503_1522.wav"
|
16
|
+
# >
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -58,6 +58,17 @@ module Sorta
|
|
58
58
|
strings.join("\n")
|
59
59
|
end
|
60
60
|
|
61
|
+
def visit_Source(obj)
|
62
|
+
strings = []
|
63
|
+
strings << "<SOURCE #{obj.format.upcase}"
|
64
|
+
|
65
|
+
attrs = obj.attributes.except(:format)
|
66
|
+
strings << process_attributes(attrs)
|
67
|
+
|
68
|
+
strings << ">"
|
69
|
+
strings.join("\n")
|
70
|
+
end
|
71
|
+
|
61
72
|
def visit_Notes(obj)
|
62
73
|
"<NOTES #{obj.unnamed_1} #{obj.unnamed_2}\n>"
|
63
74
|
end
|
data/lib/sorta/reaper/version.rb
CHANGED
data/lib/sorta/reaper.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sorta-reaper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mihail Odebe
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-05-
|
12
|
-
dependencies:
|
11
|
+
date: 2022-05-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: dry-struct
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.4.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.4.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: dry-types
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 1.5.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.5.1
|
13
41
|
description: Allow to parse and generate .rpp files from Reaper DAW
|
14
42
|
email:
|
15
43
|
- derpiranha@gmail.com
|
@@ -30,6 +58,8 @@ files:
|
|
30
58
|
- examples/simple.rb
|
31
59
|
- examples/simple.rpp
|
32
60
|
- examples/test2.rpp
|
61
|
+
- examples/test_audio.wav
|
62
|
+
- examples/test_audio.wav.reapeaks
|
33
63
|
- lib/sorta/reaper.rb
|
34
64
|
- lib/sorta/reaper/entity/abstract.rb
|
35
65
|
- lib/sorta/reaper/entity/applyfx_cfg.rb
|
@@ -37,6 +67,7 @@ files:
|
|
37
67
|
- lib/sorta/reaper/entity/notes.rb
|
38
68
|
- lib/sorta/reaper/entity/project.rb
|
39
69
|
- lib/sorta/reaper/entity/record_cfg.rb
|
70
|
+
- lib/sorta/reaper/entity/source.rb
|
40
71
|
- lib/sorta/reaper/entity/track.rb
|
41
72
|
- lib/sorta/reaper/refinements.rb
|
42
73
|
- lib/sorta/reaper/render/visitor.rb
|