-
Notifications
You must be signed in to change notification settings - Fork 0
/
jp_makebeats_wrapper.m
59 lines (44 loc) · 1.48 KB
/
jp_makebeats_wrapper.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
% Wrapper script for jp_makebeats
%
% From https://github.com/jpeelle/jp_matlab
%% Options: set these
clear all
% Where to save the .wav files at the end
outDir = '~/Desktop/patterns';
% Patterns: enter here. Using {} because they differ in length.
patterns{1} = [1 1 2 2];
patterns{2} = [2 1 1 4];
% How long should the beat be? Can have one or multiple (that get looped
% through). In seconds.
beatLengths = [.210:.01:.280];
% Configuration settings for jp_makebeats
Cfg = [];
Cfg.toneFreq = 700; % Hz
Cfg.pauseBetweenTonesSec = .05;
Cfg.endWithDownbeat = 1;
Cfg.padSoundBeginningSec = 0;
Cfg.padSoundEndSec = 0;
%% Error checking, etc.
% (make sure jp_makebeats is in your matlab path)
if ~exist('jp_makebeats', 'file')
addpath('~/jp_matlab'); % <- change this to wherever jp_matlab exists
end
% Make sure output directory exists
if ~isdir(outDir)
mkdir(outDir);
end
%% Make the beats
fprintf('\n\n');
for thisBeatLength = beatLengths
Cfg.beatLengthSec = thisBeatLength;
fprintf('\n\n%s Beat %.3f %s\n', repmat('=',1,10), thisBeatLength, repmat('=',1,10) );
for patternInd = 1:length(patterns)
fprintf('\tPattern %i/%i...', patternInd, length(patterns));
thisPattern = patterns{patternInd};
[y, fs, name] = jp_makebeats(thisPattern, Cfg);
outName = fullfile(outDir, sprintf('pattern%03i_%s', patternInd, name));
audiowrite(outName, y, fs);
fprintf('done.\n');
end
end
fprintf('\nAll done.\n\n');