Just to be sure. You removed the \chordnames part and added the \chords.
When I did this I got a guitar (well, it didn't sound like a guitar, but
it was not a piano) both for the melody and the chords.
I think it would be beneficial if you attached the .ly file so we can
see what you have
On 2016-02-06 12:05, Peter Gentry wrote:
I have tried a couple of different instrument names. The chord sound does vary
but still very much piano like.
\score {
<<
\chords {
\set ChordNames.midiInstrument = #"banjo"
\myChordsTransposed
}
\new FretBoards {
\set
Hello Jud and Welcome to the wonderful pond!
I would really recommend you to download and install Frescobaldi.
http://frescobaldi.org/
Frescobaldi is an Editor/IDE for creating Lilypond files.
Lilypond take on (or multiple) text files with commands for how it
should create the sheet music.
-user-bounces+peterfender=hotmail@gnu.org
[mailto:lilypond-user-bounces+peterfender=hotmail@gnu.org] *On
Behalf Of *lilyp...@andis59.se
*Sent:* 20 November 2015 15:34
*To:* lilypond-user@gnu.org
*Subject:* Re: Install problem
On my Windows 10 it works without "Run as Administ
On my Windows 10 it works without "Run as Administrator"
The only thing that happens when you drop a .ly file on the shortcut is
that it compiles the .ly file. If it's OK, then you will get a .pdf file
otherwise it will create a .log file with the errors.
There will not be any dialog or
Just remembered that I didn't use the default directory C:\Program Files
(x86)\Lilypond
I used C:\lilypond instead.
So Phils idea of a rights issue is probably right!
// Anders
On 2015-11-20 16:34, lilyp...@andis59.se wrote:
On my Windows 10 it works without "Run as Administrator"
-1073741819(0xc005) means Access Violation, but we need to know a bit more
to find the culprit.
Please run LilyPond with Verbose output-V, --verbose and post the output.
http://www.lilypond.org/doc/v2.19/Documentation/usage/command_002dline-usage#basic-command-line-options-for-lilypond
On 2015-10-04 22:00, Edward Ardzinski wrote:
I think I'm going to like Frescobaldi - especially building up the snippets I
need...
Now to see how long I stay on this version. LOL
One (of many) advantages with using Frescobaldi is that you can
configure it for multiple versions of Lilypond.
On 2015-09-17 13:14, Brett Duncan wrote:
@Kaj, Lilypond's format for /inputting/ chords is described at
http://www.lilypond.org/doc/v2.18/Documentation/notation/chord-mode/
and I would suggest reading through this carefully to get a clearer
understanding of the results you are seeing,
On 2015-03-12 08:29, Urs Liska wrote:
Could anybody please tell me what
\version 2.18.2
#(display (car (command-line)))
displays on Windows (i.e. how the string is formatted)?
Using Frescobaldi
C:\lilypond-2-18-2-1\usr\bin\lilypond-windows.exe
// Anders
--
English isn't my first
On 2015-03-09 11:30, Federico Bruni wrote:
2015-03-08 17:10 GMT+01:00 and...@andis59.se mailto:and...@andis59.se
and...@andis59.se mailto:and...@andis59.se:
Maybe this is a more elegant solution for your use case:
https://lists.gnu.org/archive/html/lilypond-user/2013-08/msg00148.html
copy
On 2015-03-08 17:06, Pierre Perol-Schneider wrote:
Hi Anders,
simply delete midi in your score and create a new one just for the midi:
\score {
\new StaffGroup
\new Staff
\keepWithTag myStaff {\melody }
\new TabStaff
\keepWithTag myTab { \melody }
\layout { }
I have a peace of music that has a Staff and a TabStaff but the music is
not the same. How would I create the midi so it only plays the tag that
is used in the Staff
In the sample I only want MIDI for the tag myStaff.
// Anders
Sample code
%% Start
\version 2.19.15
\header {
title = Test
On 2015-02-12 17:56, Conor Cook wrote:
How might I get my Frescobaldi installation to open up the Lilypond
2.19.15 manual instead of 2.18.2 automatically? I have no local
documentation, so it automatically opens the internet version.
~Conor Cook
Select Edit - Preferences - LilyPond
On 2015-02-01 14:32, and...@andis59.se wrote:
I want to display the scale position a long side the note.
Ok, I found out that it's called *Scale Degree!*
So I found the EZ_numbers_engraver!
Case closed!
A big thank you for who that created this!
// Anders
--
English isn't my first
I want to display the scale position a long side the note.
Like this, but automatically!
I have tried to search for it, but not finding anything (which probably
is due to my lack of knowing what 'scale position' is called officially)
Is there something in Lilypond or a snippet or do I have to
On 2015-01-31 00:43, Thomas Morley wrote:
2015-01-29 22:06 GMT+01:00 and...@andis59.se and...@andis59.se:
On 2015-01-28 21:45, Pierre Perol-Schneider wrote:
Thank you Anders,
myNotes = \relative c' { \pedA a2\5 \pedF cis'2\4 } seems to work.
I might live with myNotes = \relative c' \pedA
On 2015-01-28 21:45, Pierre Perol-Schneider wrote:
Thank you Anders,
myNotes = \relative c' { \pedA a2\5 \pedF cis'2\4 } seems to work.
It seems that your function cannot be applied into a chord.
Well, I don't know what to say...
Ok, now I understand the error message: not a
On 2015-01-29 00:13, Thomas Morley wrote:
2015-01-28 17:55 GMT+01:00 and...@andis59.se and...@andis59.se:
On 2015-01-28 17:39, Pierre Perol-Schneider wrote:
Not sure, whether it's the wanted output, though, how about:
It fixed the problem but it didn't output the notes I wanted
On 2015-01-29 22:18, Urs Liska wrote:
Am 29.01.2015 um 22:16 schrieb and...@andis59.se:
But I wonder about where I can find documentation on functions like:
ly:music-property
ly:music-set-property!
...
The Scheme functions that are Lilypond related.
They are here:
http://lilypond.org/doc
In my current document I', using some functions, that I have created
myself (a lot of help from the list) and I get an error
C:/Users/ame/Documents/Lilipond/PSG/firsttest.ly:5:6: error: not a
rhythmic event
e\6
\pedA a\5 \pedF cis'\4 2 e'4\4
On 2015-01-28 17:39, Pierre Perol-Schneider wrote:
Hi Anders,
Please send a full tiny example.
Cheers,
Pierre
2015-01-28 15:06 GMT+01:00 and...@andis59.se mailto:and...@andis59.se
and...@andis59.se mailto:and...@andis59.se:
In my current document I', using some functions, that I have
On 2015-01-28 17:39, Pierre Perol-Schneider wrote:
Hi Anders,
Please send a full tiny example.
Cheers,
Pierre
2015-01-28 15:06 GMT+01:00 and...@andis59.se mailto:and...@andis59.se
and...@andis59.se mailto:and...@andis59.se:
In my current document I', using some functions, that I have
I have this test program, se below, but I get
unexpected EVENT_FUNCTION
\transpose c cis $mus
\rightHandFinger
\markup\normal-text\bold\fontsize #0 $txt
How would I do this correctly?
// Anders
%% Start
\version 2.19.15
meTrans =
#(define-music-function
Hello Klaus,
On 2015-01-26 22:08, Klaus Blum wrote:
Hi Anders,
the \rightHandFinger command can only be used for a single note, not for a
whole music expression that could also be a chord or a sequence of notes
and rests.
Replacing ly:music? by ly:pitch? should do the trick:
Aha! I thought
I want to create my own display function that combines several commands
into one function.
I have tried this
\version 2.19.15
#(define bar #f)
#(define tmp #f)
meDisplay =
#(define-void-function (parser location message value)
(markup? variable?)
(display message)
(display : )
On 2015-01-24 18:41, Mattes wrote:
Am Samstag, 24. Januar 2015 18:18 CET, and...@andis59.se and...@andis59.se
schrieb:
I want to create my own display function that combines several commands
into one function.
Yes, you declare meDisplay as taking four arguments but call it with two.
Why
On 2015-01-23 23:53, Thomas Morley wrote:
2015-01-23 23:03 GMT+01:00 Thomas Morley thomasmorle...@gmail.com:
2015-01-21 15:54 GMT+01:00 and...@andis59.se and...@andis59.se:
Is it possible to know which string a note is placed on in a TabStaff.
Or maybe something at the lines of
\version
Is it possible to know which string a note is placed on in a TabStaff.
E.g.
%% Start
\version 2.19.15
melody = { c'4 }
\score {
\new Staff { \melody }
\new TabStaff { \melody }
}
%% End
Here the note c'4 is placed on the second string of the TabStaff.
Since I want to do
On 2015-01-17 00:02, and...@andis59.se wrote:
I store two pitches in a pair variable
x = #'(b . cis')
I woke up this morning
I have figured out that I don't want to store the pitches in a pair but
in a list.
Thanks to all that have answered how to use pair in a music-function.
I'm
I store two pitches in a pair variable
x = #'(b . cis')
But then I want to retrieve each one as a pitch in a music-function
foo = #(define-music-function (parser location bar) (ly:music?)
(define from (car x))
(define to (cdr x))
#{
\transpose $from $to
On 2015-01-17 00:16, Jay Anderson wrote:
On Fri, Jan 16, 2015 at 4:02 PM, and...@andis59.se and...@andis59.se wrote:
I store two pitches in a pair variable
x = #'(b . cis')
pitches = #(cons #{ b #} #{ cis' #})
#(display (ly:pitch? (car pitches))) = #t
Ok that works but looks really bad
On 2015-01-12 21:54, and...@andis59.se wrote:
I want to write some music for Pedal Steel Guitar. Most player are using
tablature so I want to use it also. One of my problems is that the Pedel
Steel Guitar has pedals! They re-tune one or more strings when pressed.
Thank you both Pierre
I have one more problem with creating tablature for Pedal Steel
Guitar. That is one of conventions. Pedal Steel Guitarist are used to
have the tab not between the lines not (as the rest of the world) on the
lines. See psg-tab2.png
The reason if of cause that is easier to read the letter when
On 2015-01-13 20:17, Pierre Perol-Schneider wrote:
How about :
Snip (Brilliant code!)
That will work perfectly!
Thank you very much!
// Anders
--
English isn't my first language.
So any error or strangeness is due to the translation.
Please correct my English so that I may become better.
On 2015-01-13 20:17, Pierre Perol-Schneider wrote:
How about :
\version 2.19.11
\header {
title=Pedal Steel Guitar - E9th
}
PSGE-tuning = \stringTuning
c,,,% this tune's only to show one more string
b, d e fis gis b e' gis' dis' fis'
Notes = \transpose c c' { e a cis'2 e'4}
On 2015-01-13 22:12, Pierre Perol-Schneider wrote:
Sure you can.
BTW, I just took a look on the web in order to see how those tablatures
look like, so I've added some options :
Snip
Wow!!
It's almost perfect!
Since you are using the same notes for the normal Staff and the TabStaff
the
On 2015-01-13 22:50, Pierre Perol-Schneider wrote:
Hum, not easy to automate it but you can use tags :
http://lilypond.org/doc/v2.19/Documentation/notation/different-editions-from-one-source.html#using-tags
So much to learn, so little time...
Lilypond is like the Russian dolls, you never
I want to write some music for Pedal Steel Guitar. Most player are using
tablature so I want to use it also. One of my problems is that the Pedel
Steel Guitar has pedals! They re-tune one or more strings when pressed.
(There is of cause no standard on how many pedals or which strings they
On 2014-03-24 22:04, Thomas Morley wrote:
How about below?
Also, I added an optional argument, which you can use to specify which
chord-note should be colored.
Default is 'first'.
It's possible to switch to 'last'.
Other settings like 'fourth' at own risk:
Ofcourse specifying 'fourth' will
On 2014-03-19 19:26, MING TSANG wrote:
I compile the following and get code 1 - invalid argument.
\version 2.19.3
\book {
\markup {this generate error}
\bookOutputSuffix +男+女
{ e' e' e' e' }
}
Works perfectly here!
Starting lilypond-windows.exe 2.19.3 [Untitled]...
Processing
On 2014-03-18 17:37, Kevin Tough wrote:
After reading 2.3.2 Aligning lyrics to a melody from the 2.18.2 manual
I still cannot seem to get my lyrics to extend over 2 notes. Am I
missing something or is there something missing from the documentation.
My Christmas sleigh should fill in the complete
On 2014-03-08 19:34, MING TSANG wrote:
Hi, Phil,
Thank you for your reply. I already have the in \layout{ } block and it
did not help.
Emmanuel,
Ming
On Saturday, March 8, 2014 12:44:43 PM, Phil Holmes
m...@philholmes.net wrote:
Possibly:
\context {
\Dynamics \RemoveEmptyStaves
}
If you
On 2014-02-05 00:07, SoundsFromSound wrote:
and...@andis59.se wrote
Also I think that Frescobaldi is printing as a raster 300 dpi (default)
so also when I print using Frescobaldi I get jagged hairpins. If I print
using Adobe Reader it looks perfect.
I've viewed the PDF in Sumatra, Acrobat
On 2014-02-04 17:14, SoundsFromSound wrote:
Am 04.02.2014 16:05, schrieb SoundsFromSound:
Sorry to confuse everyone. I must be doing something wrong when engraving
to
PDF via Frescobaldi (which is what I probably should have mentioned
earlier,
not LilyPond) and via Finale 2014 (when using
On 2014-01-30 09:57, Urs Liska wrote:
I wanted to get my hands on a volume of Clara Schumann's edition of
Robert Schumann's works. Unfortunately I realized that we don't have
this at all in my city.
Have you looked at IMSLP?
http://imslp.org/wiki/Category:Schumann,_Clara/Editor
// Anders
On 2014-01-27 12:29, David Kastrup wrote:
David Kastrup wrote
Uh, this is awkward, but you do know that the LilyPond distribution
comes with a program called lilymidi which you can use like
lilymidi --pretty somefile.midi
Ugh. Can we collect feedback on the various platforms? For me, stuff
On 2014-01-04 19:32, i...@soundand.com wrote:
I copy and pasted from the current manual (online) the piano template,
thinking that since my template didn't work the current manual would help.
But due to something I don't understand and can't locate because I don't
understand the piano won't
On 2013-12-02 18:11, Jason Yust wrote:
There seems to be an error in the manual (perhaps a hold over from older
version). I'm getting two problems on section 4.3.1 and elsewhere. This kind
of notation:
\override BarLine.stencil = ##f
gives me an error. I need to use
\override BarLine
On 2013-11-19 19:29, Ian Barclay wrote:
Thanks for your responses. The script you have provided looks like just
what I am looking for, but for some reason I am still getting a variety
of error messages about unexpected characters when I put it in my layout
block (all this does belong in the
On 2013-10-16 17:23, Janek Warchoł wrote:
2013/10/16 Phil Burfitt phil.burf...@talktalk.net:
In my current work flow, I have a .ly file of functions in a non lilypond
directory, which I \include in all of my scores. Is there a way to define a
path for include files in Frescobaldi, or do I have
On 2013-10-16 20:23, Urs Liska wrote:
and...@andis59.se and...@andis59.se schrieb:
On 2013-10-16 17:23, Janek Warchoł wrote:
2013/10/16 Phil Burfitt phil.burf...@talktalk.net:
In my current work flow, I have a .ly file of functions in a non
lilypond
directory, which I \include in all
On 2013-10-09 22:19, Раул Апонт wrote:
Hello.
I need just a little help about a tablature. I know already how to get a
tablature with LilyPond, the situation I have now is about a Bass Guitar
tablature. I have tried to change the clef using the Bass clef, I still
get a six-string tablature, I
Initializing FontConfig...
Adding font directory:
C:/Program Files/LilyPond/usr/share/lilypond/current/fonts/otf
Building font database...^C
Maybe a stupid question but...
Has the directory above been created?
One of the problems with Vista is the UAC and you need to have
sufficient rights to
On 2013-07-08 12:53, MING TSANG wrote:
Hi lilyponders,
Initially I run the attached .ly with lilypond v2.16.2, it compile ok
--- refer to (#B)
Then I change version# to v2.17.0 and the compile failed with return
code 3 ---refer to (#A)
Any help is appreciated. I use frescobaldi
On 2013-06-28 21:45, David Kastrup wrote:
Tim Roberts t...@probo.com writes:
I have a score I did some time in the previous century in Passport
Rhapsody. Now, I need to make some changes. I cannot find out a way to
read these files. Is anyone here aware of any path to get from
Rhapsody to
On 2013-06-05 04:26, Jonathan wrote:
I am interested in making a Lilypond syntax highlighter for Notepad++.
Here is one way of using Notepad++ and Lilypond and SumatraPDF
http://www.hochstrasser.org/wiki/pmwiki.php/CoolSoftware/NPPLilyPond
and the actual syntax highlighter file is here
On 2013-05-13 07:44, Sarah k Alawami wrote:
Hello to the list.
I notice that some of my grace notes are also causing the bar check errors
Just a reminder:
Grace notes are musical ornaments, printed in a smaller font, that take
up no additional logical time in a measure.
// Anders
--
On 2013-05-11 11:27, Federico Bruni wrote:
2013/5/11 Peter Toye lilyp...@ptoye.com mailto:lilyp...@ptoye.com
When I try to use the %e format to get rid of leading zeros in the
date, lilypond crashes out.
\header {
title = title
composer = no-one
tagline =
On 2013-05-01 05:47, Sarah k Alawami wrote:
Is there an easier way to make the midi block with out remembering too much?
lol!
Don't you need a \score ?
If I add \score { before {\relative c,,
and add \midi{} } last in the file I get a midi file.
I attach the changed file. NB! I'm using
On 2013-04-23 09:47, Urs Liska wrote:
Thank you, basically that's exactly what I need for my presentation ;-)
But may I ask you to send me two more/different Finale files with the
following content?
If you want you can download Finale Notepad for free. It reads/writes
finale files.
In the code below I will get a chord name = C 9 13
How do I get a C13 chord name without the 9?
% ---
\version 2.17.13
chordNames = \chordmode { c1:13}
\score {
\new ChordNames \chordNames
\new Staff { \chordNames }
}
%
// Anders
--
English isn't my first
On 2013-03-22 11:04, Eluze wrote:
and...@andis59.se wrote
In the code below I will get a chord name = C 9 13
How do I get a C13 chord name without the 9?
c:13^7.9
Eluze
Thank you Eluze!
It took a while for me to understand how to write this, since my email
program (Thunderbird
On 2013-03-12 04:46, Sarah k Alawami wrote:
I decided to change threads to make the list archives more clean *smiles* Ok. now that I
have the bar checks sorted at least for these 4 measures and Ill stop there for
tonight, how do I render it as a midi so I can hear if Im right int he octaves or
On 2012-08-26 23:17, Marc Hohl wrote:
In nearly every case, it is wise to insert bar checks |, then one finds
very quickly that
A very good advice! I added the bar checks and withing 10 seconds I
discovered the problem!
Thank you very much!
// Anders
--
English isn't my first
Hello,
I'm trying to create a lilypond file that will output this:
http://www.davidoakesguitar.com/pdf/Etude_1.pdf
But I just don't get it!
I have this .ly file which contains part of the score, but I struggle
with the repeats and the changing of \time
%--- Beginning of ly file
\version
I have made a small function that allows me to put out the fret number
(of a guitar) below a note. My problem is that the text is positioned
below the note at a specific distance. Which means that if the note is
high on the staff the text will be high and if the note is low on the
staff it
On 2012-08-02 17:18, Thomas Morley wrote:
2012/8/2 and...@andis59.se and...@andis59.se:
I'm using the scheme function \addFingering to add string numbers to a music
part.
You could call the function below in \melody
(I named it \xy. You may want to change this uninspired term.) :)
xy
On 2012-08-02 17:08, -Eluze wrote:
I think you have to use another font,
e.g.
\override StringNumber #'font-name = Garamond bold
and override the size to your needs: \override StringNumber #'font-size =
#-1
hth
Eluze
I can't get this to work!
Where should I put the overrides?
//
On 2012-08-02 17:34, and...@andis59.se wrote:
On 2012-08-02 17:08, -Eluze wrote:
I think you have to use another font,
e.g.
\override StringNumber #'font-name = Garamond bold
and override the size to your needs: \override StringNumber
#'font-size =
#-1
hth
Eluze
I can't get
On 2012-08-02 17:33, and...@andis59.se wrote:
On 2012-08-02 17:18, Thomas Morley wrote:
2012/8/2 and...@andis59.se and...@andis59.se:
I'm using the scheme function \addFingering to add string numbers to
a music
part.
You could call the function below in \melody
(I named it \xy. You may want
On 2012-08-02 18:46, Thomas Morley wrote:
fN =
#(define-music-function (parser location fretp) (string?)
(let ((m (make-music 'TextScriptEvent 'text fretp)))
(set! (ly:music-property m 'tweaks)
(acons 'staff-padding 4 (ly:music-property m 'tweaks)))
m))
Hello
On 2012-08-02 20:24, David Kastrup wrote:
Ah, version 2.14.2. In a current version, you could just write
I thought that version 2.14.2 was the current version!?
That is what it says on the web site. Stable version
// Anders
--
English isn't my first language.
So any error or strangeness is
On 2012-07-04 11:58, Francisco Vila wrote:
http://translationproject.org/domain/lilypond.html shows that Swedish
language was once supported but it was a one-time translation that has
not been maintained since v1.7
It would be fine if you or anybody else takes the challenge. All users
in your
I thinking about translating Lilypond to Swedish.
I have downloaded the last Swedish translation file:
lilypond-2.15.37.1.sv.po (which is for Lilypond 1.7.29...)
and also the current one: lilypond-2.15.37.1.pot
In the .pot file there are word that shouldn't be translated. E. g.
\\header { key
When I compile a .ly file I get messages in multiple languages (English
and Swedish)
Is there some setting to make it only one language?
E. g.
GNU LilyPond 2.14.2
Processing `C:/Users/ame/Documents/My Data/D Minor.ly'
Tolkar...
Interpreting music... [8]
Förbehandlar grafiska objekt...
On 2012-07-03 20:48, -Eluze wrote:
and...@andis59.se wrote:
When I compile a .ly file I get messages in multiple languages (English
and Swedish)
Is there some setting to make it only one language?
usually you set the environment variable LANG to the wanted language (don't
know your OS
On 2012-06-24 05:43, David Kastrup wrote:
Because it is a rehearsal mark rather than a text script?
This makes sense! I tried to use TextScript but it didn't work.
fN = #(define-music-function (parser location fretp ) (string?)
#{
\once \override TextScript #'self-alignment-X =
On 2012-06-24 11:19, David Kastrup wrote:
You make overrides for a TextScript but still use a mark here.
I see what your are saying, but ...
In my function I need a command?
\mark is the only one I have found that output a text, but obviously
it's not the correct command!
So what is the
On 2012-06-24 11:48, -Eluze wrote:
this snippet might be of interest for you:
http://lsr.dsi.unimi.it/LSR/Item?id=768 Eluze
Thank you very much!
It almost work as I want it! Just have to tweak it a bit...
// Anders
--
English isn't my first language.
So any error or strangeness is due to
On 2012-06-24 12:36, David Kastrup wrote:
Thunderbird does not really seem to like quoting code... This now was
a mixed HTML/plain text mail. The plain text version looked actually
fine, so it is not quite clear why you would need a combined mail just
to get the correct plain text version out.
On 2012-06-24 12:40, Thomas Morley wrote:
Try:
\version 2.14.2
fN =
#(define-music-function (parser location fretp) (string?)
(make-music
'TextScriptEvent
'direction
-1
'text
(markup #:line (#:box (#:italic fretp)
{
c' e' g' _\markup {
On 2012-06-23 21:05, Nick Baskin wrote:
Anders,
It looks like you're using a GMail address; in my experience, GMail
generally doesn't like to show messages you send to a list in your
inbox. I think it's operating under the assumption that you, the
sender, don't need to read the e-mail that
On 2012-06-23 21:39, David Kastrup wrote:
URL:http://lilypond.org/doc/v2.15/Documentation/notation/visibility-of-objects#using-break_002dvisibility
I can't figure this out. I have tried all permutations of the vector
format but it still displays the KeySignature at the last bar or each line
On 2012-06-23 22:28, David Kastrup wrote:
The visibility of such explicit key signature and clef changes is
controlled by the explicitKeySignatureVisibility and
explicitClefVisibility properties.
A really big THANK YOU!
I need to learn how to read the documentation...
// Anders
My main instrument is the Pedal Steel Guitar. One of the different
things about this instrument is that it has pedals that re-tune specific
strings.
I want to be able to add strings to my score.
This is close to the result I want, but it would be nice to use a
similar syntax as for string
I have just made my first Lilypond function!
but somehow it doesn't do what I want it to do...
The box with the number isn't located at the same position and it's a
bigger size.
WHY?
// Anders
%% Start of file
\version 2.14.2
fN = #(define-music-function (parser location fretp ) (string?)
87 matches
Mail list logo