sorta-reaper 0.1.0 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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