Results 1 to 11 of 11

Thread: Timeline component

  1. #1

    Timeline component

    Hallo!

    Lange tijd geleden heb ik veel met Delphi gedaan maar ben er een tijd uit geweest. Helaas ben ik, in tegenstelling tot fietsen, Delphi wat verleerd en moet weer een beetje in komen.

    Voor een grote carnavalsoptocht bij ons in het dorp ben ik een controller aan het bouwen die alle verlichting, rookmachines en muziek aan moet sturen. De controller, die via de USB poort werkt, werkt al perfect en dat deel van de applicatie is dan ook af.

    Nu wil ik alleen nog bepaalde dingen op de muziek laten werken. Op internet ben ik een grandioze applicatie tegen gekomen maar die werkt helaas niet op het printplaatje dat ik heb gemaakt. Om die reden wil ik dit graag nabouwen maar kan geen timeline component vinden die in de buurt komt.

    Hier het document van de applicatie: http://www.brookshiresoftware.com/download/gsvsa4.pdf

    Mijn vraag is wat ik nodig heb om die timeline in elkaar te zetten met de blokjes. Het idee is dat ik een MP3 inlaadt en aan de hand van een INI of XML aanstuur welke relais op het printje aan moet gaat en tot welke tijd.

    Ik hoop dat iemand mij, de groep en 50.000 toeschouwers een heel groot plezier wil doen om te helpen .

  2. #2
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  3. #3
    Ik begrijp nog niet helemaal wat de MP3's en de relais met de timeline te maken hebben Maar JVCL heeft een jvTimeLine en een JvTMTimeLine component, beiden komen volgens mij aardig in de buurt van wat je zoekt.
    Marcel

  4. #4
    Ik neem aan dat er dus licht en andere effecten samen met muziek mee moeten lopen.
    Houd er dan rekening mee dat Windows niet gegarandeerd exact op een bepaalde tijdsbasis zijn berichten uit stuurt. Hier kunnen kleine vertragingen tussen zitten omdat er mogelijk "belangrijkere" taken van Windows zelf tussendoor komen. Dus synchroniseren < 1 sec. kan ,in sommige gevallen, al lastig worden.

    Het kan ook anders, maar ik weet niet hoe "high-tech" je printje is. Er kan een timeline naar je printje wordt gestuurt. Als hier een interne klok op meeloopt en dat deze dan zelf op het juiste moment de gehele timeline doorloopt. Maar zelfs dan zul je nog problemen ondervinden om het exact synchroon te laten lopen.

    Wanneer kleine verschuivingen van effecten ten opzichte van de muziek geen probleem zijn, dan hoef je je hier uiteraard niet druk om te maken en is het huidige plan afdoende
    I don't byte, I just nibble a bit.

  5. #5
    Senior Member
    Join Date
    Jul 2005
    Location
    Te mooi om waar te zijn..........
    Posts
    916
    Misschien heb je hier wat aan. Met de TMediaPLayer kun je MP3tjes inlezen en met de prop. Length weet je de tijd in milliesec. Deze tijd kun je naar een timer van je relais sturen zodat je weet wanneer die aan of uit moet schakelen.

    Code:
    1. //inlezen MP3 file
    2. MediaPLayer1.FileName := 'C:\Muziek\Abba.mps';
    3. //tijdsduur
    4. MediaPLayer1.Open;
    5. Tijd := MediaPLayer1.Length;

  6. #6
    Quote Originally Posted by Demandred View Post
    Ik neem aan dat er dus licht en andere effecten samen met muziek mee moeten lopen.
    Houd er dan rekening mee dat Windows niet gegarandeerd exact op een bepaalde tijdsbasis zijn berichten uit stuurt. Hier kunnen kleine vertragingen tussen zitten omdat er mogelijk "belangrijkere" taken van Windows zelf tussendoor komen. Dus synchroniseren < 1 sec. kan ,in sommige gevallen, al lastig worden.
    Het gebruik van een zgn. HighRes Timer kan hier nog wel een en ander aan verbeteren.
    Zijn ook Delphi componenten voor te vinden.

  7. #7
    Klopt. Dat kan de tijdsbasis van je programma zeker verbeteren, maar het geeft nog steeds geen garantie wanneer Windows je berichten verstuurd (in dit geval via USB). Meestal zal het geen problemen veroorzaken, omdat met USB toch met gemak zo'n 40 berichten per seconden gehaald kan worden.

    Maar als Windows de kolder in z'n kop krijgt en vind dat iets anders voorrang krijgt boven de USB communcatie, dan heb je als gebruiker gewoon pech en loop je vertragingen op.

    Daar zijn we bij ons op het werk ook al meerdere keren tegenaan gelopen met tijd-critische toepassingen.
    I don't byte, I just nibble a bit.

  8. #8
    Senior Member Mark-io's Avatar
    Join Date
    Apr 2006
    Location
    midden vh land
    Posts
    254
    Het gebruik van een zgn. HighRes Timer kan hier nog wel een en ander aan verbeteren.
    een beetje ja maar niet echt veel... als je met gesynchroniseerde audio en/of midi aan de slag moet loop je heel snel tegen problemen aan. Muis bewegen? vertraging!

    volgens mij werken prof. sequencer pakketten ook allemaal met low-level drivers omdat het op applicatie level gewoon niet lukt om strak in de maat te blijven lopen. ik probeer al jaren om dit probleem op een andere manier te omzeilen maar ben er nog steeds niet uit.
    Actually, there is something more dangerous than a little knowledge: a lot of ignorance.

  9. #9
    Hallo!

    Het script wat ik gemaakt heb is bijna af en moet alleen nog de .ini uitlezen op de timer en daarmee de signalen naar de USB poort sturen.

    Zoals eerder vermeld zijn mijn Delphi skillz nog niet helemaal optimaal en het is lange tijd terug dat ik daarover ook een boek heb gelezen. Ik kan wat dingen aan elkaar knopen en als iedereen er vanaf blijft, blijft het meestal nog werken ook .

    De source valt hier te downloaden: noot app.rar

    Omdat ik het (nog) niet zo goed beheers en toch zometeen 50.000 man de optocht komt kijken, wil ik vragen of iemand misschien kan kijken of het script stabiel genoeg is of eventueel geoptimaliseerd kan worden op bepaalde punten.

    Hij schrijft nu van alle kanalen (8 relais) de tijden en tijdsduur op vanaf wanneer de verlichting moet branden en tot wanneer. Zodra men op "record" drukt kan door op de toetsen van het toetsenbord te drukken de verlichting aangestuurd worden. Omdat het toch veel records zijn betwijfel ik of ini wel de juiste keuze is?

    Verder wil ik nog weten hoe ik de gearceerde blokjes kan verplaatsen met de muis (eventueel verkleinen, vergroten of verschuiven). Het is geen must maar voor het instellen van de procedures super handig.

    Ik hoop dat iemand me kan of wil helpen! Alvast heel erg bedankt!

  10. #10
    Senior Member Lodewijk's Avatar
    Join Date
    Apr 2004
    Location
    Netherlands
    Posts
    1,934
    1. Als ik op COM1 laat staan en op Connect druk, wordt hij groen, terwijl ik niets achter COM1 heb hangen?
    2. Je kan zelf een COM-port intikken, dus er is geen auto-detectie van welke COM poorten er zijn?
    3. De Mediaplayer knoppen doen niet wat ze moeten, ik kan een nummer bijv niet stoppen (dan pauzeert die alleen maar)
    4. Als ik pauze druk en dan play, duurt het een seconde of twee voor de tijdbalk weer mee begint te schuiven (bij stop is dit niet het geval)
    5. Je variablen zijn zo een stuk netter (array had ook nog gekund)

    Delphi Code:
    1. var
    2.   Form1: TForm1;
    3.   CheckStatus1, CheckStatus2, CheckStatus3, CheckStatus4, CheckStatus5,
    4.   CheckStatus6, CheckStatus7, CheckStatus8: boolean;
    5.  
    6.   ToetsStatus1: string;
    7.  
    8.   ToetsStatus2, ToetsStatus3, ToetsStatus4, ToetsStatus5, ToetsStatus6,
    9.   ToetsStatus7, ToetsStatus8: boolean;
    10.  
    11.   RecordMP3: boolean;
    12.  
    13.   IniFile : TIniFile;
    14.   IniName : string;

    6: Je hebt geen zelfgemaakte BrowseDialog nodig, we hebben SelectDirectory hiervoor.

    Quote Originally Posted by SpaceCow View Post
    Hij schrijft nu van alle kanalen (8 relais) de tijden en tijdsduur op vanaf wanneer de verlichting moet branden en tot wanneer. Zodra men op "record" drukt kan door op de toetsen van het toetsenbord te drukken de verlichting aangestuurd worden. Omdat het toch veel records zijn betwijfel ik of ini wel de juiste keuze is?
    Ik heb de rest van het topic niet gevolgd, maar wat bedoel je met records; type MyRec = Record of bedoel je al die keren dat men op "record" drukt? Ik zie geen van beide in je programma (geen record-types en geen record knop of iets wat erop lijkt)


    Quote Originally Posted by SpaceCow View Post
    Verder wil ik nog weten hoe ik de gearceerde blokjes kan verplaatsen met de muis (eventueel verkleinen, vergroten of verschuiven). Het is geen must maar voor het instellen van de procedures super handig.
    Drag&Drop zou je dat denk ik mee moeten doen, en voor het vergroten/verkleinen zou je twee borders kunnen toevoegen aan die balken en die schuifbaar maken.
    Last edited by Lodewijk; 18-Jan-09 at 00:42.

  11. #11
    Senior Member Ruud123's Avatar
    Join Date
    Sep 2007
    Location
    Leerdam
    Posts
    536
    Waarom eigenlijk 8 timers die allemaal hetzelfde doen?
    Mijnsinziens kan hetzelfde met één timer bereikt worden!
    (Alle code die de relais aanstuurt kan dan in deze ene timer.)

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Tags for this Thread

Bookmarks

Posting Permissions

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