2 sounds hintereinander

Alles rund um die Programmierung mit Qt Quick und QML
Antworten
dl8aax
Beiträge: 9
Registriert: 2. Januar 2017 17:59
Wohnort: Bei Göttingen
Kontaktdaten:

2 sounds hintereinander

Beitrag von dl8aax » 22. April 2017 21:39

Hi

wie kann ich Sounds hinter einander abspielen ?

mit SoundEffect und playSound.play() kann ich zwar einen Sound abspielen aber ich müsste dann warten bis der Sound zu ende ist um einen neuen abspielen zu können.

mfg Dirk

hilefoks
Beiträge: 141
Registriert: 13. März 2008 17:09

Re: 2 sounds hintereinander

Beitrag von hilefoks » 25. April 2017 10:13

Kannst du nich einfach mehrere SoundEffect-Instanzen verwenden?

Code: Alles auswählen

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
import QtMultimedia 5.8

ApplicationWindow {
    width: 300
    height: 200
    visible: true

    SoundEffect {
        id: se1
        source: "1.wav"

        onPlayingChanged: {
            if(!playing) {
                se2.play();
            }
        }
    }

    SoundEffect {
        id: se2
        source: "2.wav"
    }

    RowLayout {
        anchors.fill: parent
        Button { text: "1"; onClicked: se1.play(); }
        Button { text: "2"; onClicked: se2.play(); }
    }
}
Natürlich könntest du jetzt auch einen Timer starten sobald se1 startet und damit zeitversetzt se2 starten.

MfG
Hilefoks

dl8aax
Beiträge: 9
Registriert: 2. Januar 2017 17:59
Wohnort: Bei Göttingen
Kontaktdaten:

Re: 2 sounds hintereinander

Beitrag von dl8aax » 25. April 2017 19:12

Hi,

Danke für die Antwort.
Kannst du nich einfach mehrere SoundEffect-Instanzen verwenden?
Hmm.. darüber habe ich noch gar nicht nach gedacht.

Also ich möchte immer zur vollen Stunde Sounds abspielen. Sound1 wenn Checkbox ein Häkchen ist dann Sound2 abhängig von der Zeit (Stunde) und dann Sound3.

Alle Sounds nach einander.

mfg Dirk

dl8aax
Beiträge: 9
Registriert: 2. Januar 2017 17:59
Wohnort: Bei Göttingen
Kontaktdaten:

Re: 2 sounds hintereinander

Beitrag von dl8aax » 30. April 2017 05:25

Hi,

Irgendwie funzt das nicht so wie ich mir das vorgestellt habe. :(
Ich hänge mal das ganze Ding dran.
Es existiert für jede Stunde ein File. Z.B. 0.wav, 1.wav ... 12.wav usw.
Zusätzlich gibt es noch qtr.wav und d00.wav für die Minuten ':00'

Es soll also immer zur vollen Stunde die Zeit ausgegeben werden oder bei betätigen des Testbuttons.

Code: Alles auswählen

/******************************************************************************
**  cwclock ist ein Programm das zur vollen Stunde die Zeit in Morsezeichen  **
**  ausgibt. Je nach dem ob ein Häkchen gemacht wurde wird vor der Zeit der  **
**  Q-Schlüssel QTR gegeben.                                                 **
**  Z.B.  qtr 2:00 entsp.  qtr.wav, 2.wav,  d00.wav                          **
**  oder      2:00 entsp.  2.wav,  d00.wav                                   **
**                                                                           **
**  (c) Dirk Unverzagt, DL8AAX                                               **
**                                                                           **
**  http://www.modellbau-yodi.de/aax/                                        **
*******************************************************************************/
import QtQuick 2.4
import Ubuntu.Components 1.3
import QtMultimedia 5.6
import QtQuick.Controls 1.4
import QtQuick.Extras 1.4
import QtQuick.Window 2.2


MainView {
          objectName: "mainView"
          applicationName: "cwclock.dl8aax" // Note! applicationName needs to match the "name" field of the click manifest
          width: units.gu(45)
          height: units.gu(60)
          backgroundColor: "#ff0cdd"

          property string cwfile
          property string pf
          property string neustd
          property string altstd

    SoundEffect {
                 id: playSound
                 onPlayingChanged: {
                                    console.log("playfile:"+playSound.source)
                                     if(!playing) {
                                                    console.log("spielt nix")

                                                    if(pf="qtr"){// qtr ist gegeben also Stunde geben
                                                                if(!playing) {
                                                                                console.log("pf=qtr")
                                                                                playSound.source=cwfile
                                                                                playSound.play()
                                                                                pf="cwstd"
                                                                             }
                                                                }
                                                    if(pf="cwstd"){// Stunde ist gegeben also ':00' geben
                                                                   if(!playing) {
                                                                                 console.log("pf=cwstd")

                                                                                 playSound.source="d00.wav"
                                                                                 playSound.play()
                                                                                 pf=""
                                                                                }
                                                                  }
                                                  }
                                    }//onPlayingChanged
                }//SoundEffect

    function onoff(){
            if (button2.checked==true ) {
                                  timer1.start()
                                  button2.text = qsTr("Aus")
                                }
            else   {
                    timer1.stop()
                    button2.text = qsTr("Ein")
                   }
         }

    function morsema(){
                        var d = new Date();
                        cwfile=d.getHours()+".wav"
                        if (checkBox1.checked==true){
                                                        playSound.source="qtr.wav"
                                                        pf="qtr"

                                                    }
                        else {
                                pf="cwstd"
                                playSound.source=cwfile
                             }
                        playSound.play()
                      }//morsema

    Page {
          title: "CWClock"
          antialiasing: true
          header: PageHeader {
                              id: pageHeader
                              title: i18n.tr("cwclock")
                              StyleHints {
                                            foregroundColor: UbuntuColors.orange
                                            backgroundColor: UbuntuColors.porcelain
                                            dividerColor: UbuntuColors.slate
                                         }
                              }


          Button {
                  id: testbutton
                  width: 100
                  text: "Test"
                  objectName: "button"
                  anchors {
                           horizontalCenter: parent.horizontalCenter
                           top: label.bottom
                          }
                  anchors.horizontalCenterOffset: 122
                  anchors.topMargin: 6
                  onClicked: {
                              morsema()
                             }
                  }// button testbutton



        Timer {
               id: timer1
               interval: 1000
               repeat: true
               running: true
               onTriggered: {
                              text1.text = new Date().toLocaleTimeString("h:m:s")
                              neustd=new Date().toLocaleTimeString("h")
                              if(altstd != neustd){
                                                   morsema()
                                                   altstd=new Date().toLocaleTimeString("h")
                                                  }
                            }
                 }//timer




        Label {
               id: label
               width: 333
               height: 19
               text: "CW Uhr"
               objectName: "label"
               anchors {
                        horizontalCenter: parent.horizontalCenter
                        top: pageHeader.bottom
                       }

               anchors.horizontalCenterOffset: 1
               anchors.topMargin: 22
             }



        Text {
              id: text1
              x: 14
              y: 80
              width: 338
              height: 65
              color: "#010162"
              text: qsTr("00:00:00")
              styleColor: "#5d81fd"
              font.italic: true
              font.bold: true
              style: Text.Sunken
              font.family: "Tahoma"
              horizontalAlignment: Text.AlignHCenter
              font.pixelSize: 47
              anchors {
                        horizontalCenter: parent.horizontalCenter
                        top: testbutton.bottom
                      }
             }//text1

        CheckBox {
                  id: checkBox1
                  x: 14
                  y: 159
                  text: qsTr("mit Text QTR")
                  anchors.horizontalCenterOffset: -113
                  checked: true
                  anchors {
                           horizontalCenter: parent.horizontalCenter
                           top: text1.bottom
                           topMargin: 6
                          }
                 } //checkBox1

        Button {
                id: button1
                x: 14
                y: 227
                width: 338
                height: 27
                text: qsTr("Programm beenden")
                checkable: false
                onClicked: {
                            Qt.quit()
                           }
               }

        Button {
                id: button2
                x: 14
                y: 47
                text: qsTr("Aus")
                anchors.horizontalCenterOffset: -123
                checked: true
                checkable: true
                onClicked:{
                           onoff()
                          }
                anchors {
                         horizontalCenter: parent.horizontalCenter
                         top: label.bottom
                         topMargin: 6
                        }

               }//button2
    }// Page
}//MainView




Antworten