Forums Logo

Здравствуйте Гость ( Вход | Регистрация )

 
Reply to this topicStart new topicStart Poll

Каскадный · [ Стандартный ] · Линейный

> Простой способ получить данные с микрофона

quasist
post Суббота, 12 апреля 2008, 11:38
Отправлено #1


Sing along at the Opera
Group Icon

Группа: Профи
Сообщений: 3 391
Регистрация: 06 янв. 2006
Пользователь №: 14 791





В palibe есть для этого готовая функция, но что если не нравится палиб...

Речи идёт об стандартной библиотеке libnds
Все примеры работы с микрофоном относятся к очень старым временам и их испытывать на своей дс у меня стилус не повернётся

Как написано в мануале только второй проц (arm7) имеет доступ к некоторым системам ДС, то есть ко звуку, точскрину и т.д.

Функции микрофона доступны только для arm7, поэтому шаблон проекта должен использовать "combined template" фаилы, то есть раздельно две программы для arm9 и arm7.

Открываем программу для arm7. Всё едро для второго проца уже написано до нас. Он получает данные для звукового воспроизведения, а шлёт обратно данные точскрина.

сперво-наперво следует включить микрофон
CODE

MIC_On();

У меня он стоит перед строчкой
CODE
initClockIRQ();

и всё работает

Всё! Микрофон включён. Осталось прочитать его данные и отослать к arm9.

Чтобы много чего нового неписать я придумал атцкий(!) способ - послать данные микрофона вместо данных точкснина. Вернее вместо силы нажатия по одной из осей.
Как часто вы используете в своих програмах силу нажания на точскрин?

Находим фрагмент кода
CODE

IPC->touchX   = x;
IPC->touchY   = y;
IPC->touchXpx  = xpx;
IPC->touchYpx  = ypx;
IPC->touchZ1  = z1;
IPC->touchZ2  = z2;
IPC->buttons  = but;


и исправляем на

CODE

IPC->touchX   = x;
IPC->touchY   = y;
IPC->touchXpx  = MIC_ReadData();
IPC->touchYpx  = ypx;
IPC->touchZ1  = z1;
IPC->touchZ2  = z2;
IPC->buttons  = but;


Если вы не меняли код шаблона для combined(из поставки libnds), то сразу можно будет увидеть результат. Так как в коде arm9 уже поставлен вывод координат приложения стилуса на экран и сила нажатия. На силу нажания по X и приходят данные микрофона (в шеснадцатеричной форме).

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

Так жалко, что мало хоумбрю использует микрофон. Надеюсь кому-либо этот простой способ пригодится smile.gif


--------------------
12 удачных сделок в барахолке gbx.ru
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kir
post Пятница, 18 апреля 2008, 15:00
Отправлено #2


Outcast
******

Группа: Пользователи
Сообщений: 1 757
Регистрация: 15 фев. 2003
Из: Москва
Пользователь №: 982





В грядущем DevKitPro r22 , в состав которого будет входить обновленная libnds, данная фича работать не будет - ибо структура IPC в данной библиотеке не поддерживается. Вообще, не будет работать любой код, использующий память, расшаренную между 2мя процессорами. Смотри соответствующий тред на gbadev.org .
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
theli
post Суббота, 19 апреля 2008, 01:15
Отправлено #3


вышибала
*****

Группа: Пользователи
Сообщений: 729
Регистрация: 09 окт. 2006
Из: Киев
Пользователь №: 18 402





не совсем так, просто хотят сделать стандартное ядро под арм7 которое устроит большинство.
писать и собирать ручками свой код под арм7 запрещать в принципе никто не будет.
и да, в следующем релизе libnds не будет предустановленной секции разделяемой памяти для IPC, почти всё будет делаться через fifo.

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


--------------------
xmpp://theli@theli.is-a-geek.orguser posted image
user posted image
поддержку в ПМ не оказываю
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Cluster
post Суббота, 19 апреля 2008, 16:03
Отправлено #4


Флудер
*******

Группа: Пользователи
Сообщений: 6 574
Регистрация: 01 мая. 2005
Из: Электросталь
Пользователь №: 12 933





QUOTE (theli @ Суббота, 19 апреля 2008, 2:15)
не совсем так, просто хотят сделать стандартное ядро под арм7 которое устроит большинство.
писать и собирать ручками свой код под арм7 запрещать в принципе никто не будет.
*

ИМХО, сразу так стоило сделать.


--------------------
3DS: 4382-2018-2181
Nintendo Switch: SW-6807-3955-8188
Мой канал YouTube
Мой Twitter
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
PlagueSpark
post Воскресенье, 20 апреля 2008, 00:09
Отправлено #5


Новичок
*

Группа: Пользователи
Сообщений: 26
Регистрация: 19 апр. 2008
Пользователь №: 26 453





QUOTE (theli @ Суббота, 19 апреля 2008, 1:15)
но опять таки , в отличии от нинтендо, никто не собирается никого принуждать отказываться от соственного кода на амр7 если это будет действительно необходимо.
*

не простаивать же одной трети вычислительной способности DS от vblank-а до vblank-а
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (2 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
 

Упрощённая версия Сейчас: Пт., 03 мая. 2024, 18:06
Skin Designed (c) by Rooq.net, All Rights Reserved.