csound 0.0.3 → 0.0.5

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/csound.rb +126 -2
  3. metadata +23 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dce5327347e59186bf07e259d45c6ee9573a8664bc0e3280153b605a2d9bd3e7
4
- data.tar.gz: 5cf5c2f805a6216ed1c68e49b23d587b4a3e924aec2424b5b1ff0389d9c304f4
3
+ metadata.gz: 9199a8cabc449c5a81ad92ec0a7b6e808bc870810bb7664fca9069520dbb2b3f
4
+ data.tar.gz: f67749f699b7abdb7dac61b76a418ce98721ad45287adacd5c1627bfe4865111
5
5
  SHA512:
6
- metadata.gz: 83f1421a193f84611a2eb6eed3549c245416c2d04fb36c2fcd40e24f0e6dab22f2253997e4cf2e4b365faefc30f2530cee09a5030c4293ba2349aa67144927be
7
- data.tar.gz: e4fa19a0a9d7f11f6a48c8c78f980c634f2513159eeb8bb2956f0e3f9cd0824a6f038cff8ff6d10f4e81645bb6cd9518e8585f651270e875093278e697ef26f3
6
+ metadata.gz: e56c6a4ca66a5b9048d4d29d6b84a28a1b2e476d20111559e6db41f61926b3d9c2c57685a77f22f8cb15f75c805ff5874ca24e27d167352e26aa9bc34483f901
7
+ data.tar.gz: 1bc25ea163fbb24a75fd8344d143364ed4528fc86c6aa7cd9a85ced24bdab13907f59d5a61b900e7089c24d85572a41022d5f56cc46bf3522baceed1a196a332
data/lib/csound.rb CHANGED
@@ -3,6 +3,16 @@ require "bundler/inline"
3
3
  gemfile do
4
4
  source "https://rubygems.org"
5
5
  gem "ffi", require: true
6
+ gem "os", require: true
7
+ end
8
+
9
+ def convert_to_binary(integer)
10
+ binary = []
11
+ while integer > 0
12
+ binary << integer % 2
13
+ integer /= 2
14
+ end
15
+ binary.reverse.join
6
16
  end
7
17
 
8
18
  module ControlChannelType
@@ -42,9 +52,36 @@ class ControlChannelInfo_t < FFI::Struct
42
52
  :hints, ControlChannelHints_t
43
53
  end
44
54
 
55
+ class CS_TYPE < FFI::Struct
56
+ layout :varTypeName,:string,
57
+ :varDescription,:string,
58
+ :argtype,:int,
59
+ :createVariable,:pointer,
60
+ :copyValue,:pointer,
61
+ :unionTypes,:pointer,
62
+ :freeVariableMemory,:pointer
63
+
64
+ end
65
+
66
+ def get_possible_paths
67
+ if(OS.linux?) then
68
+ return ["libcsound64.so",
69
+ "/usr/local/lib/libcsound64.so",
70
+ "/usr/lib/libcsound64.so"]
71
+ elsif(OS.mac?) then
72
+ return ["CsoundLib64",
73
+ "/Library/Frameworks/CsoundLib64.framework/Versions/6.0/CsoundLib64"]
74
+ elsif(OS.windows) then
75
+ return ["csound64", "csound64.dll",
76
+ "C:/Program Files/Csound6_x64/csound64.dll",
77
+ "C:/Program Files/Csound6_x64/lib/csound64.dll",
78
+ "C:/Program Files/Csound6_x64/bin/csound64.dll" ]
79
+ end
80
+ end
81
+
45
82
  module CsoundModule
46
83
  extend FFI::Library
47
- ffi_lib '/usr/local/lib/libcsound64.so'
84
+ ffi_lib get_possible_paths
48
85
 
49
86
  attach_function :csoundCreate,[:pointer],:pointer
50
87
  attach_function :csoundInitialize,[:int],:int
@@ -170,6 +207,12 @@ module CsoundModule
170
207
 
171
208
  #Handwritten
172
209
  attach_function :csoundSetControlChannel,[:pointer,:string,:double],:void
210
+ attach_function :csoundGetControlChannel,[:pointer,:string,:pointer],:double
211
+
212
+ callback :channel_callback_t,[:pointer,:string,:pointer,:pointer],:void
213
+ attach_function :csoundSetInputChannelCallback,[:pointer,:channel_callback_t],:void
214
+ attach_function :csoundSetOutputChannelCallback,[:pointer,:channel_callback_t],:void
215
+
173
216
 
174
217
  attach_function :csoundGetFirstMessage,[:pointer],:string
175
218
 
@@ -183,6 +226,22 @@ module CsoundModule
183
226
  attach_function :csoundClearSpin,[:pointer],:void
184
227
  attach_function :csoundAddSpinSample,[:pointer,:int,:int,:double],:double
185
228
  attach_function :csoundSetSpinSample,[:pointer,:int,:int,:double],:void
229
+
230
+
231
+ attach_function :csoundGetEnv,[:pointer,:string],:string
232
+ attach_function :csoundCreateGlobalVariable,[:pointer,:string,:size_t],:int
233
+
234
+ attach_function :csoundQueryGlobalVariable,[:pointer,:string],:pointer
235
+ attach_function :csoundQueryGlobalVariableNoCheck,[:pointer,:string],:pointer
236
+
237
+ attach_function :csoundRunUtility,[:pointer,:string,:int,:pointer],:int
238
+ attach_function :csoundListUtilities,[:pointer],:pointer
239
+ attach_function :csoundGetUtilityDescription,[:pointer,:string],:string
240
+
241
+ attach_function :csoundCreateCircularBuffer,[:pointer,:int,:int],:pointer
242
+ attach_function :csoundReadCircularBuffer,[:pointer,:pointer,:pointer,:int],:int
243
+ attach_function :csoundPeekCircularBuffer,[:pointer,:pointer,:pointer,:int],:int
244
+ attach_function :csoundWriteCircularBuffer,[:pointer,:pointer,:pointer,:int],:int
186
245
  #Missing
187
246
  #csoundSetMessageCallback
188
247
  #csoundSetMessageStringCallback
@@ -676,6 +735,28 @@ class Csound
676
735
  CsoundModule.csoundSetControlChannel(@csound, channel_name, value)
677
736
  end
678
737
 
738
+ def GetControlChannel(channel_name)
739
+ return CsoundModule.csoundGetControlChannel(@csound, channel_name, nil)
740
+ end
741
+
742
+ def SetOutputChannelCallback(cbk)
743
+ # Is this function destroyed someday ?
744
+ c_cbk = FFI::Function.new(:void, [:pointer,:string,:pointer,CS_TYPE.by_ref]) do |csound,channel_name,valueptr, channel_type|
745
+ if(channel_type[:varTypeName] == "k") then
746
+ cbk(channel_name, valueptr.read(FFI::Type::DOUBLE), channel_type[:varTypeName])
747
+ elsif(channel_type[:varTypeName] == "S") then
748
+ cbk(channel_name, valueptr.read_string, channel_type[:varTypeName])
749
+ end
750
+ end
751
+ CsoundModule.csoundSetOutputChannelCallback(@csound, c_cbk)
752
+ end
753
+
754
+ def SetInputChannelCallback(cbk)
755
+ c_cbk = FFI::Function.new(:void, [:pointer,:string,:pointer,CS_TYPE.by_ref]) do |csound,channel_name,valueptr, channel_type|
756
+ end
757
+ CsoundModule.csoundSetInputChannelCallback(@csound, c_cbk)
758
+ end
759
+
679
760
  def GetFirstMessage()
680
761
  return CsoundModule.csoundGetFirstMessage(@csound)
681
762
  end
@@ -707,5 +788,48 @@ class Csound
707
788
  def SetSpinSample(frame, channel, sample)
708
789
  CsoundModule.csoundSetSpinSample(@csound, frame, channel, sample)
709
790
  end
710
- end
711
791
 
792
+ def GetEnv(name)
793
+ return CsoundModule.csoundGetEnv(@csound,name)
794
+ end
795
+
796
+ def CreateGlobalVariable(name, nbytes)
797
+ return CsoundModule.csoundCreateGlobalVariable(@csound, name, nbytes)
798
+ end
799
+
800
+ def QueryGlobalVariable(name)
801
+ return CsoundModule.csoundQueryGlobalVariable(@csound, name)
802
+ end
803
+
804
+ def QueryGlobalVariableNoCheck(name)
805
+ return CsoundModule.csoundQueryGlobalVariableNoCheck(@csound, name)
806
+ end
807
+
808
+ def RunUtility(name, argc, argv)
809
+ return CsoundModule.csoundRunUtility(@csound, argc, argv)
810
+ end
811
+
812
+ def ListUtilities
813
+ return CsoundModule.csoundListUtilities(@csound)
814
+ end
815
+
816
+ def GetUtilityDescription(name)
817
+ return CsoundModule.csoundGetUtilityDescription(@csound,name)
818
+ end
819
+
820
+ def CreateCircularBuffer(numelem, elemsize)
821
+ return CsoundModule.csoundCreateCircularBuffer(@csound,numelem,elemsize)
822
+ end
823
+
824
+ def ReadCircularBuffer(buffer, out, items)
825
+ return CsoundModule.csoundReadCircularBuffer(@csound,buffer,out,items)
826
+ end
827
+
828
+ def PeekCircularBuffer(buffer, out, items)
829
+ return CsoundModule.csoundPeekCircularBuffer(@csound, buffer, out, items)
830
+ end
831
+
832
+ def WriteCirularBuffer(p,inp,items)
833
+ return CsoundModule.csoundWriteCircularBuffer(@csound,p,inp,items)
834
+ end
835
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csound
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Johann Philippe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-30 00:00:00.000000000 Z
11
+ date: 2023-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,26 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.11'
41
+ - !ruby/object:Gem::Dependency
42
+ name: os
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.1'
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: 1.1.4
51
+ type: :runtime
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - "~>"
56
+ - !ruby/object:Gem::Version
57
+ version: '1.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 1.1.4
41
61
  description: Csound for Ruby, through FFI
42
62
  email: johannphilippe@lilo.org
43
63
  executables: []
@@ -65,8 +85,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
65
85
  - !ruby/object:Gem::Version
66
86
  version: '0'
67
87
  requirements: []
68
- rubyforge_project:
69
- rubygems_version: 2.7.6
88
+ rubygems_version: 3.3.7
70
89
  signing_key:
71
90
  specification_version: 4
72
91
  summary: Csound Gem for Ruby