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
Wynn
purr-data
Commits
dd7452a9
Commit
dd7452a9
authored
Jul 10, 2017
by
Jonathan Wilkes
Browse files
Revert "Merge branch 'soundfiler-fixes'"
This reverts commit
16973649
, reversing changes made to
15094e4c
.
parent
16973649
Changes
11
Hide whitespace changes
Inline
Side-by-side
.gitmodules
View file @
dd7452a9
...
...
@@ -16,6 +16,3 @@
[submodule "externals/lyonpotpourri"]
path = externals/lyonpotpourri
url = https://github.com/ericlyon/lyonpotpourri3.0.git
[submodule "externals/cyclone"]
path = externals/cyclone
url = https://git.purrdata.net/jwilkes/pd-cyclone.git
externals/Makefile
View file @
dd7452a9
...
...
@@ -431,26 +431,16 @@ cxc_clean:
#------------------------------------------------------------------------------#
# CYCLONE
cyclone
:
ifeq
($(OS_NAME),windows)
make
-C
$(externals_src)
/cyclone
\
pdbinpath
=
$(pd_src)
/src
PDINCLUDEDIR
=
$(DESTDIR)$(includedir)
else
make
-C
$(externals_src)
/cyclone
\
PDDIR
=
$(pd_src)
endif
make
-C
$(externals_src)
/miXed/cyclone
-f
Makefile.libdir
\
PD_PATH
=
$(pd_src)
PD_INCLUDE
=
$(DESTDIR)$(includedir)
cyclone_install
:
make
-C
$(externals_src)
/cyclone
\
make
-C
$(externals_src)
/
miXed/
cyclone
-f
Makefile.libdir
\
DESTDIR
=
"
$(DESTDIR)
"
objectsdir
=
"
$(objectsdir)
"
\
install
install
-p
$(externals_src)
/cyclone/documentation/purr_help/
*
.pd
\
$(DESTDIR)$(objectsdir)
/cyclone
install
-p
\
$(externals_src)
/cyclone/documentation/purr_help/abs_GUI/
*
.pd
\
$(DESTDIR)$(objectsdir)
/cyclone
cyclone_clean
:
make
-C
$(externals_src)
/cyclone
\
make
-C
$(externals_src)
/
miXed/
cyclone
-f
Makefile.libdir
\
clean
#------------------------------------------------------------------------------#
...
...
cyclone
@
d22585a2
Compare
d22585a2
...
d22585a2
Subproject commit d22585a21bf88246298e0ae0cd80c45b803e3fd5
externals/unauthorized/grid.c
View file @
dd7452a9
...
...
@@ -350,18 +350,18 @@ static void grid_properties(t_gobj *z, t_glist *owner)
gui_start_vmess
(
"gui_external_dialog"
,
"ss"
,
gfx_tag
,
"grid"
);
gui_start_array
();
gui_s
(
"symbol"
);
gui_s
(
"receive_symbol"
);
gui_s
(
x
->
x_name
->
s_name
);
gui_s
(
"int"
);
gui_s
(
"width"
);
gui_i
(
x
->
x_width
);
gui_s
(
"int"
);
gui_s
(
"min"
);
gui_f
(
x
->
x_min
);
gui_s
(
"float"
);
gui_s
(
"max"
);
gui_f
(
x
->
x_max
);
gui_s
(
"int"
);
gui_s
(
"height"
);
gui_i
(
x
->
x_height
);
gui_s
(
"float"
);
gui_s
(
"y-min"
);
gui_f
(
x
->
y_min
);
gui_s
(
"float"
);
gui_s
(
"y-max"
);
gui_f
(
x
->
y_max
);
gui_s
(
"toggle"
);
gui_s
(
"show_grid"
);
gui_i
(
x
->
x_grid
);
gui_s
(
"float"
);
gui_s
(
"x-steps"
);
gui_f
(
x
->
x_xstep
);
gui_s
(
"float"
);
gui_s
(
"y-steps"
);
gui_f
(
x
->
x_ystep
);
gui_s
(
"int"
);
gui_s
(
"x-lines"
);
gui_i
(
x
->
x_xlines
);
gui_s
(
"int"
);
gui_s
(
"y-lines"
);
gui_i
(
x
->
x_ylines
);
gui_s
(
"receive_symbol"
);
gui_s
(
x
->
x_name
->
s_name
);
gui_s
(
"width"
);
gui_i
(
x
->
x_width
);
gui_s
(
"min"
);
gui_f
(
x
->
x_min
);
gui_s
(
"max"
);
gui_f
(
x
->
x_max
);
gui_s
(
"height"
);
gui_i
(
x
->
x_height
);
gui_s
(
"y-min"
);
gui_f
(
x
->
y_min
);
gui_s
(
"y-max"
);
gui_f
(
x
->
y_max
);
gui_s
(
"
grid_
toggle"
);
gui_i
(
x
->
x_grid
);
gui_s
(
"x-steps"
);
gui_f
(
x
->
x_xstep
);
gui_s
(
"y-steps"
);
gui_f
(
x
->
x_ystep
);
gui_s
(
"x-lines"
);
gui_i
(
x
->
x_xlines
);
gui_s
(
"y-lines"
);
gui_i
(
x
->
x_ylines
);
gui_end_array
();
gui_end_vmess
();
...
...
@@ -450,11 +450,6 @@ static void grid_displace(t_gobj *z, t_glist *glist, int dx, int dy)
x
->
y_current
+=
dy
;
if
(
xold
!=
text_xpix
(
&
x
->
x_obj
,
glist
)
||
yold
!=
text_ypix
(
&
x
->
x_obj
,
glist
))
{
gui_vmess
(
"gui_text_displace"
,
"xxii"
,
glist
,
x
,
dx
,
dy
);
//grid_draw_move(x, x->x_glist);
canvas_fixlinesfor
(
glist
,
(
t_text
*
)
z
);
}
...
...
@@ -887,10 +882,10 @@ void grid_setup(void)
/* Big hack for receiving edit-mode resize anchor clicks from
g_editor.c. */
class_addmethod
(
grid_class
,
(
t_method
)
grid_click_for_resizing
,
gensym
(
"_click"
),
gensym
(
"_click
_for_resizing
"
),
A_FLOAT
,
A_FLOAT
,
A_FLOAT
,
0
);
class_addmethod
(
grid_class
,
(
t_method
)
grid_motion_for_resizing
,
gensym
(
"_motion"
),
gensym
(
"_motion
_for_resizing
"
),
A_FLOAT
,
A_FLOAT
,
0
);
grid_widgetbehavior
.
w_getrectfn
=
grid_getrect
;
grid_widgetbehavior
.
w_displacefn
=
grid_displace
;
...
...
pd/nw/dialog_external.html
View file @
dd7452a9
...
...
@@ -86,31 +86,30 @@ function ok() {
// value: a value for the input
function
parse_attrs
(
attrs
)
{
var
ret
=
[],
elem
,
gate
=
false
;
attrs
.
forEach
(
function
(
attr
,
i
)
{
if
(
i
%
3
===
0
)
{
elem
=
gate
?
elem
:
{};
gate
=
attr
===
"
enum
"
;
elem
.
type
=
attr
;
}
else
if
(
i
%
3
===
1
)
{
elem
.
name
=
attr
;
elem
.
label
=
attr
.
replace
(
"
_
"
,
"
"
);
}
else
{
if
(
elem
.
type
===
"
enum
"
)
{
if
(
elem
.
options
)
{
elem
.
options
.
push
(
attr
);
elem
;
attrs
.
forEach
(
function
(
token
,
i
)
{
if
(
i
%
2
===
0
)
{
elem
=
{};
token
=
token
.
split
(
"
_
"
);
if
(
token
.
length
>
1
)
{
elem
.
type
=
token
[
token
.
length
-
1
];
if
(
elem
.
type
!==
"
symbol
"
&&
elem
.
type
!==
"
toggle
"
)
{
// no suffix defaults to "number"
elem
.
type
=
"
number
"
;
}
else
{
elem
.
options
=
[
attr
];
// remove the type suffix
token
=
token
.
slice
(
0
,
-
1
);
}
}
else
{
elem
.
value
=
attr
;
elem
.
type
=
"
number
"
;
}
elem
.
name
=
token
.
join
(
"
_
"
);
elem
.
label
=
token
.
join
(
"
"
);
}
else
{
elem
.
value
=
token
;
// now push the object onto the array
if
(
elem
.
type
!==
"
enum
"
)
{
elem
.
type
=
elem
.
type
===
"
enum_index
"
?
"
enum
"
:
elem
.
type
;
ret
.
push
(
elem
);
}
ret
.
push
(
elem
);
}
});
return
ret
;
...
...
@@ -135,6 +134,7 @@ function register_window_id(gfxstub, args) {
translate_form
();
build_form
(
external_name
,
array_of_objects
);
// We don't turn on rendering of the "container" div until
// We've finished displaying all the spans and populating the
// labels and form elements. That makes it more efficient and
...
...
@@ -160,10 +160,7 @@ function translate_form() {
function
get_input_type
(
t
)
{
return
t
===
"
symbol
"
?
"
text
"
:
t
===
"
int
"
?
"
text
"
:
t
===
"
float
"
?
"
text
"
:
t
===
"
color
"
?
"
color
"
:
t
===
"
enum
"
?
"
select
"
:
t
===
"
number
"
?
"
text
"
:
t
===
"
toggle
"
?
"
checkbox
"
:
"
text
"
;
}
...
...
@@ -171,39 +168,23 @@ function get_input_type(t) {
function
build_form
(
external_name
,
array_of_objects
)
{
var
fieldset
=
document
.
querySelector
(
"
fieldset
"
);
document
.
querySelector
(
"
legend
"
).
textContent
=
external_name
;
array_of_objects
.
forEach
(
function
(
ob
)
{
var
elem
,
label
,
type
=
get_input_type
(
ob
.
type
);
if
(
type
===
"
select
"
)
{
elem
=
document
.
createElement
(
"
select
"
);
ob
.
options
.
forEach
(
function
(
e
)
{
var
option
=
document
.
createElement
(
"
option
"
);
option
.
textContent
=
e
;
elem
.
appendChild
(
option
);
});
elem
.
selectedIndex
=
ob
.
value
;
elem
.
onchange
=
function
()
{
ob
.
value
=
elem
.
selectedIndex
;
}
}
else
if
(
type
===
"
checkbox
"
)
{
elem
=
document
.
createElement
(
"
input
"
);
elem
.
type
=
"
checkbox
"
;
elem
.
checked
=
ob
.
value
!==
0
;
elem
.
onchange
=
function
()
{
ob
.
value
=
elem
.
checked
?
1
:
0
;
array_of_objects
.
forEach
(
function
(
elem
)
{
var
input_elem
=
document
.
createElement
(
"
input
"
),
label
=
document
.
createElement
(
"
label
"
);
input_elem
.
type
=
get_input_type
(
elem
.
type
);
if
(
input_elem
.
type
===
"
checkbox
"
)
{
input_elem
.
checked
=
elem
.
value
!==
0
;
input_elem
.
onchange
=
function
()
{
elem
.
value
=
input_elem
.
checked
?
1
:
0
;
};
}
else
{
elem
=
document
.
createElement
(
"
input
"
);
elem
.
type
=
type
;
elem
.
value
=
ob
.
value
;
elem
.
onchange
=
function
()
{
ob
.
value
=
elem
.
value
;
input_elem
.
value
=
elem
.
value
;
input_elem
.
onchange
=
function
()
{
elem
.
value
=
input_elem
.
value
;
}
}
label
=
document
.
createElement
(
"
label
"
);
label
.
textContent
=
ob
.
label
;
label
.
appendChild
(
elem
);
label
.
textContent
=
elem
.
label
;
label
.
appendChild
(
input_elem
);
fieldset
.
appendChild
(
label
);
// stop-gap until we make this prettier through css: insert a break
fieldset
.
appendChild
(
document
.
createElement
(
"
br
"
));
...
...
pd/nw/pdgui.js
View file @
dd7452a9
...
...
@@ -3751,7 +3751,6 @@ function gui_scope_draw_bg(cid, tag, fg_color, bg_color, w, h, grid_width, dx, d
path_string
=
""
,
fg_xy_path
,
// to be used for the foreground lines
fg_mono_path
,
border
,
i
,
x
,
y
,
align_x
,
align_y
;
// Path strings for the grid lines
// vertical lines...
...
...
@@ -3768,7 +3767,6 @@ function gui_scope_draw_bg(cid, tag, fg_color, bg_color, w, h, grid_width, dx, d
d
:
path_string
,
fill
:
"
none
"
,
stroke
:
"
black
"
,
class
:
"
grid
"
,
"
stroke-width
"
:
grid_width
,
});
// We go ahead and create a path to be used in the foreground. We'll
...
...
@@ -3785,18 +3783,10 @@ function gui_scope_draw_bg(cid, tag, fg_color, bg_color, w, h, grid_width, dx, d
stroke
:
fg_color
,
class
:
"
fgmono
"
});
border
=
create_item
(
cid
,
"
rect
"
,
{
style
:
"
fill: none;
"
,
width
:
w
,
height
:
h
,
class
:
"
border
"
,
"
stroke-width
"
:
grid_width
});
g
.
appendChild
(
bg
);
g
.
appendChild
(
path
);
g
.
appendChild
(
fg_xy_path
);
g
.
appendChild
(
fg_mono_path
);
g
.
appendChild
(
border
);
}
function
scope_configure_fg
(
cid
,
tag
,
type
,
data_array
)
{
...
...
@@ -3815,13 +3805,13 @@ function gui_scope_configure_fg_mono(cid, tag, data_array) {
scope_configure_fg
(
cid
,
tag
,
"
.fgmono
"
,
data_array
);
}
function
scope_configure_bg_color
(
cid
,
tag
,
color
)
{
function
gui_
scope_configure_bg_color
(
cid
,
tag
,
color
)
{
var
g
=
get_gobj
(
cid
,
tag
),
elem
=
g
.
querySelector
(
"
.bg
"
);
configure_item
(
elem
,
{
fill
:
color
});
}
function
scope_configure_fg_color
(
cid
,
tag
,
color
)
{
function
gui_
scope_configure_fg_color
(
cid
,
tag
,
color
)
{
var
g
=
get_gobj
(
cid
,
tag
),
xy
=
g
.
querySelector
(
"
.fgxy
"
),
mono
=
g
.
querySelector
(
"
.fgmono
"
);
...
...
@@ -3829,33 +3819,11 @@ function scope_configure_fg_color(cid, tag, color) {
configure_item
(
mono
,
{
stroke
:
color
});
}
function
scope_configure_grid_color
(
cid
,
tag
,
color
)
{
var
g
=
get_gobj
(
cid
,
tag
),
grid
=
g
.
querySelector
(
"
.grid
"
);
configure_item
(
grid
,
{
stroke
:
color
});
}
function
gui_scope_configure_color
(
cid
,
tag
,
layer
,
color
)
{
if
(
layer
===
"
fg
"
)
{
scope_configure_fg_color
(
cid
,
tag
,
color
);
}
else
if
(
layer
===
"
bg
"
)
{
scope_configure_bg_color
(
cid
,
tag
,
color
);
}
else
if
(
layer
===
"
grid
"
)
{
scope_configure_grid_color
(
cid
,
tag
,
color
);
}
}
function
gui_scope_clear_fg
(
cid
,
tag
)
{
scope_configure_fg
(
cid
,
tag
,
"
.fgxy
"
,
[]);
scope_configure_fg
(
cid
,
tag
,
"
.fgmono
"
,
[]);
}
function
gui_scope_erase_innards
(
cid
,
tag
)
{
var
g
=
get_gobj
(
cid
,
tag
);
// Nuke it
g
.
innerHTML
=
''
;
}
// unauthorized/grid
function
get_grid_data
(
w
,
h
,
x_l
,
y_l
)
{
...
...
pd/src/d_array.c
View file @
dd7452a9
...
...
@@ -298,7 +298,6 @@ static t_int *tabread_tilde_perform(t_int *w)
int
i
;
maxindex
=
x
->
x_npoints
-
1
;
if
(
maxindex
<
0
)
goto
zero
;
if
(
!
buf
)
goto
zero
;
for
(
i
=
0
;
i
<
n
;
i
++
)
...
...
@@ -399,7 +398,6 @@ static t_int *tabread4_tilde_perform(t_int *w)
int
i
;
maxindex
=
x
->
x_npoints
-
3
;
if
(
maxindex
<
0
)
goto
zero
;
if
(
!
buf
)
goto
zero
;
...
...
pd/src/d_soundfile.c
View file @
dd7452a9
...
...
@@ -29,7 +29,6 @@ objects use Posix-like threads. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <math.h>
#include "m_pd.h"
...
...
@@ -201,21 +200,6 @@ static void swapstring(char *foo, int doit)
}
}
/* write a sample rate as an 80-bit AIFF-compatible number */
static
void
makeaiffsamprate
(
double
sr
,
unsigned
char
*
shit
)
{
int
exponent
;
double
mantissa
=
frexp
(
sr
,
&
exponent
);
unsigned
long
fixmantissa
=
ldexp
(
mantissa
,
32
);
shit
[
0
]
=
(
exponent
+
16382
)
>>
8
;
shit
[
1
]
=
exponent
+
16382
;
shit
[
2
]
=
fixmantissa
>>
24
;
shit
[
3
]
=
fixmantissa
>>
16
;
shit
[
4
]
=
fixmantissa
>>
8
;
shit
[
5
]
=
fixmantissa
;
shit
[
6
]
=
shit
[
7
]
=
shit
[
8
]
=
shit
[
9
]
=
0
;
}
/******************** soundfile access routines **********************/
/* This routine opens a file, looks for either a nextstep or "wave" header,
...
...
@@ -308,8 +292,7 @@ int open_soundfile_via_fd(int fd, int headersize,
{
long
chunksize
=
swap4
(((
t_wavechunk
*
)
buf
)
->
wc_size
,
swap
),
seekto
=
headersize
+
chunksize
+
8
,
seekout
;
if
(
seekto
&
1
)
/* pad up to even number of bytes */
seekto
++
;
if
(
!
strncmp
(((
t_wavechunk
*
)
buf
)
->
wc_id
,
"fmt "
,
4
))
{
long
commblockonset
=
headersize
+
8
;
...
...
@@ -361,8 +344,6 @@ int open_soundfile_via_fd(int fd, int headersize,
{
long
chunksize
=
swap4
(((
t_datachunk
*
)
buf
)
->
dc_size
,
swap
),
seekto
=
headersize
+
chunksize
+
8
,
seekout
;
if
(
seekto
&
1
)
/* pad up to even number of bytes */
seekto
++
;
/* post("chunk %c %c %c %c seek %d",
((t_datachunk *)buf)->dc_id[0],
((t_datachunk *)buf)->dc_id[1],
...
...
@@ -393,8 +374,8 @@ int open_soundfile_via_fd(int fd, int headersize,
goto
badheader
;
headersize
=
seekto
;
}
bytelimit
=
swap4
(((
t_datachunk
*
)
buf
)
->
dc_size
,
swap
)
-
8
;
headersize
+=
sizeof
(
t_datachunk
)
;
bytelimit
=
swap4
(((
t_datachunk
*
)
buf
)
->
dc_size
,
swap
);
headersize
+=
8
;
}
}
/* seek past header and any sample frames to skip */
...
...
@@ -800,6 +781,8 @@ static int create_soundfile(t_canvas *canvas, const char *filename,
{
long
datasize
=
nframes
*
nchannels
*
bytespersamp
;
long
longtmp
;
static
unsigned
char
dogdoo
[]
=
{
0x40
,
0x0e
,
0xac
,
0x44
,
0
,
0
,
0
,
0
,
0
,
0
,
'S'
,
'S'
,
'N'
,
'D'
};
if
(
strcmp
(
filenamebuf
+
strlen
(
filenamebuf
)
-
4
,
".aif"
)
&&
strcmp
(
filenamebuf
+
strlen
(
filenamebuf
)
-
5
,
".aiff"
))
strcat
(
filenamebuf
,
".aif"
);
...
...
@@ -812,11 +795,10 @@ static int create_soundfile(t_canvas *canvas, const char *filename,
longtmp
=
swap4
(
nframes
,
swap
);
memcpy
(
&
aiffhdr
->
a_nframeshi
,
&
longtmp
,
4
);
aiffhdr
->
a_bitspersamp
=
swap2
(
8
*
bytespersamp
,
swap
);
makeaiffsamprate
(
samplerate
,
aiffhdr
->
a_samprate
);
strncpy
(((
char
*
)(
&
aiffhdr
->
a_samprate
))
+
10
,
"SSND"
,
4
);
longtmp
=
swap4
(
datasize
+
8
,
swap
);
memcpy
(((
char
*
)(
&
aiffhdr
->
a_samprate
))
+
14
,
&
longtmp
,
4
);
memset
(((
char
*
)(
&
aiffhdr
->
a_samprate
))
+
18
,
0
,
8
);
memcpy
(
aiffhdr
->
a_samprate
,
dogdoo
,
sizeof
(
dogdoo
));
longtmp
=
swap4
(
datasize
,
swap
);
memcpy
(
aiffhdr
->
a_samprate
+
sizeof
(
dogdoo
),
&
longtmp
,
4
);
memset
(
aiffhdr
->
a_samprate
+
sizeof
(
dogdoo
)
+
4
,
0
,
8
);
headersize
=
AIFFPLUS
;
}
else
/* WAVE format */
...
...
@@ -1282,9 +1264,9 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s,
poswas
=
lseek
(
fd
,
0
,
SEEK_CUR
);
eofis
=
lseek
(
fd
,
0
,
SEEK_END
);
if
(
poswas
<
0
||
eofis
<
0
||
eofis
<
poswas
)
if
(
poswas
<
0
||
eofis
<
0
)
{
pd_error
(
x
,
"lseek failed
: %ld..%ld"
,
poswas
,
eofis
);
pd_error
(
x
,
"lseek failed
"
);
goto
done
;
}
lseek
(
fd
,
poswas
,
SEEK_SET
);
...
...
@@ -1301,13 +1283,14 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s,
{
int
vecsize
;
garray_resize
_long
(
garrays
[
i
],
finalsize
);
garray_resize
(
garrays
[
i
],
finalsize
);
/* for sanity's sake let's clear the save-in-patch flag here */
garray_setsaveit
(
garrays
[
i
],
0
);
if
(
!
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
vecs
[
i
])
||
(
vecsize
!=
framesinfile
))
{
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
vecs
[
i
]);
/* if the resize failed, garray_resize reported the error */
if
(
vecsize
!=
framesinfile
)
{
pd_error
(
x
,
"resize failed"
);
goto
done
;
}
...
...
@@ -1335,18 +1318,18 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s,
for
(
i
=
0
;
i
<
argc
;
i
++
)
{
int
vecsize
;
if
(
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
vecs
[
i
])
)
for
(
j
=
itemsread
;
j
<
vecsize
;
j
++
)
vecs
[
i
][
j
].
w_float
=
0
;
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
vecs
[
i
])
;
for
(
j
=
itemsread
;
j
<
vecsize
;
j
++
)
vecs
[
i
][
j
].
w_float
=
0
;
}
/* zero out vectors in excess of number of channels */
for
(
i
=
channels
;
i
<
argc
;
i
++
)
{
int
vecsize
;
t_word
*
foo
;
if
(
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
foo
)
)
for
(
j
=
0
;
j
<
vecsize
;
j
++
)
foo
[
j
].
w_float
=
0
;
garray_getfloatwords
(
garrays
[
i
],
&
vecsize
,
&
foo
)
;
for
(
j
=
0
;
j
<
vecsize
;
j
++
)
foo
[
j
].
w_float
=
0
;
}
/* do all graphics updates */
for
(
i
=
0
;
i
<
argc
;
i
++
)
...
...
@@ -1356,7 +1339,7 @@ static void soundfiler_read(t_soundfiler *x, t_symbol *s,
goto
done
;
usage:
pd_error
(
x
,
"usage: read [flags] filename tablename..."
);
post
(
"flags: -skip <n> -resize -maxsize <n> ..."
);
post
(
"flags: -skip <n>
-nframes <n>
-resize -maxsize <n> ..."
);
post
(
"-raw <headerbytes> <channels> <bytespersamp> <endian (b, l, or n)>."
);
done:
if
(
fd
>=
0
)
...
...
@@ -1816,13 +1799,13 @@ static void *readsf_child_main(void *zz)
{
x
->
x_fifohead
+=
sysrtn
;
x
->
x_bytelimit
-=
sysrtn
;
if
(
x
->
x_fifohead
==
fifosize
)
x
->
x_fifohead
=
0
;
if
(
x
->
x_bytelimit
<=
0
)
{
x
->
x_eof
=
1
;
break
;
}
if
(
x
->
x_fifohead
==
fifosize
)
x
->
x_fifohead
=
0
;
}
#ifdef DEBUG_SOUNDFILE
sprintf
(
boo
,
"after: head %d, tail %d
\n
"
,
...
...
@@ -2449,23 +2432,20 @@ static t_int *writesf_perform(t_int *w)
bigendian
=
x
->
x_bigendian
;
if
(
x
->
x_state
==
STATE_STREAM
)
{
int
wantbytes
,
roominfifo
;
int
wantbytes
;
pthread_mutex_lock
(
&
x
->
x_mutex
);
wantbytes
=
sfchannels
*
vecsize
*
bytespersample
;
roominfifo
=
x
->
x_fifotail
-
x
->
x_fifohead
;
if
(
roominfifo
<=
0
)
roominfifo
+=
x
->
x_fifosize
;
while
(
roominfifo
<
wantbytes
+
1
)
while
(
x
->
x_fifotail
>
x
->
x_fifohead
&&
x
->
x_fifotail
<
x
->
x_fifohead
+
wantbytes
+
1
)
{
fprintf
(
stderr
,
"writesf waiting for disk write..
\n
"
);
fprintf
(
stderr
,
"(head %d, tail %d, room %d, want %d)
\n
"
,
x
->
x_fifohead
,
x
->
x_fifotail
,
roominfifo
,
wantbytes
);
#ifdef DEBUG_SOUNDFILE
pute
(
"wait...
\n
"
);
#endif
sfread_cond_signal
(
&
x
->
x_requestcondition
);
sfread_cond_wait
(
&
x
->
x_answercondition
,
&
x
->
x_mutex
);
fprintf
(
stderr
,
"... done waiting.
\n
"
);
roominfifo
=
x
->
x_fifotail
-
x
->
x_fifohead
;
if
(
roominfifo
<=
0
)
roominfifo
+=
x
->
x_fifosize
;
#ifdef DEBUG_SOUNDFILE
pute
(
"done
\n
"
);
#endif
}
soundfile_xferout_sample
(
sfchannels
,
x
->
x_outvec
,
...
...
@@ -2570,8 +2550,10 @@ static void writesf_open(t_writesf *x, t_symbol *s, int argc, t_atom *argv)
(
x
->
x_bytespersample
*
x
->
x_sfchannels
*
MAXVECSIZE
));
/* arrange for the "request" condition to be signalled 16
times per buffer */
x
->
x_sigcountdown
=
x
->
x_sigperiod
=
(
x
->
x_fifosize
/
(
16
*
x
->
x_bytespersample
*
x
->
x_sfchannels
*
x
->
x_vecsize
));
x
->
x_sigcountdown
=
x
->
x_sigperiod
=
(
x
->
x_fifosize
/
(
16
*
x
->
x_bytespersample
*
x
->
x_sfchannels
*
x
->
x_vecsize
));
sfread_cond_signal
(
&
x
->
x_requestcondition
);
pthread_mutex_unlock
(
&
x
->
x_mutex
);
}
...
...
@@ -2581,8 +2563,9 @@ static void writesf_dsp(t_writesf *x, t_signal **sp)
int
i
,
ninlets
=
x
->
x_sfchannels
;
pthread_mutex_lock
(
&
x
->
x_mutex
);
x
->
x_vecsize
=
sp
[
0
]
->
s_n
;
x
->
x_sigperiod
=
(
x
->
x_fifosize
/
(
16
*
x
->
x_bytespersample
*
x
->
x_sfchannel
s
*
x
->
x_vecsize
));
(
x
->
x_bytespersample
*
ninlet
s
*
x
->
x_vecsize
));
for
(
i
=
0
;
i
<
ninlets
;
i
++
)
x
->
x_outvec
[
i
]
=
sp
[
i
]
->
s_vec
;
x
->
x_insamplerate
=
sp
[
0
]
->
s_sr
;
...
...
pd/src/g_array.c
View file @
dd7452a9
...
...
@@ -698,7 +698,7 @@ void garray_arraydialog(t_garray *x, t_symbol *s, int argc, t_atom *argv)
template_findbyname(x->x_scalar->sc_template),
gensym("style"), x->x_scalar->sc_vec, 1);*/
long
size
;
int
size
;
t_symbol
*
argname
=
sharptodollar
(
name
);
t_array
*
a
=
garray_getarray
(
x
);
t_template
*
scalartemplate
;
...
...
@@ -757,7 +757,7 @@ void garray_arraydialog(t_garray *x, t_symbol *s, int argc, t_atom *argv)
x
->
x_style
=
style
;
if
(
size
!=
a
->
a_n
)
{
garray_resize
_long
(
x
,
size
);
garray_resize
(
x
,
size
);
}
else
{
...
...
@@ -1680,7 +1680,7 @@ static void garray_const(t_garray *x, t_floatarg g)
}
/* sum of Fourier components; called from routines below */
static
void
garray_dofo
(
t_garray
*
x
,
long
npoints
,
t_float
dcval
,
static
void
garray_dofo
(
t_garray
*
x
,
int
npoints
,
t_float
dcval
,
int
nsin
,
t_float
*
vsin
,
int
sineflag
)
{
double
phase
,
phaseincr
,
fj
;
...
...
@@ -1696,7 +1696,7 @@ static void garray_dofo(t_garray *x, long npoints, t_float dcval,
if
(
npoints
!=
(
1
<<
ilog2
(
npoints
)))
post
(
"%s: rounding to %d points"
,
array
->
a_templatesym
->
s_name
,
(
npoints
=
(
1
<<
ilog2
(
npoints
))));
garray_resize
_long
(
x
,
npoints
+
3
);
garray_resize
(
x
,
npoints
+
3
);
phaseincr
=
2
.
*
3
.
14159
/
npoints
;
for
(
i
=
0
,
phase
=
-
phaseincr
;
i
<
array
->
a_n
;
i
++
,
phase
+=
phaseincr
)
{
...
...
@@ -1716,8 +1716,7 @@ static void garray_dofo(t_garray *x, long npoints, t_float dcval,
static
void
garray_sinesum
(
t_garray
*
x
,
t_symbol
*
s
,
int
argc
,
t_atom
*
argv
)
{
t_float
*
svec
;
long
npoints
;
int
i
;
int
npoints
,
i
;
if
(
argc
<
2
)
{
error
(
"sinesum: %s: need number of points and partial strengths"
,
...
...
@@ -1740,8 +1739,7 @@ static void garray_sinesum(t_garray *x, t_symbol *s, int argc, t_atom *argv)
static
void
garray_cosinesum
(
t_garray
*
x
,
t_symbol
*
s
,
int
argc
,
t_atom
*
argv
)
{
t_float
*
svec
;
long
npoints
;
int
i
;
int
npoints
,
i
;
if
(
argc
<
2
)
{
error
(
"sinesum: %s: need number of points and partial strengths"
,
...
...
@@ -1958,11 +1956,10 @@ int garray_ambigendian(void)
return
(
c
==
0
);
}
void
garray_resize
_long
(
t_garray
*
x
,
lon
g
n
)
void
garray_resize
(
t_garray
*
x
,
t_floatar
g
f
)
{
t_array
*
array
=
garray_getarray
(
x
);
if
(
n
<
1
)
n
=
1
;
int
n
=
(
f
<
1
?
1
:
f
);