Page 1 of 3 123 LastLast
Results 1 to 10 of 26

Thread: jackd, timidity werken alleen als root

  1. #1
    Join Date
    Jan 2009
    Location
    The Netherlands
    Posts
    370

    Default jackd, timidity werken alleen als root

    Beste mensen,

    Ik kan na lang (wekenlang) zoeken en proberen eindelijk rosegarden draaien met een combi van jackd en timidity. Maar alleen als ik eerst jackd en dan timidity beide als root laadt. Ik zoek een oplossing waarbij de commando's ook werken als user dit doet. Of als dat niet kan: jackd en timidity laten autostarten, zodat mijn vrouw rosegarden kan gebruiken zonder dat ze allerlei commando's in moet voeren als root.

    Mijn systeem: opensuse 11.3 met KDE 4.5.5, kernel 2.6.34.7 -desktop i686, AMD Athlon XP 1800+, RAM 1,5GiB.
    Ik boot met de desktopkernel, want die is ingesteld op realtime, zag ik toen ik de instellingen ging bekijken.

    Tevens heb ik in /etc/security/limits.conf staan:
    @audio - rtprio 90
    @audio - memlock 4000000
    (ik had ooit rtprio op 99 en memlock op unlimited staan, maar dat maakte geen verschil in het probleem).
    En alle users zijn lid van audio.

    Ik laad jackd als volgt:
    Code:
    sudo /usr/bin/jackd -R -dalsa -dhw:0 -r48000 -p1024 -n2
    root's password:
    jackdmp 1.9.5
    Copyright 2001-2005 Paul Davis and others.
    Copyright 2004-2009 Grame.
    jackdmp comes with ABSOLUTELY NO WARRANTY
    This is free software, and you are welcome to redistribute it
    under certain conditions; see the file COPYING for details
    JACK server starting in realtime mode with priority 10
    Engine profiling activated, beware 197 MBytes are needed to record profiling points...
    creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
    Using ALSA driver ENS1371 running on card 0 - Ensoniq AudioPCI ENS1371 at 0xec00, irq 18
    configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
    ALSA: final selected sample format for capture: 16bit little-endian
    ALSA: use 2 periods for capture
    ALSA: final selected sample format for playback: 16bit little-endian
    ALSA: use 2 periods for playback
    Daarna laad ik timidity als midiserver:
    Code:
    sudo timidity -iA
    sh: arts-start: opdracht niet gevonden
    jack_client_new: deprecated
    jack_client_new: deprecated
    TiMidity starting in ALSA server mode
    Opening sequencer port: 128:0 128:1 128:2 128:3
    Daarna start ik rosegarden, en kan ik midibestanden afspelen zonder enig probleem.

    Het idiote van het hele geval is dat als ik alleen (zonder jackd) timidity als gewone gebruiker start (dus: timidity -iA), dan kan ik windowsprogramma's Notation Player en Sweet Midi Player zonder enig probleem gebruiken onder wine (geluid ingesteld op alsa kunnen ze de timidity midi-poorten zien en gebruiken). En dat onder de pae kernel, niks te realtime of low latency gedoe, het werkt gewoon. Rosegarden doet het dan niet (speelt af zonder enig geluid, ondanks het feit dat alle instellingen goed staan).

    Ook het transgalactisch liftershandboek gaf geen uitkomst, dus daar sta ik dan met mijn handdoekje.

    Enige hulp wordt op prijs gesteld.
    How vivid is the letting go of knowledge, where experience ends.

    Desktop AMD A6-3650 APU with Radeon(tm) HD Graphics, Leap 42.1
    Laptop HP Compaq 6710b, 64-bit, openSUSE Tumbleweed

  2. #2
    Join Date
    Jan 2009
    Location
    The Netherlands
    Posts
    370

    Default Nog wat aanvullende opmerkingen

    Ik heb nog wat zaken vergeten.
    Waarom gebruik ik Rosegarden, om midi af te spelen? Ik zoek een programma waarbij het tijdens het afspelen mogelijk is de notenbalken te bekijken en de volumes per spoor aan te passen. Ik heb ook andere programma's bekeken, zoals lmms en qtractor maar die deden het niet en ik kon op internet geen oplossing vinden.

    Voor troubleshooting is het wellicht handig te weten wat er gebeurt als ik jackd en timidity laadt als gewone gebruiker:
    Code:
    /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2
    jackdmp 1.9.5
    Copyright 2001-2005 Paul Davis and others.
    Copyright 2004-2009 Grame.
    jackdmp comes with ABSOLUTELY NO WARRANTY
    This is free software, and you are welcome to redistribute it
    under certain conditions; see the file COPYING for details
    JACK server starting in realtime mode with priority 10
    Engine profiling activated, beware 197 MBytes are needed to record profiling points...
    creating alsa driver ... hw:0|hw:0|1024|2|48000|0|0|nomon|swmeter|-|32bit
    Using ALSA driver ENS1371 running on card 0 - Ensoniq AudioPCI ENS1371 at 0xec00, irq 18
    configuring for 48000Hz, period = 1024 frames (21.3 ms), buffer = 2 periods
    ALSA: final selected sample format for capture: 16bit little-endian
    ALSA: use 2 periods for capture
    ALSA: final selected sample format for playback: 16bit little-endian
    ALSA: use 2 periods for playback
    Dat ziet er dacht ik hetzelfde uit.

    Dan timidity als gewone gebruiker:
    Code:
    timidity -iA
    Requested buffer size 32768, fragment size 8192
    ALSA pcm 'default' set buffer size 32768, period size 8192 bytes
    TiMidity starting in ALSA server mode
    Opening sequencer port: 128:0 128:1 128:2 128:3
    Requested buffer size 32768, fragment size 8192
    ALSA pcm 'default' set buffer size 32768, period size 8192 bytes
    Hier is de output anders en Rosegarden speelt af zonder geluid (terwijl volumes goed staan en de timidity port 128:0 is geselecteerd). Ik weet echter niet wat ik hiervan moet maken.
    Als jullie dat willen, kan ik ook de output van Rosegarden geven, maar dat is een enorme lap tekst.

    groetjes,
    How vivid is the letting go of knowledge, where experience ends.

    Desktop AMD A6-3650 APU with Radeon(tm) HD Graphics, Leap 42.1
    Laptop HP Compaq 6710b, 64-bit, openSUSE Tumbleweed

  3. #3
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    24,890

    Default Re: Nog wat aanvullende opmerkingen

    Om te beginnen, ik ken geen van de programma's die je noemt en heb slechts een vaag idee van wat ze kunnen en wat je wilt bereiken.

    De naamgeving jackd doet mij vermoeden dat het hier om een daemon gaat. een daemon is een syteem process dat draait gedurende de gehele keventijd van het systeem (van boot tot shutdown). Daemons kunnen bijvoorbeeld services verlenen over het netwerk (denk aan Apache voor HTTP, svftpd voor FTP, sshd voor SSH), maar ook voor inwendige diensten. Ik heb het idee dat jouw jackd een dienst verleent voor gebruikers van je systeem.

    Nog steeds ervan uitgaande dat ik een beetje gelijk heb met mijn veronderstellingen, zo'n daemon wordt altijd gestart onder root. Anders kan niet iedere ingelogde gebruiker er gebruik van maken (hij kan na de start overigens wel zichzelf "verlagen" tot een gewone gebruiker uit veiligheidsoverwegingen, zo worden alle aktieve apache processen van wwwrun).. Zulke daemons worden natuurlijk niet met de hand gestart (behalve bij testen), maar als service bij boot in een bepaald runlevel (waarschijnlijk runlevel 5 in jouw geval).

    Dit starten gebeurt via een vrij ingewikkeld mechanisme in /etc/init.d.

    Als ik gelijk heb, kunnen we je helpen met zo'n start/stop script te maken, op de juiste plaats te zetten en te activeren.
    Henk van Velden

  4. #4
    Join Date
    Jan 2009
    Location
    The Netherlands
    Posts
    370

    Default Re: jackd, timidity werken alleen als root

    Als je dat wilt doen, stel ik dat op prijs. Ik heb op forums van fedora, ubuntu studio, etc. gezien hoe mensen dat regelen in /etc/init.d. Maar omdat ik dan niet weet wat ik aan het doen ben, heb ik er me niet aan gewaagd instellingen uit andere distro's over te nemen. Ook vraag ik me af of het echt noodzakelijk is, maar goed.
    Wat ik aan het doen ben, is ook een goede vraag. Midi onder linux aan de praat krijgen, en dat is niet eenvoudig. Op internet doen allerlei stappenplannen de ronde, die elkaar vaak tegenspreken. Ik kreeg uiteindelijk door dat mijn geluidskaart geen midi had en ik dus een "softsynth" nodig had om midi te emuleren. Ik heb er drie geprobeerd (fluidsynth, timidity, Zapnogwat) maar uiteindelijk kreeg ik alleen timidity werkend.
    Timidity is een midi sequencer, een bestandsconverter en een midi-server.
    Rosegarden is een midisequencer en een muziek compositie programma. De instructies op de website van dit programma volgend, kwam ik uiteindelijk op de combi van jack en timidity.

    bedankt voor je snelle reactie.
    How vivid is the letting go of knowledge, where experience ends.

    Desktop AMD A6-3650 APU with Radeon(tm) HD Graphics, Leap 42.1
    Laptop HP Compaq 6710b, 64-bit, openSUSE Tumbleweed

  5. #5
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    24,890

    Default Re: jackd, timidity werken alleen als root

    Die hele midi zaak zegt me weinig, maar daarom niet getreurd. We gaan proberen om die jackd als systeem daemon te draaien en dan kan je zelf zien of dat iets voor je oplost. Het feit dat in andere distributies ook zoiets gebeurt wijst erop dat ik goed heb gegokt.

    Het is misschien minder moeilijk dan je denk. Daar gaan we.

    In /etc/init.d staan de zogenaamde start/stop scripts. Die moeten aan bepaalde eisen voldoen. Bovendien staat er in deze scripts commentaar (regels die met een # beginnen) dat voor de shell (bash die het script interpreteert) wel commentaar is, maar het is echte informatie voor de installatie van het script. Om het makkelijk te maken is er een skelet /etc/init.d/skeleton. Die gaan we gebruiken. Je kunt het best eerst een kopie maken naar een plek bij je normale user. Noem de kopie jackd. Ik weet niet hoe goed je in engels bent en ook niet hoe goed in shell scripting, maar lees eerst even wat er in staat.

    Allereerst is het volgende stuk belangrijk:
    Code:
    ### BEGIN INIT INFO
    # Provides:          FOO
    # Required-Start:    $syslog $remote_fs
    # Should-Start:      $time ypbind smtp
    # Required-Stop:     $syslog $remote_fs
    # Should-Stop:       ypbind smtp
    # Default-Start:     3 5
    # Default-Stop:      0 1 2 6
    # Short-Description: FOO XYZ daemon providing ZYX
    # Description:       Start FOO to allow XY and provide YZ
    #       continued on second line by '#<TAB>'
    #       should contain enough info for the runlevel editor
    #       to give admin some idea what this service does and
    #       what it's needed for ...
    #       (The Short-Description should already be a good hint.)
    ### END INIT INFO
    Dit bepaalt straks wanneer jackd gestart/stopt wordt. Ik heb begrepen dat het door mensen die vanuit de GUI werken wordt gebruikt. Dann moet het lopen op runlevel 5. Een voorstel tot wijzigen door mij:
    Code:
    ### BEGIN INIT INFO
    # Provides:          jackd
    # Required-Start:    $ALL
    # Required-Stop:     $ALL
    # Default-Start:     5
    # Default-Stop:      0 1 2 3 6
    # Short-Description: jackd daemon voor midi
    # Description:       Start the jackd daemon om het gebruik van midi tralalala
    ### END INIT INFO
    Dan wordt het als laatste gestart op runlevel 5. En als eerste gestopt bij shutdown.
    Het commentaar is natturlijk jouw eigen tekst

    Volgende stuk:
    Code:
    # Check for missing binaries (stale symlinks should not happen)
    # Note: Special treatment of stop for LSB conformance
    FOO_BIN=/usr/sbin/FOO
    test -x $FOO_BIN || { echo "$FOO_BIN not installed";
            if [ "$1" = "stop" ]; then exit 0;
            else exit 5; fi; }
    test of de file er is. Dat wordt dus:
    Code:
    # Check for missing binaries (stale symlinks should not happen)
    # Note: Special treatment of stop for LSB conformance
    FOO_BIN=/usr/bin/jackd
    test -x $FOO_BIN || { echo "$FOO_BIN not installed";
            if [ "$1" = "stop" ]; then exit 0;
            else exit 5; fi; }
    (let op niet alleen jackd, maar ook bin ipv sbin, want daar heb je het kennelijk).
    Ik heb lang gedacht over het volgende:
    Code:
    # Check for existence of needed config file and read it
    FOO_CONFIG=/etc/sysconfig/FOO
    test -r $FOO_CONFIG || { echo "$FOO_CONFIG not existing";
           if [ "$1" = "stop" ]; then exit 0;
          else exit 6; fi; }
    
    # Read config
    . $FOO_CONFIG
    Je hebt geen configuratrie bestand dus dit geheel uitcommentarieren:
    Code:
    # Check for existence of needed config file and read it
    #FOO_CONFIG=/etc/sysconfig/FOO
    #test -r $FOO_CONFIG || { echo "$FOO_CONFIG not existing";
    #        if [ "$1" = "stop" ]; then exit 0;
    #        else exit 6; fi; }
    
    # Read config
    #. $FOO_CONFIG
    EDIT: Er komt meer, ik heb per ongeluk op verzenden gedrukt!
    Henk van Velden

  6. #6
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    24,890

    Default Re: jackd, timidity werken alleen als root

    We gaan weer verder.
    Ik drukte op Plaats bericht ipv preview. Dus moest nog corrigeren met Edit.

    Volgens mij zijn we er nu bijna. Kopieer het nieuwe script als root naar /etc/init.d.d/jackd. Let erop dat eigenaar en access bitjes net zo zijn als van de andere scripts daar -rw-r--r-- 1 root root.

    Dan ga je naar YaST > System > System services (Runlevel) en als het goed is staat jackd nu in het rijtje. Selecteer hem, klik activeren en als dat is gebeurd klik OK.

    Attentie: als je twijfelt, vraag eerst! Beter extra gevraagd dan systeem opgeblazen (hoewel het niet zo'n vaart zal lopen.

    Waarschijnlijk krijg je morgen pas antwoord (van mij, een ander kan natuurlijk ook helpen).
    Henk van Velden

  7. #7
    Join Date
    Jan 2009
    Location
    The Netherlands
    Posts
    370

    Default Re: jackd, timidity werken alleen als root

    Dat kan ik goed volgen en mijn engels is ook voldoende hiervoor, dus dat is mooi.
    Ik heb nu met behulp van het bestand skeleton een bestand jackd gemaakt en in /etc/init.d gezet.

    Maar tijdens het activeren in runlevel services meldt Yast:
    "/etc/init.d/jackd start retourneerde 7 (programma draait niet):"
    Het wordt niet geactiveerd.

    Als ik de opties -dalsa -dhw:0 -r48000 -p1024 -n2 achter FOO_BIN=/usr/bin/jackd zet in het script jackd, meld YAST tijdens het activeren in runlevel services:
    "/etc/init.d/jackd start retourneerde 2 (ongeldige of te veel argumenten):"
    Ook nu wordt het niet geactiveerd.

    Hoe kan ik jackd met de opties starten? Moet dat dan toch in een configuratiebestand?

    Zo ziet script jackd er nu uit, dus zonder opties na jackd op te nemen:
    Code:
    ### BEGIN INIT INFO
    # Provides:          jackd
    # Required-Start:    $ALL
    # Required-Stop:     $ALL
    # Default-Start:     5
    # Default-Stop:      0 1 2 3 6
    # Short-Description: jackd daemon voor midi
    # Description:       Start jackd als server voor midi van timidity
    ### END INIT INFO
    # 
    
    # Check for missing binaries (stale symlinks should not happen)
    # Note: Special treatment of stop for LSB conformance
    FOO_BIN=/usr/bin/jackd 
    test -x $FOO_BIN || { echo "$FOO_BIN not installed"; 
    	if [ "$1" = "stop" ]; then exit 0;
    	else exit 5; fi; }
    
    # Check for existence of needed config file and read it
    #FOO_CONFIG=/etc/sysconfig/FOO
    #test -r $FOO_CONFIG || { echo "$FOO_CONFIG not existing";
    #	if [ "$1" = "stop" ]; then exit 0;
    #	else exit 6; fi; }
    
    # Read config	
    #. $FOO_CONFIG
    Toch weer wat geleerd.

    groeten, Andr
    How vivid is the letting go of knowledge, where experience ends.

    Desktop AMD A6-3650 APU with Radeon(tm) HD Graphics, Leap 42.1
    Laptop HP Compaq 6710b, 64-bit, openSUSE Tumbleweed

  8. #8
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    24,890

    Default Re: jackd, timidity werken alleen als root

    Hoi Andr,

    Vannacht, toen ik me even omdraaide, bedacht ik dat ik die parameters was vergeten. Dat heb je dus ook bedacht. Volgens de beschrijving maakt het aantal parameters niet uit. Ook zie ik niet hoe we die door een config file kunnen veranderen want de config file levert alleen omgevingsvariabelen.

    Ik ga e.e.a. nog even rustig bekijken. We zijn wel op de goede weg (had je ooit gedacht dat je iets zou maken dat in YaST staat vermeld?), maar we zijn er nog niet helemaal.

    Ik kom terug.
    Henk van Velden

  9. #9
    Join Date
    Jun 2008
    Location
    Netherlands
    Posts
    24,890

    Default Re: jackd, timidity werken alleen als root

    Hallo Andr,

    Ik heb me bedacht. We kunnen hier de nodige inspanning in gaan leveren (en als je dat nof steeds wilt om te kijken hoe we het zo werkend kunnen krijgen ga ik met je mee), maar er is een eenvoudigere manier. Ook standaard, maar meer voor local zaken (en dat is dit).

    Dat wil zeggen dat je de twee files die je nu hebt in /etc/init.d en etc/sysconfig weer weghaalt (die eerste bewaar je natuurlijk voorlopig ergens).

    Daarvoor in de plaats maak je de file /etc/init.d/after.local met als inhoud:
    Code:
    /usr/bin/jackd -R -dalsa -dhw:0 -r48000 -p1024 -n2 &
    Let op de & aan het eind!
    Doe een reboot en kijk of het iets leuks doet.
    Henk van Velden

  10. #10
    Join Date
    Jan 2009
    Location
    The Netherlands
    Posts
    370

    Default after.local

    Ok, hoe eenvoudiger hoe beter lijkt me. Ik heb in bed ook mijn beste invallen.

    Ik heb nu een bestand after.local met daarin de regel jackd met parameters.
    En jackd start correct! Het werkt dus.
    Echter, nu heb ik wel een probleem met afsluiten. Jackd laat zich tijdens afsluiten van het systeem niet stoppen en belandt in een eindeloze loop van xruns en vruchteloze pogingen om daarvan te herstellen. Hierdoor sluit het systeem niet af.
    Er bestaat met jackd vast een parameter voor afsluiten van jackd, maar is er ook een magisch bestand waarin dat geautomatiseerd kan? Niet after.local, maar before.shutdown ofzoiets?

    Bovendien zou ik graag in after.local na het starten van jackd timidity gestart krijgen maar dat lukt niet. Hoezo niet veeleisend.

    Er staat nu in after.local:
    Code:
    /usr/bin/jackd -R -dalsa -dhw:0 -r48000 -p1024 -n2 &
    timidity -iA -Oj &
    Ik ben al heel wat verder nu!
    groetjes, Andr
    How vivid is the letting go of knowledge, where experience ends.

    Desktop AMD A6-3650 APU with Radeon(tm) HD Graphics, Leap 42.1
    Laptop HP Compaq 6710b, 64-bit, openSUSE Tumbleweed

Page 1 of 3 123 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •