Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Генератор звука нужной частоты - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Как перекинуть акк(уч.запись майкрософт) с андройд на комп вин10 http://www.cyberforum.ru/android-dev/thread1803834.html
ребят у меня такой вопрос играю в игру марш престолов(уч.запись майкрософт) на андройде, хочу перенести свой акк на комп вин10, как это сделать подскажите пожалуйста Добавлено через 29 минут...
Программирование Android Акселерометр и ускорение земного притяжения Видно у меня совсем плохо с физикой , но я совершенно не понимаю документацию по SENSOR EVENT of Accelerometer. Дело в том, что моя программа стирает изображение , когда пользователь встряхивает... http://www.cyberforum.ru/android-dev/thread1803794.html
Программирование Android SeekBar и Arduino
Здравствуйте! Помогите реализовать:при нажатии кнопки происходит передача значений ползунков ардуине ,значения те которые выставлены в seekBar.
Выдать напряжение с телефона Программирование Android
Есть смартфон на андроид и шнур к нему... Можно ли через приложение, подавать кратковременно напряжение на шнур. Мол как сигнал... Шнур можно обрезать или подключить разъем usb к нему, а далее от...
Программирование Android Конструктор форм http://www.cyberforum.ru/android-dev/thread1803508.html
Всем доброго времени суток. Очень давно не касался программирования вообще, тут решил поковыряться... Хочу побаловаться для андройд... Подскажите пожалуйста, есть ли такая IDE, где днищу будет...
Программирование Android Приложение не запускается на Android 5.1 и выше Сделал приложение в Android Studio на API 21. Начал тестить на устройстве. На версии Android 5.0 всё работает отлично, а на версиях Android 5.1 и выше приложение закрывается сразу после запуска. Как... подробнее

Показать сообщение отдельно
gvsp
13 / 2 / 0
Регистрация: 10.11.2015
Сообщений: 71
01.10.2016, 10:07  [ТС]
В итоге без заиканий короткие звуки удалось получить только с записью в файл wav и выводом их через Soundpool.
От щелчков избавился добавив атаку и релиз.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
    int sampleRate = 44100; // стандартная частота дискретизации для wav файла
    int Attack = 200;  // Атака. Сглаживание переднего фронта
    int Release = 500;  // Релиз. Сглаживание заднего фронта
    durationDot = 60 // длительность звука в мс
// вычисляем переменные
        int countDot = (int)( sampleRate * 2.0 * (durationDot / 1000.0)) &~1;
        int totalDataLen = countDot + 36;
        long byteRate = 16 * sampleRate / 8;
        FileDot = new byte[44 + countDot];
// генерируем заголовок wav файла
        FileDot[0] = 'R'; // 'RIFF'
        FileDot[1] = 'I';
        FileDot[2] = 'F';
        FileDot[3] = 'F';
        FileDot[4] = (byte) (totalDataLen & 0xff); // totalDataLen  размер файла
        FileDot[5] = (byte) ((totalDataLen >> 8) & 0xff);
        FileDot[6] = (byte) ((totalDataLen >> 16) & 0xff);
        FileDot[7] = (byte) ((totalDataLen >> 24) & 0xff);
        FileDot[8] = 'W';
        FileDot[9] = 'A';
        FileDot[10] = 'V';
        FileDot[11] = 'E';
        FileDot[12] = 'f'; // 'fmt' - chunk
        FileDot[13] = 'm';
        FileDot[14] = 't';
        FileDot[15] = ' ';
        FileDot[16] = 16; // 16 для формата PCM
        FileDot[17] = 0;
        FileDot[18] = 0;
        FileDot[19] = 0;
        FileDot[20] = 1; //Для PCM = 1
        FileDot[21] = 0;
        FileDot[22] = 1; // Количество каналов. Моно = 1
        FileDot[23] = 0;
        FileDot[24] = (byte) (sampleRate & 0xff); // longSampleRate частота дискретизаии (44100)
        FileDot[26] = (byte) ((sampleRate >> 16) & 0xff);FileDot[25] = (byte) ((sampleRate >> 8) & 0xff);
        FileDot[27] = (byte) ((sampleRate >> 24) & 0xff);
        FileDot[28] = (byte) (byteRate & 0xff); // byteRate битрейт
        FileDot[29] = (byte) ((byteRate >> 8) & 0xff);
        FileDot[30] = (byte) ((byteRate >> 16) & 0xff);
        FileDot[31] = (byte) ((byteRate >> 24) & 0xff);
        FileDot[32] = (byte) (1 * 16 / 8); // block align
        FileDot[33] = 0;
        FileDot[34] = 16; // бит в сэмпле (16)
        FileDot[35] = 0;
        FileDot[36] = 'd';
        FileDot[37] = 'a';
        FileDot[38] = 't';
        FileDot[39] = 'a';
        FileDot[40] = (byte) (countDot & 0xff);
        FileDot[41] = (byte) ((countDot >> 8) & 0xff);
        FileDot[42] = (byte) ((countDot >> 16) & 0xff);
        FileDot[43] = (byte) ((countDot >> 24) & 0xff);
// генерируем тело wav файла
      //  начало с плавным возрастанием амплитуды
        for(int i = 0; i < countDot; i += 2){
            if (i < Attack) { // Атака плавное возрастание звука
                short sample = (short) ((Math.sin(Math.PI * i / (sampleRate / Frequence)) * 0x7FFF)  *  i / Attack);
                FileDot[44+i] = (byte) (sample & 0xff);
                FileDot[44+i+1] = (byte) ((sample >> 8) & 0xff);
            }
           //  конец с плавным затуханием амплитуды
            else if (i > (countDot-Release)) { // Релиз затухание звука
                short sample = (short) ((Math.sin(Math.PI * i /
                        (sampleRate / Frequence)) * 0x7FFF) * (countDot-i)/ Release);
                FileDot[44+i] = (byte) (sample & 0xff);
                FileDot[44+i+1] = (byte) ((sample >> 8) & 0xff);
            }
           // середина синусоиды без изменений
            else { 
                short sample = (short)(Math.sin(Math.PI * i /
                        (sampleRate / Frequence)) * 0x7FFF);
                FileDot[44+i] = (byte) (sample & 0xff);
                FileDot[44+i+1] = (byte) ((sample >> 8) & 0xff);
            }
        }
 
        // записываем в файл
        String FileDotName = "Dot.wav"; // имя файла
        FileOutputStream fos = null;
        try {
            fos = openFileOutput(FileDotName, Context.MODE_PRIVATE);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        try {
            fos.write(FileDot);
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            fos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru