tuttelikz

Untitled

Sep 25th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.94 KB | None | 0 0
  1. package com.example.iptea.audio22;
  2.  
  3. import android.media.AudioFormat;
  4. import android.media.AudioManager;
  5. import android.media.AudioTrack;
  6. import android.os.CountDownTimer;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.os.Bundle;
  9. import android.view.MotionEvent;
  10. import android.view.View;
  11. import android.widget.Button;
  12. import android.widget.SeekBar;
  13. import android.widget.TextView;
  14.  
  15. import org.w3c.dom.Text;
  16. import android.view.View;
  17. public class MainActivity extends AppCompatActivity {
  18.  
  19. Thread t; //audio processing thread
  20. int sr = 44100; //sampling rate
  21. boolean isRunning = true; //audio on off
  22.  
  23. SeekBar fSlider;
  24. double sliderval;
  25. private static TextView text_view;
  26.  
  27. Button buttonClicked;
  28. Button stop;
  29. public int counter = 0;
  30. @Override
  31.  
  32.  
  33. protected void onCreate(Bundle savedInstanceState) {
  34. super.onCreate(savedInstanceState);
  35. setContentView(R.layout.activity_main);
  36. //seebBar();
  37.  
  38. Button b = (Button)findViewById(R.id.button);
  39.  
  40. b.setOnTouchListener(new View.OnTouchListener() {
  41. @Override
  42. public boolean onTouch(View v, MotionEvent event) {
  43.  
  44. switch (event.getAction()) {
  45. case MotionEvent.ACTION_DOWN:
  46. isRunning = true;
  47. new CountDownTimer(10000,100) {
  48. public void onTick(long millisUntilFinished) {
  49. counter++;
  50. //String.valueOf(counter)
  51. double incrementPitch;
  52. fSlider = (SeekBar) findViewById(R.id.frequency);
  53. text_view = (TextView)findViewById(R.id.textView2);
  54. //text_view.setText("Progress: " + fSlider.getProgress() + " / " + fSlider.getMax());
  55. //text_view.setText("Progress: " + counter + " / " + fSlider.getMax());
  56. text_view.setText(String.valueOf(counter));
  57. double fr2 = 440.f;
  58. double max_freq;
  59. int progress_value;
  60.  
  61. //incrementPitch = fSlider.setProgress(fSlider.getProgress() + 20);
  62. sliderval = fSlider.getProgress() / fSlider.getMax(); //pick slider value
  63. fr2 = 440 + 440*sliderval;
  64. max_freq = 440 + 440;
  65. //text_view.setText("Progress: " + fr2 + " / " + max_freq); //fSlider.getMax()
  66.  
  67.  
  68. t = new Thread() {
  69. public void run() {
  70. // set process priority
  71. //setPriority(Thread.MAX_PRIORITY); //instantiate thread object with max priority
  72. // set the buffer size
  73. int buffsize = AudioTrack.getMinBufferSize(sr, //setting the buffer size for output audio
  74. AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
  75. // create an audiotrack object
  76. AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, //instantiate audioTrack object
  77. sr, AudioFormat.CHANNEL_OUT_MONO,
  78. AudioFormat.ENCODING_PCM_16BIT, buffsize,
  79. AudioTrack.MODE_STREAM);
  80.  
  81. short samples[] = new short[buffsize]; //audio synthesis
  82. int amp = 10000;
  83. double twopi = 8.*Math.atan(1.);
  84. double fr = 440.f;
  85. double ph = 0.0;
  86.  
  87. // start audio
  88. audioTrack.play(); //audio running
  89.  
  90. // synthesis loop
  91. while(isRunning){ //synthesis loop
  92.  
  93. sliderval = fSlider.getProgress() / fSlider.getMax();
  94. fr = 440 + 440*sliderval;
  95.  
  96. for(int i=0; i < buffsize; i++){
  97. samples[i] = (short) (amp*Math.sin(ph));
  98. ph += twopi*fr/sr;
  99. }
  100. audioTrack.write(samples, 0, buffsize);
  101. }
  102. audioTrack.stop();
  103. audioTrack.release();
  104. }
  105. };
  106.  
  107. t.start();
  108.  
  109.  
  110.  
  111.  
  112. }
  113.  
  114. public void onFinish() {
  115.  
  116. }
  117. }.start();
  118.  
  119. return true;
  120.  
  121. case MotionEvent.ACTION_UP:
  122. isRunning = false;
  123. return true;
  124. }
  125.  
  126.  
  127. return false;
  128. /* if(event.getAction() == MotionEvent.ACTION_DOWN) {
  129.  
  130. }
  131.  
  132.  
  133. else if (event.getAction() == MotionEvent.ACTION_UP) {
  134. isRunning = false;
  135. }*/
  136.  
  137.  
  138.  
  139. }
  140. });
  141.  
  142. }
  143.  
  144.  
  145.  
  146.  
  147. /* public void buttonStartClick(View v) {
  148. //Button button = (Button) v;
  149. //final int progress_value;
  150.  
  151.  
  152.  
  153.  
  154. }*/
  155.  
  156. public void buttonStopClick(View v) {
  157.  
  158. }
  159.  
  160. public void onDestroy(){
  161. super.onDestroy();
  162. isRunning = false;
  163. try {
  164. t.join();
  165. } catch (InterruptedException e) {
  166. e.printStackTrace();
  167. }
  168. t = null;
  169. }
  170.  
  171. /*public void seebBar() {
  172. final int progress_value;
  173.  
  174. fSlider = (SeekBar) findViewById(R.id.frequency);
  175. text_view = (TextView)findViewById(R.id.textView2);
  176. text_view.setText("Progress: " + fSlider.getProgress() + " / " + fSlider.getMax());
  177.  
  178. SeekBar.OnSeekBarChangeListener listener = new SeekBar.OnSeekBarChangeListener() {
  179. double fr2 = 440.f;
  180. double max_freq;
  181. int progress_value;
  182. public void onStopTrackingTouch(SeekBar seekBar) { }
  183. public void onStartTrackingTouch(SeekBar seekBar) { }
  184. public void onProgressChanged(SeekBar seekBar,
  185. int progress,
  186. boolean fromUser) {
  187.  
  188. if(fromUser) sliderval = progress / (double)seekBar.getMax(); //pick slider value
  189. fr2 = 440 + 440*sliderval;
  190. max_freq = 440 + 440;
  191. text_view.setText("Progress: " + fr2 + " / " + max_freq); //fSlider.getMax()
  192.  
  193. }
  194. };
  195.  
  196. fSlider.setOnSeekBarChangeListener(listener);
  197.  
  198.  
  199. t = new Thread() {
  200. public void run() {
  201. // set process priority
  202. //setPriority(Thread.MAX_PRIORITY); //instantiate thread object with max priority
  203. // set the buffer size
  204. int buffsize = AudioTrack.getMinBufferSize(sr, //setting the buffer size for output audio
  205. AudioFormat.CHANNEL_OUT_MONO, AudioFormat.ENCODING_PCM_16BIT);
  206. // create an audiotrack object
  207. AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, //instantiate audioTrack object
  208. sr, AudioFormat.CHANNEL_OUT_MONO,
  209. AudioFormat.ENCODING_PCM_16BIT, buffsize,
  210. AudioTrack.MODE_STREAM);
  211.  
  212. short samples[] = new short[buffsize]; //audio synthesis
  213. int amp = 10000;
  214. double twopi = 8.*Math.atan(1.);
  215. double fr = 440.f;
  216. double ph = 0.0;
  217.  
  218. // start audio
  219. audioTrack.play(); //audio running
  220.  
  221. // synthesis loop
  222. while(isRunning){ //synthesis loop
  223.  
  224. fr = 440 + 440*sliderval;
  225.  
  226. for(int i=0; i < buffsize; i++){
  227. samples[i] = (short) (amp*Math.sin(ph));
  228. ph += twopi*fr/sr;
  229. }
  230. audioTrack.write(samples, 0, buffsize);
  231. }
  232. audioTrack.stop();
  233. audioTrack.release();
  234. }
  235. };
  236.  
  237. t.start();
  238. }*/
  239.  
  240.  
  241. }
Advertisement
Add Comment
Please, Sign In to add comment