Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dave Griffiths
jellyfish
Commits
e8f615a2
Commit
e8f615a2
authored
Feb 24, 2015
by
dave griffiths
Browse files
more fluxa
parent
fe7fc19f
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
112 additions
and
83 deletions
+112
-83
assets/boot.scm
assets/boot.scm
+0
-5
experiments/lz.scm
experiments/lz.scm
+81
-55
experiments/timed.scm
experiments/timed.scm
+2
-3
src/audio/alsa.cpp
src/audio/alsa.cpp
+3
-6
src/audio/alsa.h
src/audio/alsa.h
+1
-1
src/fluxa/Graph.cpp
src/fluxa/Graph.cpp
+7
-7
src/fluxa/GraphNode.cpp
src/fluxa/GraphNode.cpp
+1
-1
src/main.cpp
src/main.cpp
+14
-2
src/scheme/opdefines.h
src/scheme/opdefines.h
+1
-1
src/scheme/scheme.cpp
src/scheme/scheme.cpp
+2
-2
No files found.
assets/boot.scm
View file @
e8f615a2
...
...
@@ -548,8 +548,3 @@
(
disassemble
c
))
code
)
;;----------------------------------------------------------------
;; immediate mode (everyone loves immediate mode)
(
define
immediate-cube
(
with-state
(
hint-none
)
(
build-cube
)))
(
define
(
draw-cube
)
(
draw-instance
immediate-cube
))
experiments/lz.scm
View file @
e8f615a2
; lz/nz
(
synth-init
)
(
synth-init
10
44100
)
(
define
(
make-lz
md
d
stk
w
h
mem
)
(
vector
md
d
stk
w
h
mem
))
...
...
@@ -30,10 +30,10 @@
(
define
(
lz-pop!
lz
)
(
when
(
>
(
lz-d
lz
)
0
)
(
set-lz-d!
lz
(
-
(
lz-d
lz
)
1
)))
(
set-lz-d!
lz
(
-
(
lz-d
lz
)
1
)))
(
let
((
tmp
(
car
(
lz-stk
lz
))))
(
when
(
not
(
eq?
(
length
(
lz-stk
lz
))
1
))
(
set-lz-stk!
lz
(
cdr
(
lz-stk
lz
))))
(
when
(
not
(
eq
v
?
(
length
(
lz-stk
lz
))
1
))
(
set-lz-stk!
lz
(
cdr
(
lz-stk
lz
))))
tmp
))
(
define
(
lz-push!
lz
item
)
...
...
@@ -54,7 +54,7 @@
(
lz-inc-pos
lz
)
(
when
(
>=
(
car
(
lz-top
lz
))
8
)
(
cond
((
eq?
(
length
(
lz-stk
lz
))
1
)
((
eq
v
?
(
length
(
lz-stk
lz
))
1
)
(
set-lz-top!
lz
(
list
0
0
)))
(
else
(
lz-pop!
lz
))))
...
...
@@ -66,7 +66,7 @@
(
cond
((
char=?
data
#\
)
(
cond
((
eq?
(
length
(
lz-stk
lz
))
1
)
((
eq
v
?
(
length
(
lz-stk
lz
))
1
)
(
set-lz-top!
lz
(
list
0
0
)))
(
else
(
lz-pop!
lz
))))
...
...
@@ -105,11 +105,11 @@
(
define
(
t
)
(
ntp-time
))
(
define
(
build-nz
lz
sz
tk
)
(
make-nz
lz
'
(
60
)
0
sz
(
ntp-time-add
(
t
)
1
)
tk
1.0
))
(
make-nz
lz
'
(
60
)
0
sz
(
ntp-time-add
(
t
)
5
)
tk
1.0
))
(
define
(
nz-pop!
nz
)
(
let
((
tmp
(
car
(
nz-vals
nz
))))
(
when
(
not
(
eq?
(
length
(
nz-vals
nz
))
1
))
(
when
(
not
(
eq
v
?
(
length
(
nz-vals
nz
))
1
))
(
set-nz-vals!
nz
(
cdr
(
nz-vals
nz
))))
tmp
))
...
...
@@ -147,53 +147,79 @@
(
define
l
(
build-lz
9
8
3
))
(
lz-prog
l
0
"cCBca-aa"
)
(
lz-prog
l
1
"c-d-c<.d"
)
(
lz-prog
l
2
"b++b+ACd"
)
;
(lz-prog l 0 "cCBca-aa")
;
(lz-prog l 1 "c-d-c<.d")
;
(lz-prog l 2 "b++b+ACd")
;(lz-prog l 0 "
ccddddcd
")
;(lz-prog l 1 "-
>
d-AC-A")
;(lz-prog l 0 "
aB
")
;(lz-prog l 1 "-d
>
-AC-A")
;(lz-prog l 2 "b+b--bAB")
(
define
z
(
build-nz
l
(
list
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
sine
(
add
(
mul
20
(
sine
4
))
(
note
v
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
mul
0.2
(
add
(
saw
(
*
1.5
(
note
v
)))
(
saw
(
note
v
))))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
moogbp
(
squ
(
add
10
(
mul
1000
(
pow
(
adsr
0
0.2
0
0
)
10
))))
(
*
v
0.1
)
0.1
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.02
0
0
)
(
moogbp
(
white
4
)
(
*
v
0.01
)
0.45
))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.03
0.1
1
)
(
mooghp
(
saw
(
*
(
note
v
)
0.5
))
(
mul
0.2
(
adsr
0.5
0
0
0
))
0.45
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
1
)
(
mooglp
(
add
(
saw
(
*
1.5
(
note
v
)))
(
saw
(
note
v
)))
(
*
v
0.12
)
0.4
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
sine
(
add
(
fmod
(
*
v
50
)
300
)
(
mul
1000
(
pow
(
adsr
0
0.2
0
0
)
10
))))))
(
lambda
(
v
)
(
mul
(
adsr
0.04
0.02
0
0
)
(
mooglp
(
white
4
)
(
*
v
0.01
)
0.45
))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.03
0.1
1
)
(
crush
(
sine
(
*
(
note
v
)
0.5
))
0.1
0.3
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.03
0.1
1
)
(
mooglp
(
white
(
*
0.125
(
note
v
)))
(
fmod
(
*
v
0.04
)
1
)
0.4
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
0.5
)
(
add
(
saw
(
add
(
/
(
note
v
)
4
)
(
mul
1000
(
pow
(
adsr
0.3
0.1
0
0
)
3
))))
(
saw
(
add
(
+
1
(
/
(
note
v
)
4
))
(
mul
1000
(
pow
(
adsr
0.1
0.1
0
0
)
3
)))))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.02
0
0
)
(
mooglp
(
white
4
)
(
*
v
0.01
)
0.45
)))))
0.1
))
(
define
(
loop
)
(
nz-tick
z
)
(
sleep
100
)
(
loop
))
;(play-now (sine 400) 0)
(
loop
)
(
lz-prog
l
0
" B C"
)
(
lz-prog
l
1
"abCcb"
)
(
lz-prog
l
2
"ccBdb"
)
(
define
ss
(
list
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
sine
(
add
(
mul
20
(
sine
4
))
(
note
v
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
mul
0.2
(
add
(
saw
(
*
1.5
(
note
v
)))
(
saw
(
note
v
))))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
moogbp
(
squ
(
add
10
(
mul
1000
(
pow
(
adsr
0
0.2
0
0
)
10
))))
(
*
v
0.1
)
0.1
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.02
0
0
)
(
moogbp
(
white
4
)
(
*
v
0.01
)
0.45
))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.03
0.1
1
)
(
mooghp
(
saw
(
*
(
note
v
)
0.5
))
(
mul
0.2
(
adsr
0.5
0
0
0
))
0.45
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
1
)
(
mooglp
(
add
(
saw
(
*
1.5
(
note
v
)))
(
saw
(
note
v
)))
(
*
v
0.12
)
0.4
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0
0
)
(
sine
(
add
(
fmod
(
*
v
50
)
300
)
(
mul
1000
(
pow
(
adsr
0
0.2
0
0
)
10
))))))
(
lambda
(
v
)
(
mul
(
adsr
0.04
0.02
0
0
)
(
mooglp
(
white
4
)
(
*
v
0.01
)
0.45
))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0.5
0.03
0.1
1
)
(
crush
(
sine
(
*
(
note
v
)
0.5
))
0.1
0.3
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.03
0.1
1
)
(
mooglp
(
white
(
*
0.125
(
note
v
)))
(
fmod
(
*
v
0.04
)
1
)
0.4
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
0.5
)
(
add
(
saw
(
add
(
/
(
note
v
)
4
)
(
mul
1000
(
pow
(
adsr
0.3
0.1
0
0
)
3
))))
(
saw
(
add
(
+
1
(
/
(
note
v
)
4
))
(
mul
1000
(
pow
(
adsr
0.1
0.1
0
0
)
3
)))))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.02
0
0
)
(
mooglp
(
white
4
)
(
*
v
0.01
)
0.45
)))))
)
(
define
ss2
(
list
(
list
(
lambda
(
v
)
(
moogbp
(
mul
(
adsr
0
0.2
0.1
0.1
)
(
pink
100
))
(
adsr
0
0.01
0.1
1
)
0.3
))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0
1
)
(
white
20
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
1
)
(
pink
50
)))
(
lambda
(
v
)
(
mul
(
adsr
0
0.1
0.1
1
)
(
sine
(
mul
(
adsr
0
0.1
0
0
)
150
)))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
white
(
+
440
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
white
(
+
240
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
white
(
+
140
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
white
(
mul
(
adsr
0
0.1
0
0
)
(
+
40
(
*
v
50
)))))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
saw
(
+
440
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
saw
(
+
240
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
saw
(
+
140
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
saw
(
mul
(
adsr
0
0.1
0
0
)
(
+
40
(
*
v
50
)))))))
(
list
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
pink
(
+
440
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
pink
(
+
240
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
pink
(
+
140
(
*
v
20
)))))
(
lambda
(
v
)
(
mul
(
adsr
0
0.01
0.1
1
)
(
pink
(
mul
(
adsr
0
0.1
0
0
)
(
+
40
(
*
v
50
)))))))
))
(
define
z
(
build-nz
l
ss
0.2
))
(
every-frame
(
nz-tick
z
))
experiments/timed.scm
View file @
e8f615a2
...
...
@@ -3,10 +3,9 @@
(
define
time
(
ntp-time-add
(
ntp-time
)
2
))
(
define
(
loop
time
m
)
(
when
(
<
m
10
)
(
display
time
)(
newline
)
(
when
(
<
m
20
)
(
play
time
(
mul
(
adsr
0
0.1
0.3
1
)
(
saw
(
+
400
(
*
m
20
))))
0
)
(
loop
(
ntp-time-add
time
0.
3
)
(
+
m
1
))))
(
loop
(
ntp-time-add
time
0.
1
)
(
+
m
1
))))
(
loop
time
0
)
src/audio/alsa.cpp
View file @
e8f615a2
...
...
@@ -4,7 +4,7 @@
using
namespace
std
;
alsa_device
::
alsa_device
()
{
alsa_device
::
alsa_device
(
unsigned
int
sr
)
{
int
i
;
int
err
;
short
buf
[
128
];
...
...
@@ -17,9 +17,7 @@ alsa_device::alsa_device() {
if
((
err
=
snd_pcm_set_params
(
playback_handle
,
SND_PCM_FORMAT_S16_LE
,
SND_PCM_ACCESS_RW_INTERLEAVED
,
2
,
48000
,
1
,
2
,
sr
,
1
,
500000
))
<
0
)
{
/* 0.5sec */
printf
(
"Playback open error: %s
\n
"
,
snd_strerror
(
err
));
exit
(
EXIT_FAILURE
);
...
...
@@ -31,8 +29,7 @@ alsa_device::~alsa_device() {
snd_pcm_close
(
playback_handle
);
}
#define AUDIO_BUFSIZE 4096
#define AUDIO_BUFSIZE 4096*2
void
audio_loop
(
void
*
c
)
{
...
...
src/audio/alsa.h
View file @
e8f615a2
...
...
@@ -7,7 +7,7 @@
class
alsa_device
{
public:
alsa_device
();
alsa_device
(
unsigned
int
sr
);
~
alsa_device
();
void
start_crank
(
Graph
*
g
);
...
...
src/fluxa/Graph.cpp
View file @
e8f615a2
...
...
@@ -194,7 +194,7 @@ void Graph::Process(unsigned int bufsize, Sample &left, Sample &right)
pthread_mutex_lock
(
m_Mutex
);
{
Time
LastTime
=
m_CurrentTime
;
m_CurrentTime
.
IncBySample
(
bufsize
,
48000
);
m_CurrentTime
.
IncBySample
(
bufsize
,
m_SampleRate
);
// first check the event queue
Event
e
;
...
...
@@ -226,8 +226,8 @@ void Graph::Process(unsigned int bufsize, Sample &left, Sample &right)
if
(
pan
<
0
)
leftpan
=
1
-
pan
;
else
rightpan
=
1
+
pan
;
left
.
MulMix
(
m_NodeMap
[
i
->
first
]
->
GetOutput
(),
0.
1
*
leftpan
);
right
.
MulMix
(
m_NodeMap
[
i
->
first
]
->
GetOutput
(),
0.
1
*
rightpan
);
left
.
MulMix
(
m_NodeMap
[
i
->
first
]
->
GetOutput
(),
0.
5
*
leftpan
);
right
.
MulMix
(
m_NodeMap
[
i
->
first
]
->
GetOutput
(),
0.
5
*
rightpan
);
}
}
...
...
@@ -258,10 +258,10 @@ void Graph::Play(unsigned int seconds, unsigned int fraction, unsigned int id, f
}
}
else
{
cerr
<<
"Event arrived too late ignoring: "
<<
m_CurrentTime
.
GetDifference
(
e
.
TimeStamp
)
<<
endl
;
m_CurrentTime
.
Print
();
e
.
TimeStamp
=
m_CurrentTime
;
e
.
TimeStamp
+=
0.1
;
m_EventQueue
.
Add
(
e
);
//
m_CurrentTime.Print();
//
e.TimeStamp=m_CurrentTime;
//
e.TimeStamp+=0.1;
//
m_EventQueue.Add(e);
}
pthread_mutex_unlock
(
m_Mutex
);
...
...
src/fluxa/GraphNode.cpp
View file @
e8f615a2
...
...
@@ -20,7 +20,7 @@
using
namespace
std
;
#define DEFAULT_BUFSIZE 4096
#define DEFAULT_BUFSIZE 4096
*2
///////////////////////////////////////////
...
...
src/main.cpp
View file @
e8f615a2
...
...
@@ -224,7 +224,8 @@ int main(int argc, char *argv[])
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"init.scm"
).
c_str
());
if
(
window
)
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"boot.scm"
).
c_str
());
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"boot.scm"
).
c_str
());
if
(
window
)
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"fluxus.scm"
).
c_str
());
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"lib.scm"
).
c_str
());
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"compiler.scm"
).
c_str
());
appEval
((
char
*
)
LoadFile
(
string
(
ASSETS_PATH
)
+
"fluxa.scm"
).
c_str
());
...
...
@@ -267,10 +268,21 @@ int main(int argc, char *argv[])
//usleep(5*1000);
if
(
window
)
DisplayCallback
();
else
{
if
(
!
pthread_mutex_trylock
(
render_mutex
))
{
appEval
(
"(frame-hook)"
);
pthread_mutex_unlock
(
render_mutex
);
}
}
usleep
(
1000
);
}
#else
if
(
window
)
glutMainLoop
();
else
while
(
true
)
{
sleep
(
1
);
}
else
while
(
true
)
{
appEval
(
"(frame-hook)"
);
usleep
(
1000
);
}
#endif
return
0
;
...
...
src/scheme/opdefines.h
View file @
e8f615a2
...
...
@@ -206,7 +206,7 @@
_OP_DEF
(
opexe_6
,
"id-map-add"
,
2
,
2
,
TST_NONE
,
OP_ID_MAP_ADD
)
_OP_DEF
(
opexe_6
,
"id-map-get"
,
1
,
1
,
TST_NONE
,
OP_ID_MAP_GET
)
_OP_DEF
(
opexe_6
,
"synth-init"
,
0
,
0
,
0
,
OP_SYNTH_INIT
)
_OP_DEF
(
opexe_6
,
"synth-init"
,
2
,
2
,
0
,
OP_SYNTH_INIT
)
_OP_DEF
(
opexe_6
,
"synth-create"
,
3
,
3
,
0
,
OP_SYNTH_CRT
)
_OP_DEF
(
opexe_6
,
"synth-connect"
,
3
,
3
,
0
,
OP_SYNTH_CON
)
_OP_DEF
(
opexe_6
,
"synth-play"
,
4
,
4
,
0
,
OP_SYNTH_PLY
)
...
...
src/scheme/scheme.cpp
View file @
e8f615a2
...
...
@@ -4541,8 +4541,8 @@ static pointer opexe_6(scheme *sc, enum scheme_opcodes op) {
//////////////////// fluxa /////////////////////////////////////////
case OP_SYNTH_INIT: {
m_alsa_device = new alsa_device();
m_audio_graph = new Graph(
20,48000
);
m_alsa_device = new alsa_device(
ivalue(cadr(sc->args))
);
m_audio_graph = new Graph(
ivalue(car(sc->args)),ivalue(cadr(sc->args))
);
m_alsa_device->start_crank(m_audio_graph);
s_return(sc,sc->F);
} break;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment