/
sample.js
70 lines (53 loc) · 1.44 KB
/
sample.js
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
60
61
62
63
64
65
66
67
68
69
70
var mercury = require('mercury')
var h = require('micro-css/h')(mercury.h)
var Header = require('../header.js')
var Range = require('../../params/range.js')
var ModRange = require('../../params/mod-range.js')
var Select = require('../../params/select.js')
var SampleTrimmer = require('../../params/sample-trimmer.js')
var SampleChooser = require('../../params/sample-chooser.js')
var QueryParam = require('loop-drop-setup/query-param')
var modeChoices = [
['Oneshot', 'oneshot'],
['Hold', 'hold'],
['Loop', 'loop'],
['Release', 'release']
]
module.exports = function(node){
var data = node()
return h('SourceNode -sample', [
Header(node, h('span', [
h('strong', 'Sample:'), ' ',
h('span', getSampleName(data.buffer) || 'none')
])),
h('ParamList', [
SampleChooser(node),
Select(QueryParam(node, 'mode'), {
options: modeChoices
}),
ModRange(QueryParam(node, 'amp'), {
title: 'amp',
defaultValue: 1,
format: 'dB',
flex: true
}),
ModRange(QueryParam(node, 'transpose'), {
title: 'transpose',
format: 'semitone',
flex: true
}),
ModRange(QueryParam(node, 'tune'), {
title: 'tune',
format: 'cents',
flex: true
})
]),
SampleTrimmer(node)
])
}
function getSampleName(data){
var src = data && data.src
if (typeof src === 'string'){
return src.replace(/^\.\//, '')
}
}