音乐编辑 java_求助 关于java编辑音乐

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

diffsum += diff;

}

else {

diffsum -= diff;

}

}

if (diffsum < amin) {

amin = diffsum;

pitch =d;

}

amd[d-pmin]= diffsum;

}

return pitch;

}

/**

* Waveファイルを読み込んで 何らかの信号処理をした上で、Waveファイルとして书き出す

* 现时点ではモノラルを想定

*/

public static void main(String[] args) throws IOException {

try {

/*

* .wavファイル名を引数として 読み込んでbyte配列 data[]に読み込む

*/

// オーディオファイルを开き入力ストリームに関系づける

String fname="1.1.wav";

AudioInputStream ais =

AudioSystem.getAudioInputStream(new File(fname));

// オーディオ入力ストリームからデータ読む

byte [] data = new byte [ais.available()];

ais.read(data);

ais.close();

// ファイルのフォーマットを调べる

AudioFormat af = ais.getFormat();

System.out.println("#channels: " + af.getChannels());

System.out.println("#isBigEndian: " + af.isBigEndian());

System.out.println("#FrameSize: " + af.getFrameSize());

System.out.println("#SampleSizeInBits: " + af.getSampleSizeInBits());

System.out.println("#SampleRate: " + af.getSampleRate());

if (af.getEncoding() == AudioFormat.Encoding.PCM_SIGNED) {

System.out.println("符号付きPCM");

}

else if (af.getEncoding() == AudioFormat.Encoding.PCM_UNSIGNED) {

System.out.println("符号なしPCM");

}

System.out.println("サイズ: " + data.length + "バイト: "

+ data.length / af.getSampleRate() / af.getFrameSize() + "秒");

short wavdata[] = new short[data.length/2+1];// 波形データ16ビット符号付き

/*

* byte配列から short配列に入れ直す

* byte配列は 下位8ビット→上位8ビットの顺にならんでいる

*/

// ステレオ16ビット符号付きPCM リトルエンディアンのみ

int Nsamples=0;

if (af.getChannels() <= 2 &&

af.getSampleSizeInBits() == 16 &&

af.getEncoding() == AudioFormat.Encoding.PCM_SIGNED &&

(!af.isBigEndian())) {

// 2Byte short に変换; Byteデータは 下位8ビット->上位8ビットの顺で并んでいる

int iw=0;

for (int i = 0; i < data.length-3; i += 4) {

wavdata[iw++] = (short)(data[i] & 0xff | (data[i+1] << 8));

if (af.getChannels() == 1) {

wavdata[iw++] = (short)(data[i+2] & 0xff | (data[i+3] << 8));

}

//if ((i%1000)==0 && wavdata[iw-2]>0)

//System.out.println(iw+" " + wavdata[iw-2] );

}

Nsamples= iw;

}

else {

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值