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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4708894ccc4183f9e61488260e7e9648e0d4e487914660855634b1680fffd80
4
- data.tar.gz: a2bbbee2b163a4968e389aa78630fcbc957e364aeef8bc05b7ff2f407d01e0bf
3
+ metadata.gz: '09485edf7ea572149341753f23617b9b99dcce0d844cdd2ed146d55cfee353b6'
4
+ data.tar.gz: acc0a5afe772bf6916e6bd57b23d160496cbad7b8efb5cf6993c85294c6a70ba
5
5
  SHA512:
6
- metadata.gz: 93e83b9a156de700a88d82912bc23e0b52c7ee8b0cee06507f21431da4d1404326b392d7744a169622db7899e0d21c2021e2b9533cd5fe5c815d91e841e1ac22
7
- data.tar.gz: b73b7834478da332c92e23cbbf729080f9c61a323222c86aadc44d88c20b7b235b45fe0a71aee5486c3add7b2642280451e6a7d4a47b3a25e3797135bf1aa4e8
6
+ metadata.gz: d6bcdaa187bcb945514870e9da6aaa7de862ca067c7569b788a79f9d67ab782410119f344ae12ce86a39093182f46670336ce35e99c3fb3ee63ed0d9477c1b54
7
+ data.tar.gz: df0d069154f014d71dd26cfff093036ceed46bed1d426e68997aaf83e0b00c64dc6a8ede6399aecd2df038c8d7756350f18a23651424c61b9ad9248c921d2f41
data/Gemfile CHANGED
@@ -11,5 +11,5 @@ gem "rspec", "~> 3.0"
11
11
 
12
12
  gem "rubocop", "~> 1.21"
13
13
 
14
- gem "dry-struct"
15
- gem "dry-types"
14
+ gem "dry-struct", "~> 1.4.0"
15
+ gem "dry-types", "~> 1.5.1"
data/Gemfile.lock CHANGED
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- sorta-reaper (0.1.0)
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
- item = Sorta::Reaper::Entity::Item.new(position: 0, length: 10)
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 {812edd73-2eeb-4906-9f4b-c46b864bf60b}
2
+ <TRACK {a100d418-cea3-4a1f-aeda-a0820e2b1eba}
3
3
  NAME "generated_track"
4
4
  <ITEM
5
5
  POSITION 0
6
6
  LENGTH 10
7
- IGUID "c20e55d4-8976-40ea-a90f-ace17ba4dbe3"
7
+ <SOURCE MP3
8
+ FILE "/home/odebe/prog/sorta-reaper/examples/./test_audio.wav"
8
9
  >
9
- TRACKID "{812edd73-2eeb-4906-9f4b-c46b864bf60b}"
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
- # POSITION 1.71929551252328
17
- # SNAPOFFS 0
18
- # LENGTH 1
19
- # LOOP 1
20
- # ALLTAKES 0
21
- # FADEIN 1 0 0 1 0 0 0
22
- # FADEOUT 1 0 0 1 0 0 0
23
- # MUTE 0 0
24
- # SEL 0
25
- # IGUID {9A50A0BD-5A41-4132-8F65-47624A4B0840}
26
- # IID 1
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
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sorta
4
4
  module Reaper
5
- VERSION = "0.1.0"
5
+ VERSION = "0.1.3"
6
6
  end
7
7
  end
data/lib/sorta/reaper.rb CHANGED
@@ -11,6 +11,7 @@ end
11
11
 
12
12
  require_relative "reaper/version"
13
13
 
14
+ require_relative "reaper/entity/source"
14
15
  require_relative "reaper/entity/record_cfg"
15
16
  require_relative "reaper/entity/applyfx_cfg"
16
17
  require_relative "reaper/entity/notes"
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.0
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-09 00:00:00.000000000 Z
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