Страница 26 из 36

Re: Ардуино - запись звука

Добавлено: Сб ноя 12, 2022 15:23:36
olegue
Изображение

а что за ошибка, что не так происхходит.
первый раз кое как запустил, а сегодня вот это, хотя кресты были и в начале тоже.

Код: Выделить всё

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
	The type javax.swing.JComponent cannot be resolved. It is indirectly referenced from required .class files
	The method setBackground(Color) is undefined for the type JTextArea
	The method setForeground(Color) is undefined for the type JTextArea
	The constructor JScrollPane(JTextArea) is undefined
	The method setBounds(int, int, int, int) is undefined for the type JScrollPane
	The method add(Component) in the type Container is not applicable for the arguments (JScrollPane)
Изображение

Добавлено after 4 minutes:
заходил я в building path, но так и не разорбрался че там надо.

Re: Ардуино - запись звука

Добавлено: Сб ноя 12, 2022 15:42:12
roman.com
пишет что проблемы с окном... javax.swing - это окно.
показывай кресты...
а вообще первым делом закомментируй кресты... на которые он ругается))
если и дальше ругается... тогда закомментируй всё окно )) будет работать без окна... потом нарисуем... делов то))
программа блочная... можно включить/отключить любой блок))
у тебя Java 1.8... у меня Java 1.7... хотя должно быть без разницы))

Re: Ардуино - запись звука

Добавлено: Сб ноя 12, 2022 20:50:11
olegue
Ничерта не выходит. В интернете до фига issue по этому поводу,но четкого рецепта нету как ээто заставить работаь , думаю может новый эклипс скачать.

Добавлено after 1 hour 7 minutes 18 seconds:
Изображение

Поставил абсолютно новый Эклипс с офсайта, но поначала все равно что бы шло все не так. Потом почитал issue На stackoverflow и в итого все заработало.

Добавлено after 3 minutes 46 seconds:
пришли чистые данные в Хексе

Я посылал строку "Hello from Android" - 18 байт

Так и пришло 18 байт

Добавлено after 1 minute 27 seconds:
Все понятно, фигова что в яве я ни бум-бум , еще один Иде на мою слабую голову.

Добавлено after 17 minutes 23 seconds:
вот этого не хватало что бы все заработало

Изображение
взято отсюда:

https://stackoverflow.com/questions/571 ... d-how-do-i

Добавлено after 3 minutes 54 seconds:
Теперь эти байты можно сложить в буфер секунды на 2 и заряжать в плейер какой-то самописный?

Re: Ардуино - запись звука

Добавлено: Сб ноя 12, 2022 21:01:59
roman.com
olegue писал(а):вот этого не хватало что бы все заработало
первый раз такое слышу...))
я давал ссылки на свой Java
https://disk.yandex.ru/d/gT4Vn7Y_Xo5e4w
и Эклипс
https://disk.yandex.ru/d/sI0Aa-SjNqjRzA
всё рабочее.
а ты полез по сайтам... в поисках приключений))
olegue писал(а):Я посылал строку "Hello from Android" - 18 байт
ну добавь тогда ещё и ASCII ))
Win-1251-cvavr-java.png
(41.04 КБ) 49 скачиваний
будет переводить автоматом))
Udp.txt
(11.27 КБ) 50 скачиваний
а компилирует нормально ?
[uquote="olegue",url="/forum/viewtopic.php?p=4319058#p4319058"]Теперь эти байты можно сложить в буфер секунды на 2 и заряжать в плейер какой-то самописный?[/uquote]
можно

Re: Ардуино - запись звука

Добавлено: Вс ноя 13, 2022 00:08:25
olegue
roman.com писал(а):а компилирует нормально ?

да, вообще без вопросов

Re: Ардуино - запись звука

Добавлено: Вс ноя 13, 2022 10:54:58
olegue
ок, теперь можно подумать как отправить данные с ардуино через sim800. Думаю использовать тот же скеч что здесь делали, только вот уже sdfat, eeprom, rtc1307 - все эти библиотеки можно отключить и освободить место. А значит буфер можно будет увеличить и минимум будет 2 по 512 или даже больше. Попробую испльзовать ту же схему что и при сбросе данных на sd карту. Только по данным из буфера буду формировать пакеты и отправлять в сеть. Тут бы мне пригодился модуль Ethernet для отладки, надо заказать на всякий случай.

Re: Ардуино - запись звука

