In this post, i am going to show the code for creating the AudioInputStream from an PCM - amplitude array. It basically converts the int [] array to byte array according to AudioFormat.
The code for the reverse operation (extract amplitude array from recorded wave file or AudioStream )is in my earlier post : http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/java-extract-amplitude-array-from.html
The code for converting PCM amplitude array to AudioStream is follows :
Showing posts with label java. Show all posts
Showing posts with label java. Show all posts
Java Sound : generate play sine wave - source code
Working source code example on how to generate and play sine wave in Java :
View my previous post for playing any PCM amplitude array.
Generate Sine wave of a particular frequency :
View my previous post for playing any PCM amplitude array.
Generate Sine wave of a particular frequency :
private static byte[] generateSineWavefreq(int frequencyOfSignal, int seconds) {
// total samples = (duration in second) * (samples per second)
byte[] sin = new byte[seconds * sampleRate];
double samplingInterval = (double) (sampleRate / frequencyOfSignal);
System.out.println("Sampling Frequency : "+sampleRate);
System.out.println("Frequency of Signal : "+frequencyOfSignal);
System.out.println("Sampling Interval : "+samplingInterval);
for (int i = 0; i < sin.length; i++) {
double angle = (2.0 * Math.PI * i) / samplingInterval;
sin[i] = (byte) (Math.sin(angle) * 127);
System.out.println("" + sin[i]);
}
Java Audio : Playing PCM amplitude Array
How to play a array of PCM amplitude values (integer or float array) in Java - Steps
Basic Steps :
Converting integer array to bytearray :
We need to convert our PCM array to byteArray because the line.write requires byte[] b as parameter.
Basic Steps :
//initialize source data line - for playback
SourceDataLine line = AudioSystem.getSourceDataLine(audioFormat);
line.open(audioFormat);
line.start();
//play the byteArray
line.write(byteArray, 0, byteArray .length);//(byte[] b, int off, int len)
line.drain();
line.close();
Converting integer array to bytearray :
We need to convert our PCM array to byteArray because the line.write requires byte[] b as parameter.
Java extract amplitude array from recorded wave
Extract amplitude array from recorded/saved wav : From File , AudioInputStream , ByteArray of File or ByteArrayInputStream - working java source code example
import java.io.ByteArrayInputStream;
import java.io.File;
Sound (audio file) player in java - working source code example
Sound (audio file) player in java - working source code example
import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
Java Sound Capture from Microphone working code
Sound Capture / Record from Microphone and Save : working java source code example
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.TargetDataLine;
/**
* Reads data from the input channel and writes to the output stream
*/
public class MicrophoneRecorder implements Runnable {
// record microphone && generate stream/byte array
private AudioInputStream audioInputStream;
Java Reflection - Getting name of color without comparision
In this tutorial I am describing how get value of field/ property defined in class dynamically using Java Reflection.
And i am using it to get name of color (java.awt.Color) using Reflection.
Instead of doing lengthy comparison (shown below), we can do this easily by using java reflection:
Getting name of color by Comparision
One solution to get name of color may be by comparison like this :
And i am using it to get name of color (java.awt.Color) using Reflection.
Instead of doing lengthy comparison (shown below), we can do this easily by using java reflection:
public static String getNameReflection(Color colorParam) {
try {
//first read all fields in array
Field[] field = Class.forName("java.awt.Color").getDeclaredFields();
for (Field f : field) {
String colorName = f.getName();
Class<?> t = f.getType();
// System.out.println(f.getType());
// check only for constants - "public static final Color"
if (t == java.awt.Color.class) {
Color defined = (Color) f.get(null);
if (defined.equals(colorParam)) {
System.out.println(colorName);
return colorName.toUpperCase();
}
}
}
} catch (Exception e) {
System.out.println("Error... " + e.toString());
}
return "NO_MATCH";
}
Getting name of color by Comparision
One solution to get name of color may be by comparison like this :
public static String getNameByComparision(Color color) {
if (color.equals(Color.RED)) {
return "RED";
}
if (color.equals(Color.BLACK)) {
return "BLACK";
}
// ..
return "NOT_DEFINED";
}
Java: Screen Capture using Robot and save
Robot : java.awt.Robot
is used to take control of the mouse and keyboard. It is used for test automation, self-running demos and screen capture at various state of execution of the program.Java Code for detecting screen size and capturing whole screen using Robot and saving :
Java Collision Detection and bounce - Complete example source code download
Complete example of simple collision detection and bounce between circle-circle and ball-rectangular wall.
Download Full source code : - Can be used in building simple games
Similar posts with little explanations :
java collision detection |
Similar posts with little explanations :
Java Collision Detection and bounce- two circles collision and response
Collision detection between two circles and their response - Java source code - working
public static void intersect(Ball a, Ball b) {
//ref http://gamedev.stackexchange.com/questions/20516/ball-collisions-sticking-together
double xDist, yDist;
xDist = a.x - b.x;
yDist = a.y - b.y;
double distSquared = xDist * xDist + yDist * yDist;
// Check the squared distances instead of the the distances, same
// result, but avoids a square root.
if (distSquared <= (a.radius + b.radius) * (a.radius + b.radius)) {
double speedXocity = b.speedX - a.speedX;
double speedYocity = b.speedY - a.speedY;
double dotProduct = xDist * speedXocity + yDist * speedYocity;
// Neat vector maths, used for checking if the objects moves towards
// one another.
if (dotProduct > 0) {
double collisionScale = dotProduct / distSquared;
double xCollision = xDist * collisionScale;
double yCollision = yDist * collisionScale;
// The Collision vector is the speed difference projected on the
// Dist vector,
// thus it is the component of the speed difference needed for
// the collision.
double combinedMass = a.getMass() + b.getMass();
double collisionWeightA = 2 * b.getMass() / combinedMass;
double collisionWeightB = 2 * a.getMass() / combinedMass;
a.speedX += (collisionWeightA * xCollision);
a.speedY += (collisionWeightA * yCollision);
b.speedX -= (collisionWeightB * xCollision);
b.speedY -= (collisionWeightB * yCollision);
}
}
}
Java Collision Detection and bounce - Circle and rectangle
Collision detection between circle(any object) and rectangular wall is simple.
For collision detection we simply compare the distances. And if collision between ball and wall is detected, we change the directions of their speeds for bouncing the ball.
Here is the code:
For collision detection we simply compare the distances. And if collision between ball and wall is detected, we change the directions of their speeds for bouncing the ball.
Here is the code:
Collision Detection of two circles - Simple Java Code
Java : Drawing of two circles, mouse motion event handler on one circle, and detect collision with other.
Determining whether or not two circles intersect or overlap or collide is done by comparing the distance between the two circles to the sum of radius of the two circles.
Full working code for collision detection only download here:
Steps
1)Find the distance between the centers of the two circles(a and b) using the distance formula
2)Then the distance is compared with the radii .
Collision detection and response - bounce examples
Determining whether or not two circles intersect or overlap or collide is done by comparing the distance between the two circles to the sum of radius of the two circles.
Full working code for collision detection only download here:
Steps
1)Find the distance between the centers of the two circles(a and b) using the distance formula
float dxSq = (a.x - b.x) * (a.x - b.x);
float dySq = (a.y - b.y) * (a.y - b.y);
int d = (int) Math.sqrt(dxSq + dySq);
2)Then the distance is compared with the radii .
int r1Pr2 = (int) (a.radius + b.radius);
if (d < r1Pr2) {
System.out.println("Collided");
} else if (d == r1Pr2) {
System.out.println("Just touching");
}
Collision detection and response - bounce examples
Tracking Path of Moving Object by Color Based Image Segmentation
Codes(using JavaCV) available here (two parts):
Thresholding operation and position detection in an image
Capturing the video frames from webcam
Demo Video 42 Secs.
Thresholding operation and position detection in an image
Capturing the video frames from webcam
Demo Video 42 Secs.
JavaCV - Color based thresholding in image using OpenCV
JavaCV - Red color based thresholding (RGB-A space) in image using OpenCV : Full working java source code
Note that the order of colors is BGR-A not RGB-A.
Read it more from http://stackoverflow.com/questions/367449/bgr-color-space
Note that the order of colors is BGR-A not RGB-A.
Read it more from http://stackoverflow.com/questions/367449/bgr-color-space
//static imports
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
//non-static imports
import com.googlecode.javacv.cpp.opencv_core.CvScalar;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
JavaCV capture-save-flip-show live camera
NOTE: Updated code with configuration and example is available here:
--
JavaCV: Capture/save/flip image and show live image on CanvasFrame from camera
JAVA CODE:
import static com.googlecode.javacv.cpp.opencv_core.cvFlip;
import static com.googlecode.javacv.cpp.opencv_highgui.cvSaveImage;
import com.googlecode.javacv.CanvasFrame;
import com.googlecode.javacv.FrameGrabber;
import com.googlecode.javacv.VideoInputFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
public class GrabberShow implements Runnable {
//final int INTERVAL=1000;///you may use interval
IplImage image;
CanvasFrame canvas = new CanvasFrame("Web Cam");
public GrabberShow() {
canvas.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
}
@Override
public void run() {
FrameGrabber grabber = new VideoInputFrameGrabber(0); // 1 for next camera
int i=0;
try {
grabber.start();
IplImage img;
while (true) {
img = grabber.grab();
if (img != null) {
cvFlip(img, img, 1);// l-r = 90_degrees_steps_anti_clockwise
cvSaveImage((i++)+"-aa.jpg", img);
// show image on window
canvas.showImage(img);
}
//Thread.sleep(INTERVAL);
}
} catch (Exception e) {
}
}
public static void main(String[] args) { GrabberShow gs = new GrabberShow(); Thread th = new Thread(gs); th.start(); } }
public static void main(String[] args) { GrabberShow gs = new GrabberShow(); Thread th = new Thread(gs); th.start(); } }
Java Code : Capture Image from webcam using JavaCV
Java Code for capturing image from webcam- uses JavaCV (java wrapper for OpenCV) library
Working CODE:
import com.googlecode.javacv.OpenCVFrameGrabber;
Working CODE:
import com.googlecode.javacv.OpenCVFrameGrabber;
import com.googlecode.javacv.cpp.opencv_core.IplImage;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
public class CaptureImage {
private static void captureFrame() {
// 0-default camera, 1 - next...so on
final OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0);
try {
grabber.start();
IplImage img = grabber.grab();
if (img != null) {
cvSaveImage("capture.jpg", img);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
captureFrame();
}
}
JavaCV- Image load, smooth and save
Static Imports:
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
Image Smoothing:
public static void smoothSave(String filename) throws Exception {
IplImage image = cvLoadImage(filename);
System.out.println(image.nSize());
if (image != null) {
cvSmooth(image, image, CV_BLUR, 3);
cvSaveImage("smoothed_" + filename, image);
cvReleaseImage(image);
}
}
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;
Image Smoothing:
public static void smoothSave(String filename) throws Exception {
IplImage image = cvLoadImage(filename);
System.out.println(image.nSize());
if (image != null) {
cvSmooth(image, image, CV_BLUR, 3);
cvSaveImage("smoothed_" + filename, image);
cvReleaseImage(image);
}
}
HTML/XML Tag Parsing using Regex in Java
This time, I am going to show how to parse the html tags like :
xx <tag a ="b" c= 'd' e=f> yy </tag> zz
xx <tag a ="b" c= 'd' e=f> yy </tag> zz
(Did you noticed the single,double and no-quote attribute
values and spaces ? It is important to consider all these variations.)
Android Reverse Engineering - decompile .apk-.dex-.jar-.java
By reverse engineering of android app (.apk file) we can get following :
Java- extract / unzip a zip file - working code example
How to Extract / unzip a zip file in Java - complete source code example .
import java.io.*;
import java.util.zip.*;
public class UnzipTest {
public static void unzipFile(File f) throws ZipException, IOException {
ZipInputStream zin = new ZipInputStream(new FileInputStream(f));
System.out.println(f.getAbsoluteFile());
String workingDir = f.getPath() + File.separator + "unziped";
byte buffer[] = new byte[4096];
int bytesRead;
Subscribe to:
Posts
(
Atom
)