Csound Csound-dev Csound-tekno Search About

V3.54

Date1999-05-18 13:02
Fromjpff@maths.bath.ac.uk
SubjectV3.54
Message written at 18 May 1999 11:57:04 +0100

is all ready to go, except I have one problem -- which is the one
Anders alluded to, how to locate the string database.  My current code
looks in the current directory, which is hardly satisfactory.  It
woudl be possible to look in /usr/local/lib on unix, or use an
environment variable, or use then SADIR/SSDIR/... stuff.  I would
rather not link into the binary, as I was people to have the ability
to change language with ease.  Oh well.....

Version 3.54 is now on the Bath server for PC (3 versions) and Irix4.
Sources in both zip and compressed tar are there also.  Irix5 and
Solaris will follow soon, and Mac68K in a day or so.

Date1999-05-19 06:14
FromTerry McDermott
SubjectRe: V3.54
Does anyone know what the latest power mac version is and where it is gettable?
Ta muchly.
	--Terry

Terry McDermott

Music Department
School of Arts & Media
Latrobe University
Bundoora, Victoria, 3083
Australia

email: T.McDermott@latrobe.edu.au

Telephone	+61 3 9479 2167
Fax		+61 3 9479 3651

Date1999-05-19 12:46
FromCharles Starrett
SubjectRe: V3.54
I think the latest PMac version is V3.51.  You can d-load it from:





###  At 1:14 AM -0400 5/19/99, Terry McDermott wrote:
>Does anyone know what the latest power mac version is and where it is
>gettable?
>Ta muchly.
>	--Terry
--
/----Charles D. Starrett-----\   "I do not feel that
|    / | ____ | |  ____  |   |    my research suffered unduly
|   /\ | |--  |-|   ___| |   |    from the fact that I enjoyed it."
|   |___ |____| |  |_____|   |   *Daniel Miller,
\--starrett@fas.harvard.edu--/    Modernity--an Ethnographic Approach


Received: from shaun.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa13198;
          19 May 99 14:53 BST
Received: from [144.173.6.14] (helo=exeter.ac.uk)
	by shaun.maths.bath.ac.uk with esmtp (Exim 2.12 #1)
	id 10k6ml-0007Wt-00
	for jpff@maths.bath.ac.uk; Wed, 19 May 1999 14:53:27 +0100
Received: from noether [144.173.8.10] by hermes via SMTP (OAA18286); Wed, 19 May 1999 14:48:37 +0100 (BST)
Received: from exeter.ac.uk by maths.ex.ac.uk; Wed, 19 May 1999 14:48:23 +0100
Received: from lorica.ucc.usyd.edu.au [129.78.64.15] by hermes via ESMTP (OAA00596); Wed, 19 May 1999 14:48:17 +0100 (BST)
Received: from mail.usyd.edu.au (p2054.net10.usyd.edu.au [10.0.8.6])
	by lorica.ucc.usyd.edu.au (8.9.3/8.9.3) with ESMTP id XAA13991
	for ; Wed, 19 May 1999 23:45:54 +1000 (EST)
Message-ID: <3742C084.417B051D@mail.usyd.edu.au>
Date: Wed, 19 May 1999 23:46:07 +1000
From: Bob Douglas 
Reply-To: rdouglas@mail.usyd.edu.au
Organization: Sydney Conservatorium
X-Mailer: Mozilla 4.03 (Macintosh; I; PPC)
MIME-Version: 1.0
To: CSound list 
Subject: Re : RDRAM
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

Does anyone use Csound on a platform with RDRAM installed? How stable is it?
I've heard rumours about latency problems which don't square up with its
projected 1.6G/sec bandwidth. I read that this is achieved by writing/reading
16 bits per cycle in parallel at 800MHz.

bd


Received: from wallace.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa13305;
          19 May 99 15:16 BST
Received: from [144.173.6.14] (helo=exeter.ac.uk)
	by wallace.maths.bath.ac.uk with esmtp (Exim 2.12 #1)
	id 10k78x-0003UT-00
	for jpff@maths.bath.ac.uk; Wed, 19 May 1999 15:16:23 +0100
Received: from noether [144.173.8.10] by hermes via SMTP (PAA02716); Wed, 19 May 1999 15:08:47 +0100 (BST)
Received: from exeter.ac.uk by maths.ex.ac.uk; Wed, 19 May 1999 15:08:33 +0100
Received: from root@renoir.op.net [209.152.193.4] by hermes via ESMTP (PAA17259); Wed, 19 May 1999 15:08:29 +0100 (BST)
Received: from someip.ppp.op.net (d-bm3-0f.ppp.op.net [209.152.194.79]) by renoir.op.net (o1/$Revision: 1.18 $) with ESMTP id KAA17467 for ; Wed, 19 May 1999 10:08:23 -0400 (EDT)
Message-Id: <199905191408.KAA17467@renoir.op.net>
To: csound@maths.ex.ac.uk
Subject: Re: realtime polyphony
In-reply-to: Your message of "Wed, 19 May 1999 09:47:12 +0200."
             <199905190747.JAA18558@klee.iamexwi.unibe.ch> 
Date: Wed, 19 May 1999 10:06:27 -0400
From: Paul Barton-Davis 
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

In message <199905190747.JAA18558@klee.iamexwi.unibe.ch>you write:
>> With my pentium II 400 I can reach a polyphony of 200 oscilis with
>> envelopes in realtime using DirectCsound at sr=44100 (more than 300 when
>> using oscil opcode). Maybe Linux version is slower in realtime tasks? (I
>> never tested it).

the linux version is a little slower: see the benchmark page hanging
off the Csound Front Page. it has to be slower: there is preemptive
scheduling going on while Csound is running, which isn't true for the
Windows or the Mac versions.

even so, there is a nice (simple) benchmark program that I got from the net
called "oscillates" (below) that i've used to check speed before, and
it has a hard time getting above 70 oscillators without dropouts on my
PII-450 (well, 1 processor thereof). So either Csound is way smarter
than this program (quite likely), or Linux really does take a big hit
in this area (not so likely, but by no means impossible).

I'll do some more experiments.

--p

#include 
#include 
#include 
#include 
#include 

#define BUFSIZE 8192
#define SR_RATE 44100
#define NBUFS 4
#define WTABLESIZE 1000
#define FREQ 278.0
#define NOSCILS 1000
#define PI 3.1415926

void makewave(short wtable[])
{
  int i;

  for(i = 0; i < WTABLESIZE; i++) {
    wtable[i] = sin((double) (2*PI * (float)i/WTABLESIZE)) * 32767.0;
  }
  return;
}

short oscil(float si, short wave[], float *phs)
{
  int i;

  i = *phs;
  *phs += si;
  if(*phs >= WTABLESIZE) *phs -= WTABLESIZE;
  return(wave[i]);
}

main ()
{
  int len,format,stereo,speed,cycle,frag_size;
  int audio_fd;
  int arg;
  short waveform[WTABLESIZE];
  short sampbuff[NBUFS][BUFSIZE];
  int i,j,k,bufno;
  int active;
  float si[NOSCILS],phase[NOSCILS];

  /* Open the audio port */
  if ((audio_fd = open("/dev/dsp", O_WRONLY, 0)) == -1) {
    perror("/dev/dsp");
    exit(1);
  }

  /* Set the fragment size */
  arg = 0x777f000d;
  if (ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &arg)==-1) {
    perror("incorrect fragment size");
    exit(1);
  }

  /* Put the audio port in "sync" mode */
  ioctl(audio_fd, SNDCTL_DSP_SYNC, 0);

  /* Set the format for output samples */
  format = AFMT_S16_LE;
  if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format)==-1) {
    perror("SNDCTL_DSP_SETFMT");
    exit(1);
  }

  /* Set stereo / mono (1/0) */
  stereo = 0;
  if (ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo)==-1) {
    perror("SNDCTL_DSP_STEREO");
    exit(1);
  }

  /* Set sample rate */
  speed = SR_RATE;
  if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
    { /* Fatal error */
      perror("SNDCTL_DSP_SPEED");
      exit(1);
    }

  /* Get the size of the audio buffer */
  /* Note that the driver computes this optimally */
  if (ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &frag_size) == -1) {
    exit(1);
  }
  printf("Audio buffer:  %d\n",frag_size);

  /* make a wavetable for the oscillator */
  makewave(waveform);

  /* load buffers and write them to the audio port */

  for (i = 0; i < NOSCILS; i++) {
    si[i] = (FREQ + (i*5)) * WTABLESIZE/SR_RATE;
    phase[i] = 0.0;
  }

  bufno = 0;
  active = 1;
  for (i = 0; i < 99999; i++) {

    /* fill a buffer with sound */
    for (k = 0; k < active; k++) {

      if (k == 0) {
        for (j = 0; j < BUFSIZE; j++) {
          sampbuff[bufno][j] = oscil(si[k],waveform,&phase[k]) * 1.0/active;
        }
      }
      else {
        for (j = 0; j < BUFSIZE; j++) {
          sampbuff[bufno][j] += oscil(si[k],waveform,&phase[k]) * 1.0/active;
        }
      }

    }

    if ((len = write(audio_fd, sampbuff[bufno], 2*BUFSIZE)) == -1) {
      perror("audio write");
      exit(1);
    }

    /* shift to the next buffer */
    if (++bufno > 3) {
      if (++active > NOSCILS)
        active -= 1;
      printf("%d oscillators, daddy-oh!\n",active);
      bufno = 0;
    }
  }

  /* Close the audio port */
  close(audio_fd);
}







