cheep 0.0.3 → 0.0.4

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
  SHA1:
3
- metadata.gz: 1b9aed4516a9e0de8abcf5b92ee3e9e792447d68
4
- data.tar.gz: e0c9e4a9119ab151593f29d65e7eed49bf9016d9
3
+ metadata.gz: 31b1a944cdd29520ba52c86a7ab3eaf92150c95f
4
+ data.tar.gz: c0475e35f40134be32ef6790c39508af0b42bab8
5
5
  SHA512:
6
- metadata.gz: 8c8e979e1055f422de2bb518c427548ca5f6d821894acd2e1546e54b6b3b4b4f75ba6893463aba2c7392a1a69544c29b88eb756272ebc2af96733d6e4fa260e3
7
- data.tar.gz: 77d2adce598b8a23b9b1ed9d61f04906dd5597d55e60a075bf450ffee6acae90f1e9412c6962dc90c369c335c1f15d027296f1f98689660816ff47abb89b9948
6
+ metadata.gz: 8adc819320b650308de9c5d4a41f78a1f30f4bc14fa6d84135a35c4fe342649abd421256bc21b399f8151f02afc1cb4c2a3586beaefd3a0ef4e055517f67b290
7
+ data.tar.gz: 0d114d14f1ce2b18fa00fc74e13e3b1e916a51a4c7ec55f9574aa9d3308fae957efb4672c841ad9f5661526f6c30af5f201244dbfefe608f650ca5d59ceb0c8b
data/README.md ADDED
@@ -0,0 +1,32 @@
1
+ # Cheep
2
+
3
+ Cheep is all about systhesizing noises in a Ruby like fashion.
4
+
5
+ Or more accurately, it's a scratchpad where I learn about synthesizing noises.
6
+ It's going to change and break a lot, and it's probably going to be a huge
7
+ mess. But that's what Ruby is for. :)
8
+
9
+ ### Notes
10
+
11
+ * https://github.com/alexspeller/lrug-music
12
+ * https://github.com/jstrait/nanosynth
13
+ * https://github.com/jstrait/wavefile/
14
+ * http://wavefilegem.com/
15
+ * http://stackoverflow.com/questions/5318989/reverb-algorithm
16
+
17
+ ### Licence
18
+
19
+ (C) Copyright 2014 Louis Pilfold <louis@lpil.uk>
20
+
21
+ This program is free software: you can redistribute it and/or modify
22
+ it under the terms of the GNU General Public License as published by
23
+ the Free Software Foundation, either version 3 of the License, or
24
+ (at your option) any later version.
25
+
26
+ This program is distributed in the hope that it will be useful,
27
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
28
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29
+ GNU General Public License for more details.
30
+
31
+ You should have received a copy of the GNU General Public License
32
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
@@ -0,0 +1,35 @@
1
+ module Cheep
2
+ # The base noise class. Contains an array of samples. Probably not to be
3
+ # accessed directly.
4
+ class Noise
5
+ # @param samples [Array] An array of samples as floats
6
+ # @return [Noise]
7
+ def initialize(samples)
8
+ @samples = samples
9
+ end
10
+ end
11
+ end
12
+
13
+ module Cheep
14
+ # A sine wave noise
15
+ class Sine < Cheep::Noise
16
+ attr_reader :samples
17
+
18
+ # Creates a sine wave noise
19
+ # @param frequency [Numeric] Frequency of wave in Hz
20
+ # @param num_samples [Integer] Number of samples
21
+ # @return [Sine]
22
+ def initialize(frequency, num_samples)
23
+ cycles_per_sample = frequency.to_f / SAMPLE_RATE
24
+
25
+ samples = []
26
+ phase = 0.0
27
+ num_samples.times do
28
+ samples << Math::sin(2 * Math::PI * phase)
29
+ phase += cycles_per_sample
30
+ end
31
+
32
+ @samples = samples
33
+ end
34
+ end
35
+ end
data/lib/cheep/play.rb ADDED
@@ -0,0 +1,23 @@
1
+ require 'wavefile'
2
+
3
+ #
4
+ module Cheep
5
+ def self.play(samples, filename = 'cheep.wav')
6
+ writer_format = WaveFile::Format.new :mono, :pcm_16, SAMPLE_RATE
7
+ buffer_format = WaveFile::Format.new :mono, :float, SAMPLE_RATE
8
+
9
+ WaveFile::Writer.new filename, writer_format do |writer|
10
+ writer.write(WaveFile::Buffer.new samples, buffer_format)
11
+ end
12
+
13
+ platform = `uname`.chomp
14
+ case platform
15
+ when 'Darwin'
16
+ system "afplay #{filename}"
17
+ when 'Linux'
18
+ system "aplay #{filename}"
19
+ else
20
+ abort "I don't know how to play wavs on #{platform}"
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cheep
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis Pilfold
@@ -16,7 +16,10 @@ executables: []
16
16
  extensions: []
17
17
  extra_rdoc_files: []
18
18
  files:
19
+ - README.md
19
20
  - lib/cheep.rb
21
+ - lib/cheep/noise/noise.rb
22
+ - lib/cheep/play.rb
20
23
  homepage: http://github.com/lpil/cheep
21
24
  licenses:
22
25
  - MIT