Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-03-06 19:21:03

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Orkiestra

zrobiłem coś takiego:

Kod:

#include <ncurses.h>
#include <cstdlib>

int main () {
  WINDOW* mainwin = initscr();
  halfdelay(1);
  keypad(stdscr, true);
  noecho();
  int ch = 0;
  while ( ch != 'q' ) {
    ch = getch();
    //ZsXdC VgBhNjM
    // p = 69 + 12 * log2(f / 440)
    // 261,6 277,2 293,7 311,1 329,5 349,2 370,0 392,0 415,3 440,0 466,2 493,9 523,2
    switch (ch) {
    case 'z': //69, aka A
      system("beep -l 50 -f 262");
      break;
    case 'x':
      system("beep -l 50 -f 294");
      break;
    case 'c':
      system("beep -l 50 -f 330");
      break;

    case 'v':
      system("beep -l 50 -f 350");
      break;
    case 'b':
      system("beep -l 50 -f 392");
      break;
    case 'n':
      system("beep -l 50 -f 440");
      break;
    case 'm':
      system("beep -l 50 -f 494");
      break;
    case ',':
      system("beep -l 50 -f 523");
      break;


    case 's':
      system("beep -l 50 -f 277");
      break;
    case 'd':
      system("beep -l 50 -f 311");
      break;

    case 'g':
      system("beep -l 50 -f 370");
      break;
    case 'h':
      system("beep -l 50 -f 415");
      break;
    case 'j':
      system("beep -l 50 -f 466");
      break;
    }
  }
  endwin();
  return 0;
}

$ g++ -lncurses -o a.out beepator.cpp


pomysł: rozbić program na klienta i serwer, serwery poinstalować na kilku maszynach w lanie, klient niech połączy się ze wszystkimi naraz, i mamy orkiestrę z PC-speakerów :D


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#2  2007-03-07 19:06:26

  Kowall_ptk - wieczny student

Kowall_ptk
wieczny student
Skąd: z nienacka :)
Zarejestrowany: 2005-02-17

Re: Orkiestra

gratuluję nieprzeciętnej wyobraźni :)

Sory, ale ten pomysł rozśmieszył mnie bardziej niż większość kawałów przeczytanych na tym forum.


W Linuksie się da, tylko trzeba wiedzieć jak!

Offline

 

#3  2007-03-07 19:51:39

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Orkiestra

kiedyś widziałem program, który grał melodyjkę na stacji dyskietek, ale nie mogę go teraz znaleźć ;)


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#4  2007-03-07 19:56:07

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

program ma jedną małą wadę... pograsz sobie na tym kilka minut a tu nagle /var/log/account/pacct ma kilkadziesiąt mb :P

generalnie forkuje procesy jak szalony. tworzenie wersji sieciowej chyba zacznę od sklejenia beep i beepator w jeden program.

(mówię cały czas poważnie! xD)


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#5  2007-03-07 20:09:11

  TBH - Członek DUG

TBH
Członek DUG
Skąd: Ruda Śląska
Zarejestrowany: 2006-03-07
Serwis

Re: Orkiestra

buehehehe zsynchronizuje czas z czasem na serwerze w kafejce i walne to do crona :D i co godzine bede patrzył na ich miny jak wszystkie kompy zaczną grać


DOBRE! :D:DD:


http://tbhthelolmaker.wordpress.com/kontakt/
<TBH> Gentoo!
<X-dos> cóz, sa ludzie ktorzy nie wiedza co robic ze swoim wolnym czasem :)

Offline

 

#6  2007-03-08 16:33:49

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

wstrzymaj swoje bity, już pracuję nad inteligentniejszą wersją, fuzją beep i beepator. część kodu beep jest już przeniesiona, ale praca idzie nadzwyczaj powoli -> w okienku obok gram w tetrisa xD

gdy wyjdzie beepator 0.2, nadejdzie czas na DPSO, czyli Distributed PC-Speaker Orchestra :D


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#7  2007-03-08 16:53:28

  azhag - Admin łajza

azhag
Admin łajza
Skąd: Warszawa
Zarejestrowany: 2005-11-15

Re: Orkiestra

kiedyś widziałem program, który grał melodyjkę na stacji dyskietek, ale nie mogę go teraz znaleźć ;)

znalazłem! :D

diskplay.zip
Stworzony na szybko odtwarzacz melodyjek na stacji dyskietek. Po włożeniu dyskietki do stacji manipuluje głowicą w rytm melodii Alphaville - Big in Japan. Póki co nie umie odtwarzać mp3, mimo ze algorytm mniej więcej mam już opracowany ;) Może kiedyś...


Błogosławieni, którzy czynią FAQ.
opencaching :: debian sources.list :: coś jakby blog :: polski portal debiana :: linux user #403712

Offline

 

#8  2007-03-08 19:18:03

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

kurde, będę musiał poszukać jakiegoś napędu flopa i to obczaić :]

<zastanawia się nad wykorzystaniem napędu dyskietek w charakterze sekcji basowej>


tymczasem prace nad beepatorem 0.2 idą do przodu. myślę że jeszcze dziś wrzucę w tym temacie 0.2RC1 xD


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#9  2007-03-08 20:55:10

  kwachu - Członek DUG

kwachu
Członek DUG
Skąd: z /home/kwachu
Zarejestrowany: 2006-04-06

Re: Orkiestra

diskplay.zip
Stworzony na szybko odtwarzacz melodyjek na stacji dyskietek. Po włożeniu dyskietki do stacji manipuluje głowicą w rytm melodii Alphaville - Big in Japan. Póki co nie umie odtwarzać mp3, mimo ze algorytm mniej więcej mam już opracowany ;) Może kiedyś...

Albo ja nie mam wyczucia rytmu bo dla mnie to chaotyczne pierdzenie, żadnej melodii nie wychwyciłem ;)

PS. A co trzeba zrobić żeby ten beepator beepał bo mi nie beepa?


http://img218.imageshack.us/img218/8307/811168430630qp0.png
http://img.userbars.pl/22/4369.png
http://www.cdlinux.pl/grafika/cdlinux_button-200x50.png

Offline

 

#10  2007-03-08 22:01:09

  korbol - Członek DUG

korbol
Członek DUG
Zarejestrowany: 2005-04-29

Re: Orkiestra

Zastrzele Was moim pytaniem jak to odpalić? :]

Kod:

s$ g++ -lncurses -o a.out beepator.cpp 
beepator.cpp:63:2: warning: no newline at end of file

powstał plik a.out, uruchamiam go ale nic sie nie dzieje.
Z tego co pamietam to za pcspeaker chyba jakis moduł był odpowiedzialny


Pozdrawiam

Offline

 

#11  2007-03-08 22:09:00

  Lacer - Członek DUG

Lacer
Członek DUG
Skąd: Wrocław
Zarejestrowany: 2006-11-08

Re: Orkiestra

kiedyś widziałem program, który grał melodyjkę na stacji dyskietek, ale nie mogę go teraz znaleźć ;)

znalazłem! :D

diskplay.zip
Stworzony na szybko odtwarzacz melodyjek na stacji dyskietek. Po włożeniu dyskietki do stacji manipuluje głowicą w rytm melodii Alphaville - Big in Japan. Póki co nie umie odtwarzać mp3, mimo ze algorytm mniej więcej mam już opracowany ;) Może kiedyś...

a ja kurczaki pieczone ściągnąłem ten programik, chce sobie go sprawdzić, a tu zonk:
w całej chacie nie mam dyskietki :P

a przewaliłem co mogłem do góry nogami :)

eeech....
ale ta technika poszła do przodu ;)

pozdrawiam
miłosz


"Myśl i nie ufaj, decyduj sam za siebie
Nie pozwól nigdy by kierowali tobą
Popatrz czy już nie jesteś w stadzie
Bo nie obudzisz się już nigdy sobą..." Post Regiment - Stado

Offline

 

#12  2007-03-08 22:57:25

  AgayKhan - Członek DUG

AgayKhan
Członek DUG
Skąd: Płock
Zarejestrowany: 2006-03-21
Serwis

Re: Orkiestra

A jak ten programik skompilować, co gra na stacji dysków? yasm mi sypie błędami. nasm też


born to be root
linux register user #362473

Offline

 

#13  2007-03-08 23:45:38

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

Zastrzele Was moim pytaniem jak to odpalić? :]

Kod:

s$ g++ -lncurses -o a.out beepator.cpp 
beepator.cpp:63:2: warning: no newline at end of file

powstał plik a.out, uruchamiam go ale nic sie nie dzieje.
Z tego co pamietam to za pcspeaker chyba jakis moduł był odpowiedzialny

Use the source, Luke...

Z = c1
s = cis1
X = d1
d = dis1
C = e1
V = f1
g = fis1
B = g1
h = gis1
N = a1 (440 hz, kamerton)
j = b1 (nie "zachodnie" b, inaczej a#)
M = h1 ("zachodnie" b)
, = c2 - oktawę wyżej od c1

poza tym musisz mieć zainstalowaną paczkę beep:
# apt-get install beep
gdy debconf zapyta o suid, odpowiedz koniecznie tak, chyba że beepatora też chcesz uruchamiać jako root :P

generalnie obecna implementacja ssie. jak już wspominałem prace nad inteligentniejszą wersją idą pełną parą.

kto chce sobie pograć, oto kilka kawałków:

nie wiem jak to się nazywa ale jest prześmiesznie proste :P

Kod:

zzbbnnbvvccxxz
bbvvccx
bbvvccx
zzbbnnbvvccxxz

judas priest - breaking the law (wiemy już od czego halfordowi wypadły włosy :P)

Kod:

nmknmknmk
vbnvbnbkmn

metallica - master of puppets (dość ciężko to zagrać, i lekko zmieniłem tonację by "wskoczyć" w zakres beepatora)
(minus oznacza dłuższy dźwięk - musimy na razie go sobie wyobrazić, bo wszystkie nuty i tak mają długość 50 ms)

Kod:

(intro)
z
m-- j-- n--
zz,zzkzz m-- j-- n-- zzhzzbzzgzvzczdzxz
zz,zzkzz m-- j-- n-- zzhzzbzzgzvzczdzxz
(i tak parę razy)
(teraz fajny moment, przed-zwrotka)
zsbzshzsnzshzsbb
zsbzshzsnzshzsb--
zsbzshzsnzshzsbb
zsbzshzs
dxzdxzdxdxzdxzdx
(ten fragment wymyka się skali)
z-- zzzzzzzz
dvgvdv
z-- zzzzz
dvdv
(i tak parę razy)
(potem to samo ale o dwa półtony wyżej)
(przed-refren, lekko zmieniony, wyrzucone wstawki solowe (wymykają się skali... ;/ a zkoda, bo są świetne))
,- ,,m,
bbbhb
nnnmb
(jeszcze dwa razy)
,- ,,m,
bbbnb
(tutaj musiałem znów wyrzucić kawałek >:|)
(i refren!)
z- z- (mas-ter!)
s- s- ((mas-ter!))
z-- zzz x- zz d-- (master of puppets i'm pulling your strings)
h-- vvv b- vv v-- (twisting your mind and smashing your dreams)
j-- vvv h- vv b-- (blinded by me you can't see a thing)
,-- vvv j- vv h- (just call my name 'cause i'll hear you scream)
z- z- (mas-ter!)
s- s- ((mas-ter!))
z-- zzz x- zz h-- (just call my name 'cause i'll hear you scream)
z- z- (mas-ter!)
s- s- ((mas-ter!))
(znów przed-zwrotka, zwrotka, przed-refren i refren, a po refrenie solówka, solówka, interlude, zwrotka, przed-refren, refren, i śliczne wyjście :D)

m.o.p. to kawał drania, lepiej grać to na gitarze ;] nie jestem pewien czy gdzieś nie popełniłem błędu, ale jak ktoś zna kawałek i wyczai tempo to pójdzie z górki :D


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#14  2007-03-08 23:53:10

  korbol - Członek DUG

korbol
Członek DUG
Zarejestrowany: 2005-04-29

Re: Orkiestra

harry666t, nie kumam co mam zrobić, beep oczywiście mam instalnięty.


Pozdrawiam

Offline

 

#15  2007-03-08 23:59:31

  zielkam - były zielony_83 :)

zielkam
były zielony_83 :)
Skąd: Zawiercie
Zarejestrowany: 2006-05-06
Serwis