Добавлено: Вс ноя 13, 2022 23:24:23
roman.com
в java есть плеер_wav...
сам плеер_wav особенностей не имеет)) принцип простой
1. пакеты прилетают в буфер socket // UDP: MIN=18; MAX=1472.
2. после фильтрации пакеты попадают в буфер плеер_wav
3. всё что попадает в буфер плеер_wav мы слышим в динамике))
Udp.txt
(14.41 КБ) 83 скачивания
основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.
для синхронизации потока в заводском и самодельном скайпе используется заголовок.
вначале каждого пакета добавляется заголовок... типа... частота битрейт... частота семплирование... скорость воспроизведения... и т.д.
плеер_wav должен читать заголовок и подстраиваться под передатчик...
тогда всё работает чётко))
всё это реализовано в самодельном скайпе))
:tea:

Добавлено after 17 minutes 13 seconds:
[uquote="olegue",url="/forum/viewtopic.php?p=4319390#p4319390"]Ethernet для отладки, надо заказать на всякий случай.[/uquote]
надо
потому что самодельный Ethernet всё ещё находится в разработке))
схема.jpg
(95.43 КБ) 53 скачивания
Добавлено after 1 hour 22 minutes 31 second:
звук так же можно записать на комп... например в файл "D:/Java.txt"
и прослушать позже))
Udp.txt
(17.4 КБ) 73 скачивания
а можно записать на комп... например в файл "D:/Java.wav"...
и добавить wav заголовок...
тогда можно слушать на компе в любом проигрывателе))
и т.д. и т.п.
:tea:

Re: Ардуино - запись звука

Добавлено: Пн ноя 14, 2022 01:31:00
olegue
Скидывал буфер на сериал 115200 , вот такая шляпа получилась . Там файлик приложил. Это сырец из программы CoolTerm. Я его распознал с помощью Sound Forge и сохранил. Сэмплрейт -8000кгц. Но прослушитьвать пришлось на 10000кгц. Почему так я не знаю.

Код: Выделить всё

 
 if (recByteCount % 256 == 128 ) //&& recPressed == 1) 
  {
    //rec.write(buf00, 128);  // save buf01 to card
  
    Serial.write(buf00, 128);  
  
    recByteSaved += 128;
  }


 if (recByteCount % 256 == 0)// && recPressed == 1) 
  {
    //rec.write(buf01, 128);  // save buf02 to card

    Serial.write(buf01, 128);
  
    recByteSaved += 128;
  }


//    }

Re: Ардуино - запись звука

Добавлено: Пн ноя 14, 2022 16:13:16
olegue
Итак, Роман, установил яву, которыую выложили и эклипс. Все завелось с 1 раз. поставил последний код, где запись в файл возможно.
Запустил sim800 в прозрачном режиме и настроил на прием в Яве. Отправляю по одному байту. Код прерывания таймера ниже привел. Таймер -8кгц

настойка таймера и АдС

Код: Выделить всё

void Setup_timer2() {
  TCCR2B = _BV(CS21);  // Timer2 Clock Prescaler to : 8
  TCCR2A = _BV(WGM21); // Interupt frequency  = 16MHz / (8 x 125 + 1) = 16000Hz
  //OCR2A = 125; // Compare Match register set to 125 (было 90) Перешл на 16кгц
  OCR2A = 250; // Compare Match register set to 250 (было 90) Перешл на 8кгц
}
void Setup_ADC() {
  ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
  cbi(ADCSRA, ADPS2); // set prescaler to 8 / ADC clock = 2MHz
  sbi(ADCSRA, ADPS1);
  sbi(ADCSRA, ADPS0);
}
Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать. Если бы в программе на яве где то был буфер секунда 5, тогда наверно вы бы было хорошо

Код: Выделить всё

ISR(TIMER2_COMPA_vect) { 
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
  sbi(ADCSRA, ADSC); // start ADC sample
  while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready

myGsm.write(ADCH); 
 
}

пробовал отправялть сразу буфером, менял размеры буфера 128,256, 512 - существенно улучшений нет

myGsm.write(buf00, 512);

Добавлено after 8 minutes 45 seconds:
вот прикладываю сырой файл 8кгц, 8бит беззнаковый. В самой начале все хорошо видно.

Re: Ардуино - запись звука

Добавлено: Пн ноя 14, 2022 18:20:54
roman.com
olegue писал(а):Отправляю по одному байту.
:roll:
Отправляю по одному байту...
1.jpg
(55.75 КБ) 52 скачивания
нифига не разобрать )) плеер в ява не успевает обрабатывать по одному байту...

а по два ?
2.jpg
(55.45 КБ) 51 скачивание
нифига не разобрать ))

а по 10 ?
10.jpg
(67.4 КБ) 54 скачивания
несколько секунд играет нормально)) потом бульканье...

а по 100 ?
100.jpg
(123.6 КБ) 51 скачивание
по 100 уже нормально.

вывод: надо отправлять не меньше 100 байт в одном пакете...
:tea:

Добавлено after 3 minutes 8 seconds:
а по 512 ?
512.jpg
(159.22 КБ) 47 скачиваний
совсем хорошо))

а по 1472 ? максимальный размер пакета...
1472_MAX.jpg
(167.86 КБ) 51 скачивание
совсем замечательно))

вывод: надо отправлять нормальные пакеты... не меньше 100 байт в одном пакете...

в заводском скайпе 100...200 байт в одном пакете...

а вообще... чем больше тем лучше))
:tea:

Добавлено after 33 minutes 43 seconds:
olegue писал(а):Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать.
далее... самое главное))
roman.com писал(а):основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.
ключевое слово - поток)) нужен непрерывный поток.

вот моя запись... видно непрерывный поток....
фон с микрофона 50 герц... но в данном случае это не важно... главное что на записи видим непрерывный поток.
мой_1.jpg
(233.59 КБ) 47 скачиваний
и далее...
мой_2.jpg
(235.85 КБ) 57 скачиваний
и далее...
мой_3.jpg
(224.5 КБ) 43 скачивания
и далее...

а у тебя что ?
olegue писал(а):вот прикладываю сырой файл 8кгц, 8бит беззнаковый.
вот твоя запись... видно что поток прерывается....
твой_1.jpg
(181.87 КБ) 55 скачиваний
и далее...
твой_2.jpg
(185.73 КБ) 51 скачивание
и далее...
твой_3.jpg
(185.34 КБ) 48 скачиваний
и далее...

такое ощущение... что в момент отправки данных...
myGsm.write(ADCH);

таймер не работает)) и ничего не цифрует))
ISR(TIMER2_COMPA_vect) {
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
}

в итоге: получаем рваный поток ))
разорванный в клочья))
:)))

ты все данные получаешь ? ощущения что не все... ))
:tea:

Re: Ардуино - запись звука

