Автор Гілка: Scratch та Squeak  (Прочитано 4137 раз)

Відсутній ggromko

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-0
Re: Scratch та Squeak
« Відповідей #15 : 2009-06-11 11:24:53 »
Знайшов Luca Olivetti - це він свого часу зробив патч для використання порту 128:0 у squeak. Він надіслав латку, я по-новому зібрав squeak 3.10-5 - з нього взяв лише плагін МІДІ (плагін sound-ALSA "заинається", тож використав свій). Все працює - і звук, і МІДІ, і звукозапис. Є одна невелика проблема - TiMidity  часом створює порти за адресами 129:0, у цьому випадку МІДІ у Скретчі не працює. Як зчитати адресу порту (хоча б з /proc/asound/seq/clients) та передати плагіну дійсну адресу? (звичайно щоб на С)

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Scratch та Squeak
« Відповідей #16 : 2009-06-12 14:25:15 »
А можна приклад вмісту файлу? А то я не впевнений, що там має бути...
[Fedora Linux]

Відсутній ggromko

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-0
Re: Scratch та Squeak
« Відповідей #17 : 2009-06-12 17:04:51 »
З тексту файлу sqUnixMIDIALSA.inc


int sqMIDIPortWriteFromAt(int portNum, int count, int bufferPtr, int time)
{
  if (portNum == 0)
    {
      int i;
      snd_seq_event_t ev;
      unsigned char *bytePtr= (unsigned char *)bufferPtr;

      dprintf("Port %d Write:", portNum);
      for (i= 0;  i < count;  ++i) dprintf(" %d", (int)bytePtr);
      dprintf(" at %d\n", time);

/* Цей рядок було додано до тексту MIDIPLugin , щоб передавати на порт TiMIdity
*/    
      snd_seq_connect_to(seq, out_port, 128, 0);
 
/* ----------------------------------------------------------------
*/
      snd_seq_ev_clear(&ev);
      snd_seq_ev_set_source(&ev, out_port);
      snd_seq_ev_set_subs(&ev);
      snd_seq_ev_schedule_tick(&ev, queue, 0, time);
      for (i= 0;  i < count;  ++i)
      processMIDIByte(&ev, *bytePtr++);
      snd_seq_event_output(seq, &ev);
      snd_seq_drain_output(seq);

      success(true);
      return count;
    }

У вкладенні текст цього файлу

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Scratch та Squeak
« Відповідей #18 : 2009-06-12 22:30:22 »
Та я хотів вміст вашого /proc/asound/seq/clients із запущеним timidity++, щоб написати функцію на Сі, яка його розбиратиме.
[Fedora Linux]

Відсутній ggromko

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-0
Re: Scratch та Squeak
« Відповідей #19 : 2009-06-12 23:36:24 »
Client info
  cur  clients : 4
  peak clients : 5
  max  clients : 192

Client   0 : "System" [Kernel]
  Port   0 : "Timer" (Rwe-)
  Port   1 : "Announce" (R-e-)
    Connecting To: 15:0
Client  14 : "Midi Through" [Kernel]
  Port   0 : "Midi Through Port-0" (RWe-)
Client  15 : "OSS sequencer" [Kernel]
  Port   0 : "Receiver" (-we-)
    Connected From: 0:1
Client 128 : "TiMidity" [User]
  Port   0 : "TiMidity port 0" (-We-)
  Port   1 : "TiMidity port 1" (-We-)
  Port   2 : "TiMidity port 2" (-We-)
  Port   3 : "TiMidity port 3" (-We-)
  Output pool :
    Pool size          : 500
    Cells in use       : 0
    Peak cells in use  : 0
    Alloc success      : 0
    Alloc failures     : 0
  Input pool :
    Pool size          : 1000
    Cells in use       : 0
    Peak cells in use  : 3
    Alloc success      : 11
    Alloc failures     : 0

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст
Re: Scratch та Squeak
« Відповідей #20 : 2009-06-13 16:52:09 »
Тримайте приклад в долучені.
[Fedora Linux]

Відсутній ggromko

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-0
Re: Scratch та Squeak
« Відповідей #21 : 2009-06-16 07:53:47 »
Дякую за надану допомогу! Інша проблема - squeak i PulseAudio  не дуже гарно "контактують" між собою. Якщо використовується додаток для роботи з ALSA, то при працюючому перенаправленні виведення звуку з ALSA на PulseAudio маємо проблеми з крахом squeak, якщо залишити PulseAudio  працювати,  а лише не дозволити перенаправляти виведення звуку для програма, що використовують ALSA ( в Центрі керування Mandriva, у налаштуваннях звуку є така опція) - все працює дуже гарно. Проблема в тім, що я не знаю, як "прибрати" цей redirect ALSA to PulseAudio  на Ubuntu - подібної опції я не знаходив. Теж саме можна зробити ( в Mandriva)  вилучивши або перейменувавши файл /etc/pulse-default.conf, але в Ubuntu  такого  немає. Зрозуміло, що за все відповідає модуль pulseaudio alsa-plugin.
Пробував працювати з додатком squeak для OSS  (через  padsp) -  відтворення гарне, запис проблематичний (крах або зависання)  

Відсутній yurchor

  • Видавець
  • *******
  • дописів: 3636
  • Карма: +3/-0
  • Grateful for our Iron Lung
    • Вікі користувачів KDE
Re: Scratch та Squeak
« Відповідей #22 : 2009-06-16 14:20:18 »
Може ці налаштування допоможуть:
http://pulseaudio.org/wiki/PerfectSetup
Try to reach you before winter comes
Always a place for you in my heart
You're not alone
All used up
I'd give anything to talk to you

Відсутній ggromko

  • Новачок
  • *
  • дописів: 29
  • Карма: +0/-0
Re: Scratch та Squeak
« Відповідей #23 : 2009-06-23 07:42:14 »
Дыйшов до "точки" - не розумію, нащо те pulseaudio, коли раныше все працювало добре, то тепер з проблемами. Драйвера воно використовує від ALSA, але програми що коректно працювали з ALSA,  не працюють з РА. Леннарт Поттерінг відповідає що не підтримується async handlers  з ALSA -  каже, що то погано, переписуйте свої додатки на застосування РА.