Re: Orkiestra

odpalasz a.out na przykład tak ./a.out
i klepiesz w klawisze poszczególne odpowiadają za różne dźwięki.
Klawiszologie masz wyżej.


Zostałeś zarejestrowany jako użytkownik #416423 przez.. :mrgreen:
##
FluxboxPL | Mój Lepszy Świat | UnixyPL | Telenia VOIP dla ISP
JID: zielony@jabster.pl

Offline

 

#16  2007-03-09 00:27:07

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

ha, nowa wersja korzysta już ze starego dobrego Makefile :) to powinno ułatwić kompilację.

0.18 na razie kompiluje się bez przeszkód (aczkolwiek nie wiem co to może być:

Kod:

beepator.cpp: In function 'int dobeep(unsigned int)':
beepator.cpp:104: warning: control reaches end of non-void function

)

kod jest tutaj:

Kod:

inline int dobeep ( unsigned int freq ) {

  if ( freq == 0 ) return 0;

  /* try to snag the console */
  if((console_fd = open("/dev/console", O_WRONLY)) == -1) {
    // fprintf(stderr, "Could not open /dev/console for writing.n");                                                                                      
    // printf("a");  /* Output the only beep we can, in an effort to fall back on usefulness */                                                           
    perror("open"); /* sry but wtf is perror()? */
    return 1;
  }

  /* Beep */
  if(ioctl(console_fd, KIOCSOUND, (int)(CLOCK_TICK_RATE/freq)) < 0) {
    // printf("a");  /* Output the only beep we can, in an effort to fall back on usefulness */                                                           
    perror("ioctl");
  }

  /* Look ma, I'm not ansi C compatible! */
  usleep(1000*50);                     /* wait...    */
  ioctl(console_fd, KIOCSOUND, 0);    /* stop beep  */

  close(console_fd);
} /* im bardziej wpatruję się w okno emacsa tym silniejsze odnoszę wrażenie, że ta właśnie linia nosi numer 104 */

usunięcie "inline" nic nie daje. może wystarczy zmienić typ funkcji na "void", a błąd zasygnalizować podniesieniem wyjątku?

uwaga, kod ten nie jest już w public domain. część tutaj zaprezentowana jest objęta GNU GPL (autor programu beep nie sprecyzował wersji, więc przyjmujemy "druga lub wyższa").

cholera mnie wie czy na koniec nie zrobię z tego paczki debianowej, + debconf żeby ustawić suid root podczas instalacji.

ponadto mam mały problem, jakiś bug czy co. aktualnie tylko X wydaje jakiś dźwięk, ale to chyba związane jest z niezbyt trafnym sposobem tłumaczenia klawiszy na częstotliwości. wydanie stabilnej 0.2 trochę się odwlecze...

w przygotowaniu jest też strona manuala... ech, coś mi mówi że właśnie kończy się etap "patrzcie, taki śmieszny kawałek kodu tu mam :)", a zaczyna się "prawdopodobnie masz złą wersję glibc lub nie zainstalowałeś najnowszych nagłówków jądra"...

taki los :P


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#17  2007-03-09 09:21:25

  korbol - Członek DUG

korbol
Członek DUG
Zarejestrowany: 2005-04-29

Re: Orkiestra

Aaaaa to ttrzba w klawiature pstrykać no ale i tak mi nie dzwięczy.


Pozdrawiam

Offline

 

#18  2007-03-09 15:14:20

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

sprawdź czy:

1.
$ beep
wydaje jakiś dźwięk

2. jeśli nie, czy /usr/bin/beep ma ustawiony suid root. powinien mieć.

3. jeśli ma suid a nadal nic nie słychać, czy nie wywaliłeś modułu kernela odpowiedzialnego za pc speaker

4. czy nie masz jakiegoś aliasa o nazwie beep czy innej aplikacji o tej nazwie (np. w /usr/local/bin/ czy ~/bin/)

5. w osobnym xtermie patrz (najlepiej htopem w trybie drzewa) jednym okiem czy beepator forkuje jakieś procesy podczas grania

