Обсуждаем контроллеры компании Atmel.
Ответить

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

Сб ноя 12, 2022 15:23:36

Изображение

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

Код:
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

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

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

Сб ноя 12, 2022 20:50:11

Ничерта не выходит. В интернете до фига 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

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 KiB) Скачиваний: 33

будет переводить автоматом))
Udp.txt
(11.27 KiB) Скачиваний: 28

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

можно

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

Вс ноя 13, 2022 00:08:25

roman.com писал(а):а компилирует нормально ?



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

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

Вс ноя 13, 2022 10:54:58

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

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

Вс ноя 13, 2022 23:24:23

в java есть плеер_wav...
сам плеер_wav особенностей не имеет)) принцип простой
1. пакеты прилетают в буфер socket // UDP: MIN=18; MAX=1472.
2. после фильтрации пакеты попадают в буфер плеер_wav
3. всё что попадает в буфер плеер_wav мы слышим в динамике))
Udp.txt
(14.41 KiB) Скачиваний: 43

основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.
для синхронизации потока в заводском и самодельном скайпе используется заголовок.
вначале каждого пакета добавляется заголовок... типа... частота битрейт... частота семплирование... скорость воспроизведения... и т.д.
плеер_wav должен читать заголовок и подстраиваться под передатчик...
тогда всё работает чётко))
всё это реализовано в самодельном скайпе))
:tea:

Добавлено after 17 minutes 13 seconds:
Ethernet для отладки, надо заказать на всякий случай.

надо
потому что самодельный Ethernet всё ещё находится в разработке))
схема.jpg
(95.43 KiB) Скачиваний: 28


Добавлено after 1 hour 22 minutes 31 second:
звук так же можно записать на комп... например в файл "D:/Java.txt"
и прослушать позже))
Udp.txt
(17.4 KiB) Скачиваний: 42

а можно записать на комп... например в файл "D:/Java.wav"...
и добавить wav заголовок...
тогда можно слушать на компе в любом проигрывателе))
и т.д. и т.п.
:tea:

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

Пн ноя 14, 2022 01:31:00

Скидывал буфер на сериал 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;
  }


//    }
Вложения
CoolTerm Capture 2022-11-14 01-17-51.rar
(669.68 KiB) Скачиваний: 39

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

Пн ноя 14, 2022 16:13:16

Итак, Роман, установил яву, которыую выложили и эклипс. Все завелось с 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бит беззнаковый. В самой начале все хорошо видно.
Вложения
Java.txt
(135.47 KiB) Скачиваний: 47
Java.txt
это сырой файл 8кгц, 8бит , бесзнаковый
(135.47 KiB) Скачиваний: 27

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

Пн ноя 14, 2022 18:20:54

olegue писал(а):Отправляю по одному байту.

:roll:
Отправляю по одному байту...
1.jpg
(55.75 KiB) Скачиваний: 23

нифига не разобрать )) плеер в ява не успевает обрабатывать по одному байту...

а по два ?
2.jpg
(55.45 KiB) Скачиваний: 23

нифига не разобрать ))

а по 10 ?
10.jpg
(67.4 KiB) Скачиваний: 24

несколько секунд играет нормально)) потом бульканье...

а по 100 ?
100.jpg
(123.6 KiB) Скачиваний: 25

по 100 уже нормально.

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

Добавлено after 3 minutes 8 seconds:
а по 512 ?
512.jpg
(159.22 KiB) Скачиваний: 24

совсем хорошо))

а по 1472 ? максимальный размер пакета...
1472_MAX.jpg
(167.86 KiB) Скачиваний: 26

совсем замечательно))

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

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

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

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

далее... самое главное))
roman.com писал(а):основная сложность работы со звуком - это синхронизация приёмника и передатчика.
надо понимать что звук это не просто данные а поток.

ключевое слово - поток)) нужен непрерывный поток.

вот моя запись... видно непрерывный поток....
фон с микрофона 50 герц... но в данном случае это не важно... главное что на записи видим непрерывный поток.
мой_1.jpg
(233.59 KiB) Скачиваний: 27

и далее...
мой_2.jpg
(235.85 KiB) Скачиваний: 27

и далее...
мой_3.jpg
(224.5 KiB) Скачиваний: 23

и далее...

а у тебя что ?
olegue писал(а):вот прикладываю сырой файл 8кгц, 8бит беззнаковый.

вот твоя запись... видно что поток прерывается....
твой_1.jpg
(181.87 KiB) Скачиваний: 28

и далее...
твой_2.jpg
(185.73 KiB) Скачиваний: 25

и далее...
твой_3.jpg
(185.34 KiB) Скачиваний: 22

и далее...

такое ощущение... что в момент отправки данных...
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

дело в том что когда 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
Последний раз редактировалось olegue Пн ноя 14, 2022 19:15:06, всего редактировалось 1 раз.

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

Пн ноя 14, 2022 19:49:40

не важно в каком режиме работает Sim800...
важно что таймер цифрует со скоростью 8к и всё что нацифрует таймер должно быть доставлено в яву))

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

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

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

иначе откуда в записанном файле пробелы ?
твой_4.jpg
(186.15 KiB) Скачиваний: 28

