Mercurial > audio-send
comparison java/src/com/aurellem/send/AudioSend.java @ 7:37f25cb34196
transferred native interface for send.c to this project
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Wed, 26 Oct 2011 10:42:15 -0700 |
parents | |
children | 92b416b4e027 |
comparison
equal
deleted
inserted
replaced
6:99df34265b40 | 7:37f25cb34196 |
---|---|
1 package com.aurellem.send; | |
2 | |
3 import java.nio.ByteBuffer; | |
4 | |
5 public class AudioSend { | |
6 | |
7 private final long deviceID; | |
8 | |
9 public AudioSend(long deviceID){ | |
10 this.deviceID = deviceID; | |
11 } | |
12 | |
13 /** This establishes the LWJGL context as the context which will be copies to all | |
14 * other contexts. It must be called before any calls to <code>addListener();</code> | |
15 */ | |
16 public void initDevice(){ | |
17 ninitDevice(this.deviceID);} | |
18 public static native void ninitDevice(long device); | |
19 | |
20 /** | |
21 * The send device does not automatically process sound. This step function will cause | |
22 * the desired number of samples to be processed for each listener. The results will then | |
23 * be available via calls to <code>getSamples()</code> for each listener. | |
24 * @param samples | |
25 */ | |
26 public void step(int samples){ | |
27 nstep(this.deviceID, samples);} | |
28 public static native void nstep(long device, int samples); | |
29 | |
30 /** | |
31 * Retrieve the final rendered sound for a particular listener. <code>contextNum == 0</code> | |
32 * is the main LWJGL context. | |
33 * @param buffer | |
34 * @param samples | |
35 * @param contextNum | |
36 */ | |
37 public void getSamples(ByteBuffer buffer, int samples, int contextNum){ | |
38 ngetSamples(this.deviceID, buffer, buffer.position(), samples, contextNum);} | |
39 public static native void ngetSamples( | |
40 long device, ByteBuffer buffer, int position, int samples, int contextNum); | |
41 | |
42 /** | |
43 * Create an additional listener on the recorder device. The device itself will manage | |
44 * this listener and synchronize it with the main LWJGL context. Processed sound samples | |
45 * for this listener will be available via a call to <code>getSamples()</code> with | |
46 * <code>contextNum</code> equal to the number of times this method has been called. | |
47 */ | |
48 public void addListener(){naddListener(this.deviceID);} | |
49 public static native void naddListener(long device); | |
50 | |
51 /** | |
52 * This will internally call <code>alListener3f<code> in the appropriate slave context and update | |
53 * that context's listener's parameters. Calling this for a number greater than the current | |
54 * number of slave contexts will have no effect. | |
55 * @param pname | |
56 * @param v1 | |
57 * @param v2 | |
58 * @param v3 | |
59 * @param contextNum | |
60 */ | |
61 public void setNthListener3f(int pname, float v1, float v2, float v3, int contextNum){ | |
62 nsetNthListener3f(pname, v1, v2, v3, this.deviceID, contextNum);} | |
63 public static native void | |
64 nsetNthListener3f(int pname, float v1, float v2, float v3, long device, int contextNum); | |
65 | |
66 /** | |
67 * This will internally call <code>alListenerf<code> in the appropriate slave context and update | |
68 * that context's listener's parameters. Calling this for a number greater than the current | |
69 * number of slave contexts will have no effect. | |
70 * @param pname | |
71 * @param v1 | |
72 * @param contextNum | |
73 */ | |
74 public void setNthListenerf(int pname, float v1, int contextNum){ | |
75 nsetNthListenerf(pname, v1, this.deviceID, contextNum);} | |
76 public static native void nsetNthListenerf(int pname, float v1, long device, int contextNum); | |
77 | |
78 } |