Mercurial > octave-nkf
annotate libinterp/dldfcn/player_class.cc @ 19537:36a26a131209
Apply Octave coding style to audio project additions
* libinterp/dldfcn/__player_audioplayer__.cc,
libinterp/dldfcn/__recorder_audiorecorder__.cc,
libinterp/dldfcn/audiodevinfo.cc, libinterp/dldfcn/audioinfo.cc,
libinterp/dldfcn/audioread.cc, libinterp/dldfcn/audiowrite.cc,
libinterp/dldfcn/player_class.cc, libinterp/dldfcn/player_class.h,
libinterp/dldfcn/recorder_class.cc, libinterp/dldfcn/recorder_class.h,
scripts/audio/@audioplayer/__get_properties__.m,
scripts/audio/@audioplayer/audioplayer.m,
scripts/audio/@audioplayer/display.m, scripts/audio/@audioplayer/get.m,
scripts/audio/@audioplayer/isplaying.m, scripts/audio/@audioplayer/pause.m,
scripts/audio/@audioplayer/play.m,
scripts/audio/@audioplayer/playblocking.m,
scripts/audio/@audioplayer/resume.m, scripts/audio/@audioplayer/set.m,
scripts/audio/@audioplayer/stop.m, scripts/audio/@audioplayer/subsasgn.m,
scripts/audio/@audioplayer/subsref.m,
scripts/audio/@audiorecorder/__get_properties__.m,
scripts/audio/@audiorecorder/audiorecorder.m,
scripts/audio/@audiorecorder/display.m, scripts/audio/@audiorecorder/get.m,
scripts/audio/@audiorecorder/getaudiodata.m,
scripts/audio/@audiorecorder/getplayer.m,
scripts/audio/@audiorecorder/isrecording.m,
scripts/audio/@audiorecorder/pause.m, scripts/audio/@audiorecorder/play.m,
scripts/audio/@audiorecorder/record.m,
scripts/audio/@audiorecorder/recordblocking.m,
scripts/audio/@audiorecorder/resume.m, scripts/audio/@audiorecorder/set.m,
scripts/audio/@audiorecorder/stop.m,
scripts/audio/@audiorecorder/subsasgn.m,
scripts/audio/@audiorecorder/subsref.m: Apply consistent Octave indentation,
spacing, and quoting styles. Strip trailing whitespace. Remove braces from
one-line if-else blocks. Simplify some variable declarations.
author | Mike Miller <mtmiller@ieee.org> |
---|---|
date | Thu, 03 Oct 2013 07:52:58 -0400 |
parents | 1f551d169db2 |
children |
rev | line source |
---|---|
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
1 /* |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
2 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
3 Copyright (C) 2013 Vytautas JanĨauskas |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
4 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
5 This file is part of Octave. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
6 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
7 Octave is free software; you can redistribute it and/or modify it |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
8 under the terms of the GNU General Public License as published by the |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
9 Free Software Foundation; either version 3 of the License, or (at your |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
10 option) any later version. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
11 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
12 Octave is distributed in the hope that it will be useful, but WITHOUT |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
15 for more details. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
16 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
18 along with Octave; see the file COPYING. If not, see |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
20 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
21 */ |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
22 |
19535
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
23 #ifdef HAVE_CONFIG_H |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
24 #include <config.h> |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
25 #endif |
1f551d169db2
Include config.h in audio project source files
Mike Miller <mtmiller@ieee.org>
parents:
19534
diff
changeset
|
26 |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
27 #include "oct.h" |
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
28 #include "ov.h" |
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
29 #include "parse.h" |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
30 #include <portaudio.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
31 #include <stdint.h> |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
32 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
33 #include "player_class.h" |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
34 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
35 PaSampleFormat |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
36 bits_to_format (int bits) |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
37 { |
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
38 if (bits == 8) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
39 return paInt8; |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
40 else if (bits == 16) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
41 return paInt16; |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
42 else if (bits == 24) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
43 return paInt24; |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
44 else if (bits == 32) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
45 return paInt32; |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
46 else if (bits == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
47 return paFloat32; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
48 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
49 return 0; |
19509
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
50 } |
b9df6b3fd5ef
Fix includes in player and recorder class files, add instructions to build them
Vytautas Jančauskas <unaudio@gmail.com>
parents:
19508
diff
changeset
|
51 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
52 #define BUFFER_SIZE 512 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
53 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
54 DEFINE_OCTAVE_ALLOCATOR (audioplayer); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
55 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audioplayer, "audioplayer", "audioplayer"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
56 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
57 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
58 is_big_endian (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
59 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
60 union |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
61 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
62 uint32_t i; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
63 char c[4]; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
64 } bint = { 0x01020304 }; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
65 return bint.c[0] == 1; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
66 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
67 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
68 static int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
69 octave_play_callback (const void *input, void *output, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
70 unsigned long frames, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
71 const PaStreamCallbackTimeInfo *time, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
72 PaStreamCallbackFlags status, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
73 void *data) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
74 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
75 audioplayer *player = (audioplayer *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
76 int big_endian = is_big_endian (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
77 octave_value_list args, retval; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
78 args(0) = frames; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
79 retval = feval (player->octave_callback_function, args, 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
80 RowVector sound_l, sound_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
81 Matrix sound = retval(0).matrix_value (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
82 int return_status = retval(1).int_value (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
83 sound_l.resize (frames); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
84 sound_r.resize (frames); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
85 if (sound.cols () == 1) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
86 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
87 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
88 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
89 sound_l(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
90 sound_r(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
91 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
92 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
93 else if (sound.cols () == 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
94 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
95 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
96 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
97 sound_l(i) = sound(i, 0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
98 sound_r(i) = sound(i, 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
99 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
100 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
101 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
102 return paAbort; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
103 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
104 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
105 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
106 if (player->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
107 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
108 int8_t *buffer = (int8_t *)output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
109 buffer[2 * i] = sound_l.elem (i) * (pow (2.0, 7) - 1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
110 buffer[2 * i + 1] = sound_r.elem (i) * (pow (2.0, 7) - 1); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
111 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
112 else if (player->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
113 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
114 int16_t *buffer = (int16_t *)output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
115 buffer[2 * i] = sound_l.elem (i) * (pow (2.0, 15) - 1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
116 buffer[2 * i + 1] = sound_r.elem (i) * (pow (2.0, 15) - 1); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
117 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
118 else if (player->get_nbits () == 24) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
119 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
120 uint8_t *buffer = (uint8_t *)output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
121 int32_t sample_l = sound_l.elem (i) * (pow (2.0, 23) - 1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
122 int32_t sample_r = sound_r.elem (i) * (pow (2.0, 23) - 1); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
123 sample_l &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 sample_r &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
125 uint8_t *_sample_l = (uint8_t *)&sample_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
126 uint8_t *_sample_r = (uint8_t *)&sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
127 buffer[i * 6 + 0] = _sample_l[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
128 buffer[i * 6 + 1] = _sample_l[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
129 buffer[i * 6 + 2] = _sample_l[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
130 buffer[i * 6 + 3] = _sample_r[0 + big_endian]; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
131 buffer[i * 6 + 4] = _sample_r[1 + big_endian]; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
132 buffer[i * 6 + 5] = _sample_r[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
133 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
134 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
135 return return_status; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
136 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
137 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
138 static int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
139 portaudio_play_callback (const void *input, void *output, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
140 unsigned long frames, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
141 const PaStreamCallbackTimeInfo* time, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
142 PaStreamCallbackFlags status, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
143 void *data) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
144 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
145 audioplayer *player = (audioplayer *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
146 int big_endian = is_big_endian (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
147 int channels = player->get_channels (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
148 RowVector *sound_l = player->get_left (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
149 RowVector *sound_r; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
150 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
151 if (channels > 1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
152 sound_r = player->get_right (); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
153 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
154 sound_r = sound_l; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
155 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
156 for (int j = 0, k = 0; j < frames; j++, k += 2) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
157 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
158 unsigned int sample_number = player->get_sample_number (); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
159 if (sample_number > player->get_end_sample ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
160 return paAbort; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
161 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
162 if (player->get_type () == DOUBLE) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
163 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
164 if (player->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
165 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
166 int8_t *buffer = (int8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
167 buffer[k] = sound_l->elem (sample_number) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 buffer[k + 1] = sound_r->elem (sample_number) * (pow (2.0, 7) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
169 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
170 else if (player->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
171 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
172 int16_t *buffer = (int16_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
173 buffer[k] = sound_l->elem (sample_number) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
174 buffer[k + 1] = sound_r->elem (sample_number) * (pow (2.0, 15) - 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
175 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
176 else if (player->get_nbits () == 24) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
177 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
178 uint8_t *buffer = (uint8_t *)output; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
179 int32_t sample_l = sound_l->elem (sample_number) * (pow (2.0, 23) - 1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
180 int32_t sample_r = sound_r->elem (sample_number) * (pow (2.0, 23) - 1); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
181 sample_l &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 sample_r &= 0x00ffffff; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
183 uint8_t *_sample_l = (uint8_t *)&sample_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
184 uint8_t *_sample_r = (uint8_t *)&sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
185 buffer[j * 6 + 0] = _sample_l[0 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 buffer[j * 6 + 1] = _sample_l[1 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
187 buffer[j * 6 + 2] = _sample_l[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 buffer[j * 6 + 3] = _sample_r[0 + big_endian]; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
189 buffer[j * 6 + 4] = _sample_r[1 + big_endian]; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
190 buffer[j * 6 + 5] = _sample_r[2 + big_endian]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
191 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
192 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 else if (player->get_type () == INT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
195 int8_t *buffer = (int8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
196 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
197 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
198 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 else if (player->get_type () == UINT8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
200 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
201 uint8_t *buffer = (uint8_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
202 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 else if (player->get_type () == INT16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
206 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
207 int16_t *buffer = (int16_t *)output; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
208 buffer[k] = sound_l->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
209 buffer[k + 1] = sound_r->elem (sample_number); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
210 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
211 player->set_sample_number (sample_number + 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
212 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
213 return paContinue; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
214 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
216 audioplayer::audioplayer (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
217 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
218 this->nbits = 16; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 this->id = -1; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
220 this->sample_number = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
221 this->tag = charMatrix (""); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
222 Matrix userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
223 this->userdata = octave_value (userdata); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
224 this->stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
225 this->octave_callback_function = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
226 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
227 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
228 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
229 audioplayer::print (std::ostream& os, bool pr_as_read_syntax) const |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
230 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
231 print_raw (os, pr_as_read_syntax); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
232 newline (os); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
233 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
234 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
235 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
236 audioplayer::print_raw (std::ostream& os, bool pr_as_read_syntax) const |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
238 os << 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
239 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
241 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
242 audioplayer::init_fn (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
244 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
245 int device; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
246 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 err = Pa_Initialize (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
248 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
249 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
250 error ("audioplayer: Initialization error!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
251 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
253 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
254 int numDevices = Pa_GetDeviceCount (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
255 if (numDevices < 0) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
256 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
257 error ("audioplayer: No audio devices found!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
259 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
260 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
261 if (this->get_id () == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
262 device = Pa_GetDefaultOutputDevice (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
263 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
264 device = this->get_id (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
265 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
266 output_parameters.device = device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
267 output_parameters.channelCount = 2; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
268 output_parameters.sampleFormat = bits_to_format (this->get_nbits ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
269 output_parameters.suggestedLatency = Pa_GetDeviceInfo (device)->defaultHighOutputLatency; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
270 output_parameters.hostApiSpecificStreamInfo = NULL; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
271 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
272 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
273 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
274 audioplayer::init (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
275 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
276 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
277 int channels = this->y.rows (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
278 RowVector *sound_l = this->get_left (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 int device; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
280 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
281 err = Pa_Initialize (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
282 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
283 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
284 error ("audioplayer: Initialization error!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
285 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
286 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
287 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
288 int numDevices = Pa_GetDeviceCount (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
289 if (numDevices < 0) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
290 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
291 error ("audioplayer: No audio devices found!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
293 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
294 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
295 if (this->get_id () == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
296 device = Pa_GetDefaultOutputDevice (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
297 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
298 device = this->get_id (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
299 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
300 output_parameters.device = device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
301 output_parameters.channelCount = 2; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
302 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
303 if (this->type == DOUBLE) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
304 output_parameters.sampleFormat = bits_to_format (this->get_nbits ()); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
305 else if (this->type == INT8) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
306 output_parameters.sampleFormat = paInt8; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
307 else if (this->type == UINT8) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
308 output_parameters.sampleFormat = paUInt8; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
309 else if (this->type == INT16) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
310 output_parameters.sampleFormat = paInt16; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
311 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
312 output_parameters.suggestedLatency = Pa_GetDeviceInfo (device)->defaultHighOutputLatency; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
313 output_parameters.hostApiSpecificStreamInfo = NULL; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
314 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
315 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
316 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
317 audioplayer::set_y (octave_value y) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
318 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
319 if (y.is_int8_type ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
320 this->type = INT8; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
321 else if (y.is_uint8_type ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
322 this->type = UINT8; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
323 else if (y.is_int16_type ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
324 this->type = INT16; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
325 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
326 this->type = DOUBLE; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
327 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
328 this->y = y.matrix_value (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
329 if (this->y.rows () > 2) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
330 this->y = this->y.transpose (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
331 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
332 this->channels = this->y.rows (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
333 this->left = this->y.row (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
334 if (this->channels == 2) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
335 this->right = this->y.row (1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
336 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
337 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
338 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
339 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
340 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
341 audioplayer::set_y (octave_function *fn) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
343 this->octave_callback_function = fn; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
344 this->channels = 2; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
345 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
346 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
347 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
348 Matrix& |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
349 audioplayer::get_y (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
351 return this->y; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
352 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
353 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
354 RowVector * |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
355 audioplayer::get_left (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
356 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
357 return &(this->left); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
358 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
359 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
360 RowVector * |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
361 audioplayer::get_right (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
362 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
363 return &(this->right); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
364 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
365 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
366 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
367 audioplayer::set_fs (int fs) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
368 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
369 this->fs = fs; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
370 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
371 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
372 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
373 audioplayer::get_fs (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
375 return this->fs; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
376 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
377 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
378 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
379 audioplayer::set_nbits (int nbits) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
380 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
381 this->nbits = nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
382 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
383 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
384 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
385 audioplayer::get_nbits (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
386 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
387 return this->nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
388 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
389 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
390 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
391 audioplayer::set_id (int id) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
392 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
393 this->id = id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
395 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
396 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
397 audioplayer::get_id (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
398 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
399 return this->id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
400 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
401 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
402 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
403 audioplayer::get_channels (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
404 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
405 return this->channels; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
406 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
408 audio_type |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
409 audioplayer::get_type (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
410 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 return this->type; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
412 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
413 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
414 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
415 audioplayer::set_sample_number (unsigned int sample_number) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
416 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
417 this->sample_number = sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
418 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
419 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
420 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
421 audioplayer::get_sample_number (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
422 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
423 return this->sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
424 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
425 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
426 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
427 audioplayer::get_total_samples (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
428 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
429 return this->left.length (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
430 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
431 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
432 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
433 audioplayer::set_end_sample (unsigned int end_sample) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
434 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
435 this->end_sample = end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
437 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
438 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
439 audioplayer::get_end_sample (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
440 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
441 return this->end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
442 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
443 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
444 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
445 audioplayer::reset_end_sample (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
446 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
447 this->set_end_sample (this->left.length ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
448 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
449 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
450 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
451 audioplayer::set_tag (charMatrix tag) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
452 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
453 this->tag = tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
454 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
455 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
456 charMatrix |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
457 audioplayer::get_tag (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
458 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
459 return this->tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
460 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
461 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
462 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
463 audioplayer::set_userdata (octave_value userdata) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
464 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
465 this->userdata = userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
466 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
467 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
468 octave_value |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
469 audioplayer::get_userdata (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
470 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
471 return this->userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
472 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
473 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
474 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
475 audioplayer::playblocking (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
476 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
477 if (this->get_stream ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
478 this->stop (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
479 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
480 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
481 uint32_t buffer[BUFFER_SIZE * 2]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
482 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, NULL, NULL); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
483 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
484 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
485 error ("audioplayer: Error opening audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
486 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
487 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
488 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
489 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
490 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
491 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
492 error ("audioplayer: Error starting audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
493 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
494 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
495 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
496 unsigned int start, end; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
497 start = this->get_sample_number (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
498 end = this->get_end_sample (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
499 for (int i = start; i < end; i += BUFFER_SIZE) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
500 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
501 if (this->octave_callback_function != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
502 octave_play_callback (0, (void *)buffer, BUFFER_SIZE, 0, 0, (void *)this); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
503 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
504 portaudio_play_callback (0, (void *)buffer, BUFFER_SIZE, 0, 0, (void *)this); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
505 err = Pa_WriteStream (stream, buffer, BUFFER_SIZE); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
506 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
507 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
508 err = Pa_StopStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
509 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
510 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
511 error ("audioplayer: Error stoping audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
512 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
513 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
514 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
515 err = Pa_CloseStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
516 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
517 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
518 error ("audioplayer: Error closing audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
519 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
520 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
521 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
522 stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
523 this->set_sample_number (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
524 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
525 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
526 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
527 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
528 audioplayer::play (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
529 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
530 if (this->get_stream ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
531 this->stop (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
532 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
533 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
534 if (this->octave_callback_function != 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
535 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, octave_play_callback, (void *)this); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
536 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
537 err = Pa_OpenStream (&stream, NULL, &(this->output_parameters), this->get_fs (), BUFFER_SIZE, paClipOff, portaudio_play_callback, (void *)this); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
538 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
539 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
540 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
541 error ("audioplayer: Error opening audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
542 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
543 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
544 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
545 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
546 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
547 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
548 error ("audioplayer: Error starting audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
549 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
550 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
551 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
552 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
553 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
554 audioplayer::pause (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
555 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
556 if (this->get_stream () == 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
557 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
558 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
559 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
560 err = Pa_StopStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
561 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
562 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
563 error ("audiorecorder: Error stoping audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
564 return; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
565 } |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
566 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
567 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
568 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
569 audioplayer::resume (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
570 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
571 if (this->get_stream () == 0) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
572 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
573 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
574 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
575 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
576 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
577 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
578 error ("audiorecorder: Error starting audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
579 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
580 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
581 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
582 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
583 PaStream * |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
584 audioplayer::get_stream (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
585 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
586 return this->stream; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
587 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
588 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
589 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
590 audioplayer::stop (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
591 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
592 if (this->get_stream () == 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
593 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
594 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
595 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
596 this->set_sample_number (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
597 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
598 if (not Pa_IsStreamStopped (this->get_stream ())) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
599 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
600 err = Pa_AbortStream (this->get_stream ()); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
601 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
602 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
603 error ("audioplayer: Error stopping audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
604 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
605 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
606 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
607 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
608 err = Pa_CloseStream (this->get_stream ()); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
609 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
610 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
611 error ("audioplayer: Error closing audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
612 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
613 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
614 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
615 stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
616 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
617 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
618 bool |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
619 audioplayer::isplaying (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
620 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
621 if (this->get_stream () == 0) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
622 return false; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
623 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
624 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
625 err = Pa_IsStreamActive (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
626 if (err != 0 and err != 1) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
627 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
628 error ("audiorecorder: Error checking stream activity status"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
629 return false; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
630 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
631 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
632 return (err == 1); |
19534
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19509
diff
changeset
|
633 } |