summaryrefslogtreecommitdiff
path: root/macros/Sources/READAU_f.sci
blob: 0c371c25aef78bb0c61a4f2de181f4129f7a4184 (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//  Xcos
//
//  Copyright (C) INRIA - METALAU Project <scicos@inria.fr>
//  Copyright 2011 - Bernard DUJARDIN <bernard.dujardin@contrib.scilab.org>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// See the file ../license.txt
//

function [x,y,typ]=READAU_f(job,arg1,arg2)
    x=[];
    y=[];
    typ=[];
    select job
    case "set" then
        x=arg1;
        graphics=arg1.graphics;
        exprs=graphics.exprs
        model=arg1.model;
        out=model.out
        dstate=model.dstate
        ipar=model.ipar

        imask=9+ipar(1)
        tmask=ipar(imask)
        lunit=dstate(3)
        fname=exprs(1)

        while %t do
            [ok,fname1,N,swap,exprs] = scicos_getvalue([msprintf(gettext("Set %s block parameters"), "READAU_f"); " "; ..
            gettext("(Read Audio File)");" "; gettext("Read is done on a binary ''.au'' file")], ..
            [gettext("Input File Name"); gettext("Buffer size"); gettext("Swap Mode (0:No, 1:Yes)")], ..
            list("str",1,"vec",1,"vec",1), exprs);
            tmask1=[];
            outmask=1;
            frmt1="uc";
            M=1;
            offset=1;
            if ~ok then
                break,
            end //user cancel modification
            fname1=stripblanks(fname1)
            frmt1=stripblanks(frmt1)
            if alreadyran&fname1<>fname then
                block_parameter_error(gettext("Simulation running !!! You cannot modify Input file name"), ..
                gettext("End current simulation first."));
                // Remove this test user can't modify time in dialog
                //     elseif alreadyran&size(tmask1)<>size(tmask) then
                //       message(['You cannot modify time management when running';'End current simulation first'])
            elseif fname1 == "" then
                block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter."), gettext("Input File Name")), gettext("You must provide a filename."));
            elseif N < 1 then
                block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Buffer size"), N), msprintf(gettext("Must be greater than %d."), 1));
            elseif alreadyran & (N <> ipar(6)) then
                block_parameter_error(msprintf(gettext("You cannot modify ''%s'' when running."), gettext("Buffer Size")), gettext("End current simulation first."));
            elseif swap <> 0 & swap <> 1 then
                block_parameter_error(msprintf(gettext("Wrong value for ''%s'' parameter: %d."), gettext("Swap Mode"), swap), msprintf(gettext("Must be in the interval %s."),"[0, 1]"));
            else
                [model,graphics,ok]=check_io(model,graphics,[],1,1,[])
                frmt1=part(frmt1,1:3);
                if ok then
                    ipar=[length(fname1);
                    _str2code(frmt1);
                    0;
                    N;
                    M;
                    swap;
                    offset
                    _str2code(fname1);
                    tmask1
                    outmask(:)]
                    if prod(size(dstate))<>(N*M)+3 then
                        dstate=[-1;-1;lunit;zeros(N*M,1)]
                    end
                    model.dstate=dstate;
                    model.ipar=ipar
                    graphics.exprs=exprs;
                    x.graphics=graphics;
                    x.model=model
                    break
                end
            end
        end
    case "define" then
        frmt="uc "
        fname="test.au"
        lunit=0
        N=20;
        M=1
        tmask=[]
        swap=0
        offset=1
        outmask=1
        ievt=0
        nout=size(outmask,"*")

        model=scicos_model()
        model.sim=list("readau",2)
        model.out=nout
        model.evtin=1
        model.dstate=[1;1;lunit;zeros(N*M,1)]
        model.ipar=[length(fname);_str2code(frmt);ievt;N;M;swap;offset;_str2code(fname);
        tmask;outmask]
        model.blocktype="d"
        model.dep_ut=[%f %f]

        exprs=[fname;
        string(N);
        string(swap)]
        gr_i=[]
        x=standard_define([5 2],model,exprs,gr_i)
    end
endfunction