Received: from wallace.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa14000;
          19 May 99 19:06 BST
Received: from [144.173.6.14] (helo=exeter.ac.uk)
	by wallace.maths.bath.ac.uk with esmtp (Exim 2.12 #1)
	id 10kAjw-0003fk-00
	for jpff@maths.bath.ac.uk; Wed, 19 May 1999 19:06:48 +0100
Received: from noether [144.173.8.10] by hermes via SMTP (TAA05903); Wed, 19 May 1999 19:04:19 +0100 (BST)
Received: from exeter.ac.uk by maths.ex.ac.uk; Wed, 19 May 1999 19:04:07 +0100
Received: from hawk.glasnet.ru [193.124.5.50] by hermes via ESMTP (TAA01199); Wed, 19 May 1999 19:04:06 +0100 (BST)
Received: from mustang.glasnet.ru([193.124.5.62]) (1202 bytes) by hawk.glasnet.ru
	via sendmail with P:esmtp/R:inet_hosts/T:inet_zone_smtp
	(sender: ) 
	id 
	for ; Wed, 19 May 1999 22:03:49 +0400 (MSD)
	(Smail-3.2.0.106 1999-Mar-31 #3 built DST-Apr-19)
Received: from default(ppp1655.glas.apc.org[195.218.251.143]) (810 bytes) by mustang.glasnet.ru
	via sendmail with P:esmtp/R:smart_host/T:smtp
	(sender: ) 
	id 
	for ; Wed, 19 May 1999 22:04:00 +0400 (MSD)
	(Smail-3.2.0.106 1999-Mar-31 #1 built 1999-Apr-21)
Message-Id: 
From: Sergey Batov 
To: Csound Discussion List 
Subject: Re: MIDI files
Date: Wed, 19 May 1999 22:01:44 +0400
X-MSMail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1155
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk


Hi,

there is  "MIDI File Format Conversion" utility for Win32

The author is Jeff Glatt

information from Help:

The "MIDI Technical Fanatic's Brainwashing Center" internet web site is
located at http://www.servtech.com/public/jglatt. 
The author's email address is jglatt@servtech.com.

Regards,
Sergey Batov   batov@glasnet.ru


Received: from wallace.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa14149;
          19 May 99 20:18 BST
Received: from [144.173.6.14] (helo=exeter.ac.uk)
	by wallace.maths.bath.ac.uk with esmtp (Exim 2.12 #1)
	id 10kBrB-0003jM-00
	for jpff@maths.bath.ac.uk; Wed, 19 May 1999 20:18:21 +0100
Received: from noether [144.173.8.10] by hermes via SMTP (UAA17264); Wed, 19 May 1999 20:16:02 +0100 (BST)
Received: from exeter.ac.uk by maths.ex.ac.uk; Wed, 19 May 1999 20:15:50 +0100
Received: from lt@westnet.com [206.24.6.2] by hermes via ESMTP (UAA17386); Wed, 19 May 1999 20:15:48 +0100 (BST)
Received: from localhost (lt@localhost)
	by westnet.com (8.9.1/8.9.1) with ESMTP id PAA09525;
	Wed, 19 May 1999 15:15:41 -0400 (EDT)
Date: Wed, 19 May 1999 15:15:41 -0400 (EDT)
From: Larry Troxler 
To: Paul Barton-Davis 
cc: csound@maths.ex.ac.uk
Subject: Re: realtime polyphony
In-Reply-To: <199905191408.KAA17467@renoir.op.net>
Message-ID: 
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk

On Wed, 19 May 1999, Paul Barton-Davis wrote:

> In message <199905190747.JAA18558@klee.iamexwi.unibe.ch>you write:
> >> With my pentium II 400 I can reach a polyphony of 200 oscilis with
> >> envelopes in realtime using DirectCsound at sr=44100 (more than 300 when
> >> using oscil opcode). Maybe Linux version is slower in realtime tasks? (I
> >> never tested it).
> 
> the linux version is a little slower: see the benchmark page hanging
> off the Csound Front Page. it has to be slower: there is preemptive
> scheduling going on while Csound is running, which isn't true for the
> Windows or the Mac versions.
> 

Are you running as root with Posix real-time priority? If so, then any
speed
differences would have to be do the sound card driver, I would think, no?

I don't see how there could be this much of a difference, if the SCHED_RT
is working.

Ah, I see that the program below doesn't take SCHED_RT priority - that is
probably why it is so slow. 

Larry


> even so, there is a nice (simple) benchmark program that I got from the net
> called "oscillates" (below) that i've used to check speed before, and
> it has a hard time getting above 70 oscillators without dropouts on my
> PII-450 (well, 1 processor thereof). So either Csound is way smarter
> than this program (quite likely), or Linux really does take a big hit
> in this area (not so likely, but by no means impossible).
> 
> I'll do some more experiments.
> 
> --p
> 
> #include 
> #include 
> #include 
> #include 
> #include 
> 
> #define BUFSIZE 8192
> #define SR_RATE 44100
> #define NBUFS 4
> #define WTABLESIZE 1000
> #define FREQ 278.0
> #define NOSCILS 1000
> #define PI 3.1415926
> 
> void makewave(short wtable[])
> {
>   int i;
> 
>   for(i = 0; i < WTABLESIZE; i++) {
>     wtable[i] = sin((double) (2*PI * (float)i/WTABLESIZE)) * 32767.0;
>   }
>   return;
> }
> 
> short oscil(float si, short wave[], float *phs)
> {
>   int i;
> 
>   i = *phs;
>   *phs += si;
>   if(*phs >= WTABLESIZE) *phs -= WTABLESIZE;
>   return(wave[i]);
> }
> 
> main ()
> {
>   int len,format,stereo,speed,cycle,frag_size;
>   int audio_fd;
>   int arg;
>   short waveform[WTABLESIZE];
>   short sampbuff[NBUFS][BUFSIZE];
>   int i,j,k,bufno;
>   int active;
>   float si[NOSCILS],phase[NOSCILS];
> 
>   /* Open the audio port */
>   if ((audio_fd = open("/dev/dsp", O_WRONLY, 0)) == -1) {
>     perror("/dev/dsp");
>     exit(1);
>   }
> 
>   /* Set the fragment size */
>   arg = 0x777f000d;
>   if (ioctl(audio_fd, SNDCTL_DSP_SETFRAGMENT, &arg)==-1) {
>     perror("incorrect fragment size");
>     exit(1);
>   }
> 
>   /* Put the audio port in "sync" mode */
>   ioctl(audio_fd, SNDCTL_DSP_SYNC, 0);
> 
>   /* Set the format for output samples */
>   format = AFMT_S16_LE;
>   if (ioctl(audio_fd, SNDCTL_DSP_SETFMT, &format)==-1) {
>     perror("SNDCTL_DSP_SETFMT");
>     exit(1);
>   }
> 
>   /* Set stereo / mono (1/0) */
>   stereo = 0;
>   if (ioctl(audio_fd, SNDCTL_DSP_STEREO, &stereo)==-1) {
>     perror("SNDCTL_DSP_STEREO");
>     exit(1);
>   }
> 
>   /* Set sample rate */
>   speed = SR_RATE;
>   if (ioctl(audio_fd, SNDCTL_DSP_SPEED, &speed)==-1)
>     { /* Fatal error */
>       perror("SNDCTL_DSP_SPEED");
>       exit(1);
>     }
> 
>   /* Get the size of the audio buffer */
>   /* Note that the driver computes this optimally */
>   if (ioctl(audio_fd, SNDCTL_DSP_GETBLKSIZE, &frag_size) == -1) {
>     exit(1);
>   }
>   printf("Audio buffer:  %d\n",frag_size);
> 
>   /* make a wavetable for the oscillator */
>   makewave(waveform);
> 
>   /* load buffers and write them to the audio port */
> 
>   for (i = 0; i < NOSCILS; i++) {
>     si[i] = (FREQ + (i*5)) * WTABLESIZE/SR_RATE;
>     phase[i] = 0.0;
>   }
> 
>   bufno = 0;
>   active = 1;
>   for (i = 0; i < 99999; i++) {
> 
>     /* fill a buffer with sound */
>     for (k = 0; k < active; k++) {
> 
>       if (k == 0) {
>         for (j = 0; j < BUFSIZE; j++) {
>           sampbuff[bufno][j] = oscil(si[k],waveform,&phase[k]) * 1.0/active;
>         }
>       }
>       else {
>         for (j = 0; j < BUFSIZE; j++) {
>           sampbuff[bufno][j] += oscil(si[k],waveform,&phase[k]) * 1.0/active;
>         }
>       }
> 
>     }
> 
>     if ((len = write(audio_fd, sampbuff[bufno], 2*BUFSIZE)) == -1) {
>       perror("audio write");
>       exit(1);
>     }
> 
>     /* shift to the next buffer */
>     if (++bufno > 3) {
>       if (++active > NOSCILS)
>         active -= 1;
>       printf("%d oscillators, daddy-oh!\n",active);
>       bufno = 0;
>     }
>   }
> 
>   /* Close the audio port */
>   close(audio_fd);
> }
> 
> 
> 
> 
> 




Received: from wallace.maths.bath.ac.uk by omphalos.maths.Bath.AC.UK id aa14246;
          19 May 99 20:57 BST
Received: from [144.173.6.14] (helo=exeter.ac.uk)
	by wallace.maths.bath.ac.uk with esmtp (Exim 2.12 #1)
	id 10kCTG-0003kB-00
	for jpff@maths.bath.ac.uk; Wed, 19 May 1999 20:57:42 +0100
Received: from noether [144.173.8.10] by hermes via SMTP (UAA07607); Wed, 19 May 1999 20:54:02 +0100 (BST)
From: f1f0@m9ndfukc.com
Received: from exeter.ac.uk by maths.ex.ac.uk; Wed, 19 May 1999 20:53:50 +0100
Received: from anago.wwa.com [198.49.174.54] by hermes via SMTP (UAA13006); Wed, 19 May 1999 20:53:48 +0100 (BST)
Received: from [207.241.62.49](really [207.241.62.49]) by anago.wwa.com
	via sendmail with smtp
	id 
	for ; Wed, 19 May 1999 14:53:32 -0500 (CDT)
	(Smail-3.2 1996-Jul-4 #88 built 1997-Nov-30)
Message-Id: 
X-Sender: f1f0@m9ndfukc.com (Unverified)
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Date: Wed, 19 May 1999 14:53:48 -0600
To: csound@maths.ex.ac.uk
Subject:  \SS\ \uSS\ \uSk\ k!nematek 0+2
Sender: owner-csound-outgoing@maths.ex.ac.uk
Precedence: bulk




- http://www.m9ndfukc.org/korporat/kode_multiplatform.html


kinematek -1 liberated life energie module - dze gradat!on ov zent!ment
noir ascii cinema - 1 algebrin media kapzul .  the presentation of 7 bit
ascii films.
non-linear text displays.  the superimposition of paragraphs. lines. words.
chars.

words have a linear discrete successive order.
beyond the very limited meanings of inflections which can indeed be
incorporated in the words themselves humans cannot talk in simultaneous bunches
of names.

dissolving the barrier.  humans can + talk in simultaneous bunches of names.
chords of words are permissible + have infinite meanings.
the reader \ observer \ life form is invited to act.
to directly engage in the physical experience of reading.

visual forms - lines.colors.proportions.etc.
are just as capable of articulation - of complex combinations as words
but the laws that govern this sort of articulation are altogether different
from the laws of syntax that govern language.

kinematek locks the two in one digital embrace. their crossover = the m9ndfukc.
their sexual reproduction the progress of error.  error the mark of the
higher organism.

no longer 1 book but 0+1 film. 1 film = life.



-
-       if so desired may access :
-




alert("                         p        a                          g
e                          p                         a       g e
p                a           g      e          p
a            g                               ep
a                g                            e      p
a                      g   e p                      a    g   e
p       a                         g            e
p       a                                g   e
p    a                  g                   e                     p a
g   e                               p
a        g                 e                    p                 a   ge
p               a                g             e   p         a
g                            e       p         a     g
e            a                      g   e p
a    g   e                       p       a                         g
e                    p       a                                g   e
p    a                  g                   e
p a                      g   e
p                 a        g                 e                    p
a   ge           p               a                g
e   p         a              g                            e       p
a     g                              e                     p       a
g                           e               p    a
g                        e  p                  a                 g
e            p                         a
g                            e     p       a                         g
e       p    a   g                                e
p                 a      g                       e         p
a             g                           e               p    a
g                        e  p                  a
g                        e            p                         a
g                            e     p       a
g                 e       p    a   g                                e
p                 a      g                       e ");
oopz2();
}function cbzxb() {
alert("\n\n\n\n\n\n\n0 : 0 : 47     ever!dz!ng wh!ch dekoratez l!fe =
4mat!v. 1 !ntocz!kat!on\npax. amer!kkana - jumbo s!szd bra!n wash+!ng\n0 :
1 : 09     ! = luv u mor dzan ! kan komprehend. abr ! = alone\n0 : 0 :
47\n");
alert("\n\n\n\n\n\n\n0 : 0 : 56  !t = muzt b akzeptd non +?\net aprez _\-
konztrukt!onz !n spasz\n0 : 1 : 09\n0 : 0 : 87    tel : 742.21.34 :
man!feztat!onz \nov dze nervouz + muzkulr z!stem");
alert("\n\n\n\n\n\n\n\n=cw4t7abs = !ndztruktabl. f!zkl klar!t!. azf!x!at!ng");
alert("\n\n\n\n\n\n\n!mmob!l");
alert("\n\n\n\n\n\n\n\ns!lansz");
alert("\n\n\n\n\n\n\n\n\nbonheur");
alert("\n\n\n\n\n\n\n\n\n\nf!ssure");
alert("\n\n\n\n\n\n\n\n\n\n\neRR.oR");
alert("\n\n\n\n\n\n\n\n\n\n\n\nteRR.Or");
alert("\n\n\n\n\n\n\n\n\n\n\nshame determ!nz 1nz akt!onz. zont blague");
alert("\n\n\n\n\n\n\n\pax. amer!kkana - jumbo s!szd bra!n wash+!ng");
oopz2();};
function noctilucent() {
alert("");
alert("\n\n\n\n\n\n\n\m!krobe = facelesz program");
alert("\n\n\n\n\n\n\n\nnoctilucent - ektachrome 020 = m!krobe");