Добавлено: Пн ноя 14, 2022 18:36:53
olegue
дело в том что когда Sim800 работает в прозрачном режиме, т.е в режиме без подтверждение отправки, то байты отправляются как бы в буфер и на приемной стороне они выглядят в виде пакетов по 1024 байт
TX_IP X.XXX.XXX.82 | len 1024 | port 9666 |
7A 7A 7A 7A 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7B 7B 79 79 7A 7A 79 79 7A 7B 7A 79 79 7A 7A 79 79 7A 7A 79 7A 7A 7A 79 7A 7A 7B 79 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7A 79 7B 7B 7A 79 79 7A 7B 79 79 79 7A 7A 79 7A 7A 7B 7A 79 7B 79 79 79 7A 7B 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 79 79 7B 7B 79 79 79 7B 7A 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 79 7A 7B 7B 79 79 7B 7B 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7A 7B 7A 7A 7A 7B 7B 79 79 7B 7B 79 79 7A 7B 79 79 7A 7A 7A 79 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7B 7A 79 7B 79 79 79 79 79 79 79 7A 7A 79 79 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 79 7B 7B 79 7B 7B 79 79 7A 7A 7A 7A 7B 7A 7B 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 79 7B 7B 7B 79 7A 7A 7A 79 7A 7A 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7A 7A 79 7B 7B 79 79 7A 7B 7B 79 7A 7A 7A 79 7A 7A 7A 79 7A 7A 7A 7A 7A 7A 7A 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 79 7B 7B 79 7A 79 7A 7A 79 79 79 7A 7A 79 79 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 7A 79 7B 7B 79 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 7A 7A 7B 7B 79 7A 79 7B 79 79 7B 7B 79 79 7A 7A 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 79 7A 7B 7A 79 7B 7B 7A 79 7A 7B 7A 79 79 7A 7A 79 7A 7A 7A 79 7A 7A 7A 79 7A 7A 7B 7A 7A 7A 7B 79 7A 7B 7B 7A 7A 7A 7A 7A 79 7B 7B 79 7A 79 7B 79 7A 7A 7A 7A 7A 7A 7A 7A 7A 7A 7B 7A 79 7A 7B 7A 79 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7B 79 7B 79 79 7B 7B 79 79 7A 7A 7A 7A 7A 7B 7A 7A 7B 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 79 7B 79 79 79 7B 7A 79 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7A 7B 7B 7B 7A 7A 7B 7A 7A 7B 7B 79 7A 7B 7B 7A 7B 7A 7B 79 79 7A 7A 7A 79 7A 7B 7A 7A 7A 7A 7A 79 7A 7B 7A 7A 7A 7A 7A 7A 7A 7B 7A 7A 7A 7A 7B 79 7A 7B 7B 79 7A 7B 7B 79 79 79 7A 79 79 7A 7A 7A 79 7A 7B 79 79 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7B 7A 7B 79 79 79 7A 7B 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7B 7B 7B 79 7A 7B 7B 79 7B 7B 79 79 7A 7A 7B 7A 79 7A 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7B 7A 7A 7B 7B 7A 7B 7B 7B 79 79 7B 7B 79 79 79 7B 79 79 7A 7A 7A 79 7A 7A 7A 7A 7B 7A 7A 79 7A 7B 79 79 7A 7B 79 7A 7B 7B 7A 79 7A 7B 7B 79 7B 7B 7B 79 79 7B 79 7A 79 7A 7A 79 79 7A 7A 7A 7A 7A 7A 79 79 7A 7A 79 79 7A 7A 7A 7A 7A 7A 7A 79 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 79 7A 7B 7A 7A 7A 7B 7B 7A 7B 7A 7B 7A 7A 7B 7B 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 7B 7B 79 7A 7B 7B 79 79 7A 7B 79 7A 7A 79 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7A 7A 7A 7B 7B 7A 7B 7B 7B 7A 7B 7B 7A 7A 79 7B 79 7A 7A 79 7B 79 7A 7B 7B 7A 7A 7B 7B 7A 7A 7B 7B 7A 79 7A 7B 79 7A 7A 7B 7A 79 7A 7B 79 79 7A 7B 7A 79 7B 7B 7A 79 7A 7B 7A 79 7A 7A 7A 79 79 7A 7A 79 7A 7A 79 79 79 7A 7B 79 7A 7A 7B 7A 7A 7A 7A 7A 7A 7A 7A 7A 79 7A 7A 79 79

Re: Ардуино - запись звука

Добавлено: Пн ноя 14, 2022 19:49:40
roman.com
не важно в каком режиме работает Sim800...
важно что таймер цифрует со скоростью 8к и всё что нацифрует таймер должно быть доставлено в яву))

таймер выдаёт 8000 байт в секунду.
и все 8000 байт (не важно по частям или все сразу) должны быть доставлены яве.
и все байты (8000 байт в секунду) ява записывает в файл.

а у тебя такое впечатление что не все 8000 байт доставляются в яву...

твой таймер цифрует то 7998 байт в секунду... то 7999 байт в секунду... то 8000 байт в секунду...

иначе откуда в записанном файле пробелы ?
твой_4.jpg
(186.15 КБ) 53 скачивания
если бы таймер чётко цифровал 8000 байт в секунду... то на записи было бы видно один сплошной непрерывный поток байт !
а мы такого не видим...

для проверки непрерывности потока можешь пронумеровать все байты в своей ардуине... ))
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...
в такой же последовательности ты их увидишь в записи...
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...

если будут пропущенные байты в потоке...
0,1,2,3,6,7,8,9,0,1,2,3,4,5,7,8,9,0,2,3,4,5,6,0,1,2,3,4,5,6,7,8,9...
значит... выкинь свою ардуину)) или Sim800... ))

Добавлено after 1 hour 59 seconds:
для проверки звукозаписывающей аппаратуры обычно используют генераторы стандартных сигналов (ГСС).
ГСС.jpg
(49.5 КБ) 43 скачивания
но под рукой ГСС у меня нет...
:)))
поэтому сделаем по другому... вместо ГСС используем таймер ардуины...

вот я для проверки вместо звука передаю просто пронумерованные батый...
0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,8,9,0,1,2,3,4,5,6,7,8,9...
по 100 байт в пакете
проверка.jpg
(120.9 КБ) 45 скачиваний
чётко видно что каждый пакет заканчивается 9... а начинается 0...
ни одного пропущенного байта у меня нет))

в записи тоже самое...
запись.jpg
(122.1 КБ) 46 скачиваний
запись_2.jpg
(156.31 КБ) 47 скачиваний
у меня непрерывный поток 8000 байт в секунду.
:tea:
в наушниках я слышу непрерывный тон 1 кгц. (8000/10=1 кгц)
:music:
это значит что таймер ардуины (на ATmega328) работает с частотой ровно 8 кгц (частота прерывания таймера).
ISR(TIMER2_COMPA_vect) {
//ADMUX = 0x60; // set ADC to read pin A0, ADLAR to 1 (left adjust)
sbi(ADCSRA, ADSC); // start ADC sample
while (bit_is_set(ADCSRA, ADSC)); // wait until ADSC bit goes low = new sample ready
}
ардуина.jpg
(50.75 КБ) 45 скачиваний
:)
вот такие занимательные эксперименты можно проводить со звуком... ардуиной... и явой))
:)))

а может у тебя просто пакеты теряются ? проверял ?
:o
на такое наш плеер не рассчитан...

Re: Ардуино - запись звука

Добавлено: Вт ноя 15, 2022 13:58:25
roman.com
[uquote="olegue",url="/forum/viewtopic.php?p=4320170#p4320170"]Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать. Если бы в программе на яве где то был буфер секунда 5, тогда наверно вы бы было хорошо[/uquote]
ещё раз... разберём подробно))

пункт 1. - буфер.
в яве 2 буфера.

-первый буфер сокета.
DatagramSocket socket = new DatagramSocket(80);
по умолчанию размер буфера сокета 8 килобайт (или 8192 байт).
размер буфера сокета можно менять командой
//socket.setReceiveBufferSize(1); // размер буфера RX Ethernet
но мы этого пока делать не будем... оставим по умолчанию 8 килобайт (8192 байт).

-второй буфер плеера.
static byte[] din_byte_wavr = new byte[1472];
размер буфера плеера мы устанавливаем сами... какой захотим ))

Как это работает ?
1. все пакеты Ethernet прилетаю на комп и записываются в буфер сокета по умолчанию 8 килобайт (8192 байт).
2. плеер берёт пакеты из буфера сокета и переносит их в свой буфер.
RX_line.write(din_byte_wavr, 0, RX_len);//RX_len
при этом буфер плеера подстаивается под размер пакета Ethernet.

в итоге у нас в яве двойная буферизация)) что это даёт ?
а то что наш плеер в яве не чувствительный к задержкам (джиттер) передачи пакетов Ethernet.

вот анализатор пакетов заводского скайпа... обрати внимание что прилетело два пакета подряд... но благодаря двойной буферизации на работу скайпа это не влияет))
Skype_.jpg
(168.54 КБ) 53 скачивания
а вот анализатор пакетов самодельного скайпа... обрати внимание что прилетело два пакета подряд... но благодаря двойной буферизации на работу скайпа это не влияет))
Skype_ (1).jpg
(192.63 КБ) 56 скачиваний
благодаря двойной буферизации можно передавать пакеты по одному.
1024.........1024.........1024.........1024.........
а можно передавать пакеты по несколько штук за раз... пачками))
......1024.1024.1024.1024.........

на работу плеера это не влияет... потому что все пакеты сначала попадают в буфер сокета.
1024.1024.1024.1024.
а плеер забирает пакеты из буфера сокета и передаёт в свой буфер по одному пакету.
1024.........1024.........1024.........1024.........
в динамике мы слышим равномерный непрерывный поток)) никаких затыков нет !
:music:

добавление ещё одного буфера в программу на секунд 5... ничего не даст))
просто в динамике мы услышим звук с задержкой на 5 секунд.

Вывод:
в яве буфера и так хорошо работают. Их трогать не надо))
:tea:

пункт 2. - поток.
чтобы плеер играл без затыков надо чтоб ардуина цифровала и передавала ровно 8000 байт в секунду.
тогда передатчик (ардуина) и приёмник (ява) будут работать синхронно.
передатчик (ардуина) - цифрует и передавала ровно 8000 байт в секунду.
приёмник (ява) - принимает и играет ровно 8000 байт в секунду.
всё синхронизировано)) никаких затыков нет !
:music:

у тебя (судя по записям) теряются байты в пакетах... или теряются сами пакеты... до конца пока не ясно))
:dont_know:

как проверить не теряются ли байты в пакетах ?
точнее нас интересуют не теряется ли порядок байт в пакетах...
проверить очень просто - достаточно их пронумеровать))
мы передаём 1024 байт это 00-FF... 00-FF... 00-FF... 00-FF... (или 256 + 256 + 256 +256)
смотрим...
байты.jpg
(161.68 КБ) 41 скачивание
запись.jpg
(219.15 КБ) 44 скачивания
все байты пришли строго по порядку... 00-FF... 00-FF... 00-FF... 00-FF... (или 256 + 256 + 256 +256)
всё хорошо))
:tea:

ещё бывает что скайп зависает... особенно часто если скайп работает по радио... и при слабом сигнале...))
это теряются пакеты.
как проверить не теряются ли пакеты ?
проверить очень просто - достаточно их пронумеровать))
00-FF... (или 256)
смотрим...
счёт.jpg
(161.29 КБ) 52 скачивания
все пакеты пришли без потерь)) строго по порядку... 00-FF... (или 256)
всё хорошо))
:tea:
Udp.txt
(17.68 КБ) 64 скачивания
:tea:

к слову... пакеты Ethernet изначально уже пронумерованы))
в заголовке IP пакета есть поле "Идентификатор"
https://ru.wikipedia.org/wiki/IP#Версия_4_(IPv4)
идентификатор.jpg
(60.5 КБ) 51 скачивание
если откроем анализатор то увидим что комп уже изначально пронумеровал все Ethernet пакеты))
анализатор.jpg
(67.54 КБ) 49 скачиваний
:tea:

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 16:07:34
olegue

Код: Выделить всё

if ((micros()-timerHour)>125){  /// 8 КГЦ
myGsm.write(char(1));
myGsm.write(char(2));
myGsm.write(char(3));
myGsm.write(char(4));
myGsm.write(char(5));
myGsm.write(char(6));
myGsm.write(char(7));
myGsm.write(char(9));
myGsm.write(char(0));
    timerHour=micros();
    }

зарядил таймер на 8кгц и отправил нумерованный данные

результат файле

Добавлено after 3 minutes 19 seconds:
счас тока увидел пропустил "8" при отправке - это нужно учесть при просмотре

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 16:34:49
roman.com
1.jpg
(235.37 КБ) 49 скачиваний
хорошо))
радио модуль передаёт нормально.

теперь передаём звук...
у меня при передачи звука непрерывный поток...
мой_1.jpg
(233.59 КБ) 46 скачиваний
у тебя при передачи звука поток прерывается...
твой_2.jpg
(189.48 КБ) 52 скачивания
у тебя какие то проблемы в модуле оцифровки...
:dont_know:

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 16:41:01
olegue
второй файл поинтереснее, короче вывод такой что приходят байты в целом нормально

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 17:03:27
roman.com
olegue писал(а):приходят байты в целом нормально
"в целом нормально" тут неуместно))
мы делаем цифровую связь... а не пирожки лепим))

на второй записи видим потерю байт...
потеря_1_2_3_4.jpg
(223.89 КБ) 47 скачиваний
потеря_2_3_4_5_6.jpg
(237.6 КБ) 48 скачиваний
потеря_4.jpg
(223.81 КБ) 42 скачивания
из-за этого происходи прерывание потока...

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 17:17:32
olegue
пустил на вход сигнал 1000 гц. Записал поток. Вначале 1.5 секунды нормально. Потом пошли прерывы. Но в файле это не слышно если слушаь как сырой в SOUND FORGE

Добавлено after 4 minutes 22 seconds:
СПЕКТР JAVA.TXT

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 17:22:58
roman.com
1000 гц много... нифига не видно)) поменьше пускай... 50 гц...

и на спектре видно чётко наложение...

короче фигово у тебя передаётся звук)) с потерей байт...

а ещё и скорость скорее всего плавает... рассинхронизация.

всё надо настраивать последовательно. Начиная с проверки целостности байт))

к слову...
скайп (заводской и самодельный) проверяет контрольные суммы каждого пакета...
при потери байт... наш скайп выдаст ошибку.
такую фигню... он вообще воспроизводить не будет))
:tea:

Re: Ардуино - запись звука

Добавлено: Ср ноя 16, 2022 17:35:33
olegue
50 гц

Добавлено after 1 minute 51 second:
может просто не пролазит в в канал UART 115200+ GPRS?