если бы таймер чётко цифровал 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 KiB) Скачиваний: 22

но под рукой ГСС у меня нет...
:)))
поэтому сделаем по другому... вместо ГСС используем таймер ардуины...

вот я для проверки вместо звука передаю просто пронумерованные батый...
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 KiB) Скачиваний: 23

чётко видно что каждый пакет заканчивается 9... а начинается 0...
ни одного пропущенного байта у меня нет))

в записи тоже самое...
запись.jpg
(122.1 KiB) Скачиваний: 20

запись_2.jpg
(156.31 KiB) Скачиваний: 21

у меня непрерывный поток 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 KiB) Скачиваний: 22

:)
вот такие занимательные эксперименты можно проводить со звуком... ардуиной... и явой))
:)))

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

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

Вт ноя 15, 2022 13:58:25

Так вот когда только запускаешь программа, первые 1-1.5 сек вроде как хороший звук,а дальеш пошли затыки и ничего не разобрать. Если бы в программе на яве где то был буфер секунда 5, тогда наверно вы бы было хорошо

ещё раз... разберём подробно))

пункт 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 KiB) Скачиваний: 24

а вот анализатор пакетов самодельного скайпа... обрати внимание что прилетело два пакета подряд... но благодаря двойной буферизации на работу скайпа это не влияет))
Skype_ (1).jpg
(192.63 KiB) Скачиваний: 25

благодаря двойной буферизации можно передавать пакеты по одному.
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 KiB) Скачиваний: 22

запись.jpg
(219.15 KiB) Скачиваний: 20

все байты пришли строго по порядку... 00-FF... 00-FF... 00-FF... 00-FF... (или 256 + 256 + 256 +256)
всё хорошо))
:tea:

ещё бывает что скайп зависает... особенно часто если скайп работает по радио... и при слабом сигнале...))
это теряются пакеты.
как проверить не теряются ли пакеты ?
проверить очень просто - достаточно их пронумеровать))
00-FF... (или 256)
смотрим...
счёт.jpg
(161.29 KiB) Скачиваний: 25

все пакеты пришли без потерь)) строго по порядку... 00-FF... (или 256)
всё хорошо))
:tea:
Udp.txt
(17.68 KiB) Скачиваний: 33

:tea:

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

если откроем анализатор то увидим что комп уже изначально пронумеровал все Ethernet пакеты))
анализатор.jpg
(67.54 KiB) Скачиваний: 23

:tea:

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

Ср ноя 16, 2022 16:07:34

Код:
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" при отправке - это нужно учесть при просмотре
Вложения
ПАКЕТЫ И БАЙТЫ ПО ПОРЯДКУ.txt
(146.8 KiB) Скачиваний: 39

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

Ср ноя 16, 2022 16:34:49

1.jpg
(235.37 KiB) Скачиваний: 22

хорошо))
радио модуль передаёт нормально.

теперь передаём звук...
у меня при передачи звука непрерывный поток...
мой_1.jpg
(233.59 KiB) Скачиваний: 22

у тебя при передачи звука поток прерывается...
твой_2.jpg
(189.48 KiB) Скачиваний: 26

у тебя какие то проблемы в модуле оцифровки...
:dont_know:
Последний раз редактировалось roman.com Ср ноя 16, 2022 16:43:31, всего редактировалось 1 раз.

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

Ср ноя 16, 2022 16:41:01

второй файл поинтереснее, короче вывод такой что приходят байты в целом нормально
Вложения
ПАКЕТЫ И БАЙТЫ ПО ПОРЯДКУ2.txt
(189.56 KiB) Скачиваний: 42

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

Ср ноя 16, 2022 17:03:27

olegue писал(а):приходят байты в целом нормально

"в целом нормально" тут неуместно))
мы делаем цифровую связь... а не пирожки лепим))

на второй записи видим потерю байт...
потеря_1_2_3_4.jpg
(223.89 KiB) Скачиваний: 21

потеря_2_3_4_5_6.jpg
(237.6 KiB) Скачиваний: 20

потеря_4.jpg
(223.81 KiB) Скачиваний: 19

из-за этого происходи прерывание потока...

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

Ср ноя 16, 2022 17:17:32

пустил на вход сигнал 1000 гц. Записал поток. Вначале 1.5 секунды нормально. Потом пошли прерывы. Но в файле это не слышно если слушаь как сырой в SOUND FORGE

Добавлено after 4 minutes 22 seconds:
СПЕКТР JAVA.TXT
Вложения
Screenshot_1_SOUNDFORGE_1000ГЦ.png
(38.51 KiB) Скачиваний: 22
Java.txt
(85.94 KiB) Скачиваний: 40

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

Ср ноя 16, 2022 17:22:58

1000 гц много... нифига не видно)) поменьше пускай... 50 гц...

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

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

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

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

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

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

Ср ноя 16, 2022 17:35:33

50 гц

Добавлено after 1 minute 51 second:
может просто не пролазит в в канал UART 115200+ GPRS?
Вложения
Java.txt
(107 KiB) Скачиваний: 25
Screenshot_1_50 гц.png
(36.16 KiB) Скачиваний: 26
Ответить