codesimian
Class SoundSyncMic

java.lang.Object
  extended by codesimian.CS<CSGeneric>
      extended by codesimian.DefaultCS
          extended by codesimian.SoundSyncMic
All Implemented Interfaces:
CodeSimian

public final class SoundSyncMic
extends DefaultCS

SoundSyncMic is a list of numbers whose F() values are interpreted as audio samples for as many audio holes your sound-card(s) have, counting double for stereo holes.

P(0) is a single-channel audio output (like speakers or headphones). PF(0) should return a number ranging -1 to 1, which is then scaled to range of short or byte, depending on quality of audio requested (code not finished for this yet), which is copied to bytes in your sound-card.

If P(1) exists, its the second channel of audio. P(2) is the third... quantity of channels limited by how many total holes (and double if they're stereo) your sound card(s) have.

Most computers have more than 1 audio-out channel, and some have more than 1 audio-in channel.

NEED TO BUILD: a way to let the user choose priority of holes, so code that does not specify a channel will get the best channel (at index 0).


Nested Class Summary
static class SoundSyncMic.MicrophoneSync
          this class is similar to codesimian.N, except its value is a float and value can not be set except by SoundSyncMic.
 
Field Summary
 CS bayesNode
           
static int defaultLevel2BufferSizeInBytes
           
static int defaultLineBufferSizeInBytes
           
static int threadMaySleepIfAtLeastThisManyBytesQueued
           
 
Fields inherited from class codesimian.CS
DESCRIPTION, END, EXECPROXY, HEAP, JAVACODE, MYFUEL, NAME, NEWINSTANCE, NULL, PARENT, PARSEPRIORITY, PREV, TESTER, THIS
 
Constructor Summary
SoundSyncMic()
           
 
Method Summary
 void adjustSpeeds(float micBufferUsed, float spkBufferUsed)
          adjusts speeds to keep mic buffer and speaker buffer near good sizes
static int countMicrophones()
          if countP() != countMics(), the smaller will be used for both.
static int countSpeakers()
          if countP() != countMics(), the smaller will be used for both.
 java.lang.String description()
          a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for.
 double DForProxy()
          Execute this CS and cast to double.
static javax.sound.sampled.TargetDataLine getMicrophone(int index)
           
static javax.sound.sampled.SourceDataLine getSpeaker(int index)
           
 java.lang.String keyword()
          For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
 
Methods inherited from class codesimian.DefaultCS
B, C, countP, decrementMyFuel, deleteP, F, fuel, getExec, getObject, heap, I, indexP, indexPName, insertB, insertC, insertD, insertF, insertI, insertJ, insertL, insertL, insertL1, insertP, insertS, insertZ, J, javaCode, LForProxy, LForProxy, minP, myFuel, name, newInstance, objectToCS, objectToCSArray, objectToCSArray, P, prevD, prevL, PType, S, setB, setC, setCountP, setD, setD, setExec, setF, setFuel, setI, setJ, setL, setL, setL, setL1, setMyFuel, setName, setObject, setP, setPrevExec, setPType, setS, setZ, start, toString, V, Z
 
Methods inherited from class codesimian.CS
addB, addC, addD, addF, addI, addJ, addL, addP, addP, addP, addP, addP, addS, addZ, BForProxy, CForProxy, clone, cost, D, deleteP, FForProxy, GETB, GETC, GETD, GETF, GETI, GETJ, GETL, GETS, GETZ, IForProxy, isIllusion, JForProxy, L, L, L, L, L, maxD, maxP, minD, overwrites, parent, parsePriority, PB, PC, PD, PF, PI, PJ, PL, prevB, prevC, prevF, prevI, prevJ, prevS, prevZ, proxyOf, PS, PZ, reflect, reflect, reflect6, setB, SETB, setC, SETC, setCost, SETD, setDescription, setF, SETF, setHeap, setI, SETI, setJ, SETJ, SETL, setL, setL, setParent, setParsePriority, setProxyOf, setS, SETS, setTester, setZ, SETZ, SForProxy, tester, toJavaCode, VForProxy, voidReflect, ZForProxy
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

bayesNode

public CS bayesNode

defaultLineBufferSizeInBytes

public static final int defaultLineBufferSizeInBytes
See Also:
Constant Field Values

defaultLevel2BufferSizeInBytes

public static final int defaultLevel2BufferSizeInBytes
See Also:
Constant Field Values

threadMaySleepIfAtLeastThisManyBytesQueued

public static final int threadMaySleepIfAtLeastThisManyBytesQueued
See Also:
Constant Field Values
Constructor Detail

SoundSyncMic

public SoundSyncMic()
Method Detail

getMicrophone

public static javax.sound.sampled.TargetDataLine getMicrophone(int index)

countMicrophones

public static int countMicrophones()
if countP() != countMics(), the smaller will be used for both.


getSpeaker

public static javax.sound.sampled.SourceDataLine getSpeaker(int index)

countSpeakers

public static int countSpeakers()
if countP() != countMics(), the smaller will be used for both.


DForProxy

public double DForProxy()
Description copied from class: CS
Execute this CS and cast to double.

D() and DForProxy() are the 2 most important functions in CS. They execute this CS. All other execute functions, by default, return DForProxy cast to their own type.

For example, J() calls the proxy which calls JForProxy() which calls DForProxy(). D() calls the proxy which calls DForProxy().

By default, all other primitive EXECUTE functions defer to D.
Functions that EXECUTE this CS: L(Class) L(int,Class,int) Z() B() C() S() I() J() F() D() V()

Specified by:
DForProxy in class DefaultCS

keyword

public java.lang.String keyword()
Description copied from class: DefaultCS
For the CodeSimian language as a String.
CodeSimian language keyword, like "+" "*" "max" ">" etc.

Override this function if you want to specify a keyword other than how I derive them from the class name, like + for Add.

Some CSs might never be intended to be used in the language by their keyword.
The best example (4/05) is Num, because it is used in the language like "3.4" instead of "num()".
Default: Returns class name, minus package name (and its dots), and change the first letter to lowercase.

For example, CS.MaxParams does not override keyword(), which returns "maxP".

Overrides:
keyword in class DefaultCS
See Also:
CS.parent(), CS.newInstance(), CS.name()

description

public java.lang.String description()
Description copied from class: CS
a short description of this CS, shorter than the javadoc, but long enough to tell what the params are for. Example use: in automatically generated webpages for CodeSimian. Example: "returns sum of all params" for Add.

Overrides:
description in class DefaultCS

adjustSpeeds

public void adjustSpeeds(float micBufferUsed,
                         float spkBufferUsed)
adjusts speeds to keep mic buffer and speaker buffer near good sizes