Mercurial > octave-nkf
annotate libinterp/dldfcn/recorder_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:
19513
diff
changeset
|
1 /* |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
diff
changeset
|
2 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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:
19513
diff
changeset
|
4 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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:
19513
diff
changeset
|
6 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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:
19513
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:
19513
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:
19513
diff
changeset
|
10 option) any later version. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
diff
changeset
|
11 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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:
19513
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:
19513
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:
19513
diff
changeset
|
15 for more details. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
diff
changeset
|
16 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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:
19513
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:
19513
diff
changeset
|
19 <http://www.gnu.org/licenses/>. |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
diff
changeset
|
20 |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
diff
changeset
|
21 */ |
8bb399569393
Add Octave copyright header block to audio project files
Mike Miller <mtmiller@ieee.org>
parents:
19513
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 #include "recorder_class.h" |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
35 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
36 #define BUFFER_SIZE 512 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
37 |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
38 DEFINE_OCTAVE_ALLOCATOR (audiorecorder); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
39 DEFINE_OV_TYPEID_FUNCTIONS_AND_DATA (audiorecorder, "audiorecorder", "audiorecorder"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
40 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
41 static int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
42 octave_record_callback (const void *input, void *output, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
43 unsigned long frames, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
44 const PaStreamCallbackTimeInfo* time, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
45 PaStreamCallbackFlags status, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
46 void *data) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
47 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
48 audiorecorder *recorder = (audiorecorder *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
49 int channels = recorder->get_channels (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
50 float sample_l, sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
51 Matrix sound; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
52 sound.resize (frames, 2); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
53 if (recorder->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
54 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
55 int8_t *input8 = (int8_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
56 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
57 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
58 sample_l = input8[i * channels] / (pow (2.0, 7) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
59 sample_r = input8[i * channels + (channels - 1)] / (pow (2.0, 7) - 1.0); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
60 sound(i, 0) = sample_l; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
61 sound(i, 1) = sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
62 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
63 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
64 else if (recorder->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
65 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
66 int16_t *input16 = (int16_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
67 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
68 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
69 sample_l = input16[i * channels] / (pow (2.0, 15) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
70 sample_r = input16[i * channels + (channels - 1)] / (pow (2.0, 15) - 1.0); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
71 sound(i, 0) = sample_l; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
72 sound(i, 1) = sample_r; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
73 } |
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 else if (recorder->get_nbits () == 24) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
76 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
77 uint8_t *input24 = (uint8_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
78 int32_t sample_l32, sample_r32; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
79 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
|
80 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
|
81 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
82 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
83 for (int j = 0; j < 3; j++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
84 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
85 _sample_l[j] = input24[i * channels * 3 + j]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
86 _sample_r[j] = input24[i * channels * 3 + (channels - 1) * 3 + j]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
87 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
88 if (sample_l32 & 0x00800000) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
89 sample_l32 |= 0xff000000; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
90 if (sample_r32 & 0x00800000) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
91 sample_r32 |= 0xff000000; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
92 sound(i, 0) = sample_l32 / pow (2.0, 23); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
93 sound(i, 1) = sample_r32 / pow (2.0, 23); |
19508
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 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
96 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
97 octave_value_list args, retval; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
98 args(0) = sound; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
99 retval = feval (recorder->octave_callback_function, args, 1); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
100 return retval(0).int_value (); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
101 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
102 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
103 static int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
104 portaudio_record_callback (const void *input, void *output, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
105 unsigned long frames, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
106 const PaStreamCallbackTimeInfo* time, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
107 PaStreamCallbackFlags status, |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
108 void *data) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
109 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
110 audiorecorder *recorder = (audiorecorder *)data; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
111 int channels = recorder->get_channels (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
112 float sample_l, sample_r; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
113 if (recorder->get_nbits () == 8) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
114 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
115 int8_t *input8 = (int8_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
116 for (int i = 0; i < frames; i++) |
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 sample_l = input8[i * channels] / (pow (2.0, 7) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
119 sample_r = input8[i * channels + (channels - 1)] / (pow (2.0, 7) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
120 recorder->append (sample_l, sample_r); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
121 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
122 } |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
123 else if (recorder->get_nbits () == 16) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
124 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
125 int16_t *input16 = (int16_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
126 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
127 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
128 sample_l = input16[i * channels] / (pow (2.0, 15) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
129 sample_r = input16[i * channels + (channels - 1)] / (pow (2.0, 15) - 1.0); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
130 recorder->append (sample_l, sample_r); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
131 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
132 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
133 else if (recorder->get_nbits () == 24) |
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 uint8_t *input24 = (uint8_t *)input; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
136 int32_t sample_l32, sample_r32; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
137 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
|
138 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
|
139 for (int i = 0; i < frames; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
140 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
141 for (int j = 0; j < 3; j++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
142 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
143 _sample_l[j] = input24[i * channels * 3 + j]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
144 _sample_r[j] = input24[i * channels * 3 + (channels - 1) * 3 + j]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
145 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
146 if (sample_l32 & 0x00800000) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
147 sample_l32 |= 0xff000000; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
148 if (sample_r32 & 0x00800000) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
149 sample_r32 |= 0xff000000; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
150 recorder->append (sample_l32 / pow (2.0, 23), sample_r32 / pow (2.0, 23)); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
151 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
152 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
153 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
154 if (recorder->get_sample_number () > recorder->get_end_sample ()) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
155 return paComplete; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
156 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
157 return paContinue; |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
158 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
159 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
160 audiorecorder::audiorecorder (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
161 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
162 this->id = -1; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
163 this->sample_number = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
164 this->channels = 1; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
165 this->tag = charMatrix (""); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
166 Matrix userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
167 this->userdata = octave_value (userdata); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
168 this->stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
169 this->end_sample = -1; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
170 this->set_fs (44100); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
171 this->set_nbits (16); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
172 this->set_channels (2); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
173 this->octave_callback_function = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
174 } |
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 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
177 audiorecorder::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
|
178 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
179 print_raw (os, pr_as_read_syntax); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
180 newline (os); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
181 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
182 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
183 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
184 audiorecorder::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
|
185 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
186 os << 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
187 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
188 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
189 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
190 audiorecorder::init (void) |
19508
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 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
193 int device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
194 err = Pa_Initialize (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
195 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
196 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
197 error ("audiorecorder: Initialization error!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
198 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
199 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
200 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
201 int numDevices = Pa_GetDeviceCount (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
202 if (numDevices < 0) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
203 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
204 error ("audiorecorder: No audio devices found!"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
205 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
206 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
207 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
208 if (this->get_id () == -1) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
209 device = Pa_GetDefaultInputDevice (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
210 else |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
211 device = this->get_id (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
212 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
213 this->input_parameters.device = device; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
214 this->input_parameters.channelCount = this->get_channels (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
215 this->input_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
|
216 this->input_parameters.suggestedLatency = Pa_GetDeviceInfo (device)->defaultHighInputLatency; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
217 this->input_parameters.hostApiSpecificStreamInfo = NULL; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
218 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
219 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
220 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
221 audiorecorder::set_fs (int fs) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
222 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
223 this->fs = fs; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
224 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
225 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
226 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
227 audiorecorder::get_fs (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
228 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
229 return this->fs; |
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 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
232 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
233 audiorecorder::set_nbits (int nbits) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
234 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
235 this->nbits = nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
236 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
237 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
238 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
239 audiorecorder::get_nbits (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
240 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
241 return this->nbits; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
242 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
243 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
244 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
245 audiorecorder::set_id (int id) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
246 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
247 this->id = id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
248 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
249 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
250 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
251 audiorecorder::get_id (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
252 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
253 return this->id; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
254 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
255 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
256 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
257 audiorecorder::set_channels (int channels) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
258 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
259 assert (channels == 1 or channels == 2); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
260 this->channels = channels; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
261 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
262 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
263 int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
264 audiorecorder::get_channels (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
265 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
266 return this->channels; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
267 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
268 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
269 audio_type |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
270 audiorecorder::get_type (void) |
19508
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 return this->type; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
273 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
274 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
275 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
276 audiorecorder::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
|
277 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
278 this->sample_number = sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
279 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
280 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
281 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
282 audiorecorder::get_sample_number (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
283 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
284 return this->sample_number; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
285 } |
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 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
288 audiorecorder::get_total_samples (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
289 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
290 return this->left.size (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
291 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
292 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
293 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
294 audiorecorder::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
|
295 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
296 this->end_sample = end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
297 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
298 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
299 unsigned int |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
300 audiorecorder::get_end_sample (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
301 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
302 return this->end_sample; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
303 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
304 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
305 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
306 audiorecorder::reset_end_sample (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
307 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
308 this->set_end_sample (this->left.size ()); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
309 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
310 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
311 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
312 audiorecorder::set_tag (charMatrix tag) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
313 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
314 this->tag = tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
315 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
316 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
317 charMatrix |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
318 audiorecorder::get_tag (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
319 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
320 return this->tag; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
321 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
322 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
323 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
324 audiorecorder::set_userdata (octave_value userdata) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
325 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
326 this->userdata = userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
327 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
328 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
329 octave_value |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
330 audiorecorder::get_userdata (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
331 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
332 return this->userdata; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
333 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
334 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
335 octave_value |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
336 audiorecorder::getaudiodata (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
337 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
338 Matrix audio (2, this->left.size ()); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
339 for (int i = 0; i < this->left.size (); i++) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
340 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
341 audio(0, i) = this->left[i]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
342 audio(1, i) = this->right[i]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
343 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
344 return octave_value (audio); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
345 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
346 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
347 audioplayer * |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
348 audiorecorder::getplayer (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
349 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
350 audioplayer *player = new audioplayer (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
351 player->set_y (this->getaudiodata ()); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
352 player->set_fs (this->get_fs ()); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
353 player->set_nbits (this->get_nbits ()); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
354 player->init (); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
355 return player; |
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 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
358 bool |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
359 audiorecorder::isrecording (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
360 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
361 if (this->get_stream () == 0) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
362 return false; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
363 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
364 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
365 err = Pa_IsStreamActive (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
366 if (err != 0 and err != 1) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
367 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
368 error ("audiorecorder: Error checking stream activity status"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
369 return false; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
370 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
371 |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
372 return (err == 1); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
373 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
374 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
375 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
376 audiorecorder::record (void) |
19508
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 if (this->get_stream ()) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
379 this->stop (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
380 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
381 this->left.clear (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
382 this->right.clear (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
383 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
384 if (this->octave_callback_function != 0) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
385 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
386 err = Pa_OpenStream (&stream, &(this->input_parameters), NULL, this->get_fs (), BUFFER_SIZE, paClipOff, octave_record_callback, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
387 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
388 else |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
389 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
390 err = Pa_OpenStream (&stream, &(this->input_parameters), NULL, this->get_fs (), BUFFER_SIZE, paClipOff, portaudio_record_callback, (void *)this); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
391 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
392 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
393 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
394 error ("audiorecorder: Error opening audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
395 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
396 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
397 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
398 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
399 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
400 error ("audiorecorder: Error starting audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
401 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
402 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
403 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
404 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
405 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
406 audiorecorder::recordblocking (float seconds) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
407 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
408 if (this->get_stream ()) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
409 this->stop (); |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
410 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
411 this->left.clear (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
412 this->right.clear (); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
413 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
414 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
415 err = Pa_OpenStream (&stream, &(this->input_parameters), NULL, this->get_fs (), BUFFER_SIZE, paClipOff, NULL, (void *)this); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
416 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
417 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
418 error ("audiorecorder: Error opening audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
419 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
420 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
421 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
422 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
423 if (err != paNoError) |
19508
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 error ("audiorecorder: Error starting audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
426 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
427 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
428 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
429 unsigned int frames = seconds * this->get_fs (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
430 uint8_t buffer[BUFFER_SIZE * 2 * 3]; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
431 for (int i = 0; i < frames / BUFFER_SIZE; i++) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
432 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
433 Pa_ReadStream (this->get_stream (), (void *)buffer, BUFFER_SIZE); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
434 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
|
435 octave_record_callback ((void *)buffer, NULL, BUFFER_SIZE, 0, 0, (void *)this); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
436 else |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
437 portaudio_record_callback ((void *)buffer, NULL, BUFFER_SIZE, 0, 0, (void *)this); |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
438 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
439 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
440 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
441 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
442 audiorecorder::pause (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
443 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
444 if (this->get_stream () == 0) |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
445 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
446 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
447 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
448 err = Pa_StopStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
449 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
450 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
451 error ("audiorecorder: Error stoping audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
452 return; |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
453 } |
19508
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 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
457 audiorecorder::resume (void) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
458 { |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
459 if (this->get_stream () == 0) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
460 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
461 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
462 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
463 err = Pa_StartStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
464 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
465 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
466 error ("audiorecorder: Error starting audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
467 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
468 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
469 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
470 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
471 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
472 audiorecorder::stop (void) |
19508
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 if (this->get_stream () == 0) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
475 return; |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
476 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
477 PaError err; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
478 if (not Pa_IsStreamStopped (this->get_stream ())) |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
479 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
480 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
|
481 if (err != paNoError) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
482 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
483 error ("audioplayer: Error stopping audio playback stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
484 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
485 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
486 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
487 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
488 err = Pa_CloseStream (stream); |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
489 if (err != paNoError) |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
490 { |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
491 error ("audiorecorder: Error closing audio recording stream"); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
492 return; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
493 } |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
494 |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
495 this->set_sample_number (0); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
496 this->reset_end_sample (); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
497 stream = 0; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
498 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
499 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
500 void |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
501 audiorecorder::append (float sample_l, float sample_r) |
19508
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
502 { |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
503 this->left.push_back (sample_l); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
504 this->right.push_back (sample_r); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
505 this->set_sample_number (this->get_sample_number () + 1); |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
506 } |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
507 |
19537
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
508 PaStream * |
36a26a131209
Apply Octave coding style to audio project additions
Mike Miller <mtmiller@ieee.org>
parents:
19535
diff
changeset
|
509 audiorecorder::get_stream (void) |
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 return this->stream; |
91ee78cdba6c
New files for audio playback and recording
Vytautas Jančauskas <unaudio@gmail.com>
parents:
diff
changeset
|
512 } |