6. czy pc speaker wogóle kiedykolwiek wydaje jakiekolwiek dźwięki

7. cierpliwie poczekaj, dziś powinna być wersja 0.2 >_< prawie działa, tylko nadal nie słychać żądanego dźwięku... pracujemy nad tym


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#19  2007-03-09 15:27:47

  korbol - Członek DUG

korbol
Członek DUG
Zarejestrowany: 2005-04-29

Re: Orkiestra

Uprawnienia są takie
rwsr-x-r--
beep nie piszczy, nie wiem jak sie nazywa ten moduł odpowiedzialny za ta ale jak znam zyci epenwie go nie wkompilowalem:-/
Po odpaleniu program znajduje sie na liscie procesów.


Pozdrawiam

Offline

 

#20  2007-03-11 22:40:56

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

http://freeshells.ch/~bsah/downloads/beepator-0.2.tar.gz

oto i beepator w wersji 0.2. miałem niewiele czasu w weekend i dlatego z takim właśnie opóźnieniem, no i w dodatku łączenie beep z beepatorem to dość partańska robota. nie działają żadne cmdline argumenty, nawet --help, nie ma nadal żadnego UI (mimo iż używa ncurses, które obok aalib są jedną z najlepszych bibliotek "graficznych" pod konsolę), w sumie jedyne zmiany to makefile i - od strony technicznej - bezpośrednie wykorzystywanie sprzętu (co wymaga uprawnień roota). ale był to krok konieczny ;]



=====================

ficzersy planowane na wersję 0.3: eliminacja wszystkich wymienionych przypadłości z wersji 0.2 (brak ui i podstawowych choćby argumentów cmdline), dodanie strony manuala.

wersja 0.4 powinna zostać rozbita na beepator i beepd. beepator nie będzie już wymagał roota, zaś beepd tak. ponadto oba powinny gadać ze sobą po sockecie. być może jeden beepator będzie mógł łączyć się z kilkoma beepd na różnych kompach. beepd powinien przyjmować połączenia na porcie 440 (standardowa częstotliwość PC speakera ;] skoro już i tak musi mieć uprawnienia roota to czemu ma nie skorzystać z portu <1024). ze względów bezpieczeństwa absolutnie odradziłbym odpalania beepd na cennych maszynach (a szczególnie tych z zewnętrznym ip). nigdy nie programowałem bezpośrednio na socketach bsd, jeśli ktoś mógłby być moim przewodnikiem w dżungli, byłbym wdzięczny za wszelką pomoc :P

termin wydania następnej wersji: jak będzie to będzie.


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

#21  2007-03-11 22:46:03

  czechu - Członek DUG

czechu
Członek DUG
Skąd: Gorlice
Zarejestrowany: 2004-10-24

Re: Orkiestra

jest coś podobnego już w necie i bardziej zaawansowane


http://www.linux.com.pl/forum/index.php?t=msg&g … 262&rid=0

Offline

 

#22  2007-03-11 23:10:57

  harry666t - Członek DUG

harry666t
Członek DUG
Zarejestrowany: 2007-01-28

Re: Orkiestra

ładne, tylko że

1. trzeba się chwilkę pomęczyć z usuwaniem końcówki którą httpd dokleja pod koniec pliku ;]

2. nie działa pod pseudo terminalem, a jedynie pod tty. zapewne kwestia poprawienia jakiegoś buga, bo u mnie działa tak i tak (ale dla odmiany tylko gdy ma się roota).

3. mój projekt ma inny cel - umożliwienie grania na wielu pc speakerach jednocześnie. ;p

4. docelowo rozważam zrobienie klienta pod Xy wykorzystującego do przechwytywania klawiatury libsdl. w praktyce umożliwi to niezwykle precyzyjną (w porównaniu z konsolą) regulację długości trwania nutki oraz umożliwi polifonię (na tyle głosów, na ile mamy kompów :P). klient "inteligentnie" rozdzielałby nutki pomiędzy różne kompy.

5. kto da linka do tutoriala o socketach? :D


[ /\/\/\ o_0 ----->>>       Ascii Art Userbar User ]

"steal and steal and steal some more and give it to all your friends and keep on stealin'"
- Reznor

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)