Kirjautuminen

Haku

Tehtävät

Koodit: VB6: MIDI-tiedoston soittaminen

Kirjoittaja: Antti Laaksonen

Kirjoitettu: 09.01.2002 – 22.11.2011

Tagit: ääni, koodi näytille, vinkki

MIDI-tiedoston soittaminen on hieman WAV-tiedoston soittamista haastavampi juttu, mutta sekin onnistuu helposti API-käskyllä mciSendString, joka ohjaa MIDI-soitinta. Käskyt ovat tavallista englantia, ja ne ovat hyvin selkeitä. Muista parametreista ei kannata huolehtia, sillä niitä käytetään vain erikoistilanteissa.

Ensin soitettava tiedosto on avattava. Tämä tapahtuu open-käskyllä ja samalla valitaan myös tiedoston tyyppi eli sequencer ja annetaan tunnus, jolla soittoa voidaan kontrolloida myöhemmin.

Kun tiedosto on avattu, sen soittamisen voi aloittaa play-komennolla, jolloin on annettava aiemmin määritelty tunnus. Lopuksi on vielä kutsuttava close käskyä saman aliaksen kanssa, jottei tiedosto jää "lukkoon".

Moduuli

Public Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" (ByVal lpstrCommand As String, ByVal lpstrReturnString As String, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Sub SoitaMIDI(tiedosto As String, tunnus As String)
    Dim x As Long
    x = mciSendString("open " + tiedosto + " type sequencer alias " + tunnus, 0&, 0, 0)
    x = mciSendString("play " + tunnus, 0&, 0, 0)
End Sub

Sub SuljeMIDI(tunnus As String)
    Dim x As Long
    x = mciSendString("close " + tunnus, 0&, 0, 0)
End Sub

Formi

Private Sub Form_Load()
    SoitaMIDI "(MIDIn nimi tähän).mid", "biisi"
End Sub

Private Sub Form_Unload(Cancel As Integer)
    SuljeMIDI "biisi"
End Sub

Kommentit

Jaakko [22.04.2002 18:11:57]

#

ei toimi! mulla on VB3

Jaakko [01.11.2002 22:28:51]

#

nyt toimii! mulla on VB6

InvalidCo [20.05.2003 14:18:30]

#

Ei toimi! VB6-väittää että tietynlaiset muuttujat eivät voi toimia Publicina, kun koetin laittaa ton MciSendString SuljeMIDI ja SoitaMIDI subeihin privatena, niin

jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti jäkäti etc.

-PC-Master-

jcd3nton [19.06.2003 10:19:13]

#

Ihan helppoo se on midejä soittaa, kun ottaa sieltä kontrolli listasta(Mistä saa toolboxiin lisää kaikkee sekä mm. DirectX tuen) joku olikohan se multimedia control tai mmcontrol tai microsoft multimedia control... sitte siihe piti muistaakseni pistää että soitetaanko wav, mid, avi vai mikä, ja tiedoston nimi vaa sinne. Sitku painaa play ni se soittaa sen. iha iisii, eikä tarvii muistaakseni koodata ku rivin tai jotai.

ossi.heino1991 [26.09.2003 17:25:47]

#

Lataa tiedoston, mutta ei soita sitä!

tekojalka [04.01.2004 22:58:20]

#

mitä tohon Tiedosto pitää laittaa, pitääkö siihen laittaa sen midi tiedoston nimi?

mamaze [16.02.2004 16:05:55]

#

ei toimi, (VB6) mutta vika on kyllä varmasti minussa, en vain osaa syöttää sitä (ehkä) kunnolla

tuomas [13.04.2004 15:00:20]

#

Voiko joku pistää valmiin projektin jossa tuo toimisi?
Itse en saanut toimaan..

Tony.Rasmus [14.06.2004 16:31:08]

#

Voisitko Antti ystävällisesti lisää koodivinkkiin ominaisuuden, joka yhden soitetun midi:n jälkeen osaa jatkaa soittamalla seuraavaa midiä jne.

Kiitos.

Puhveli [08.01.2005 18:32:51]

#

ei mullakaan kuulu mitään. käytän vb5cce:tä. onkos muuten mitään millä saa tietää soiko midi vielä? entä ikuinen soitto?

edit: aha, no nysselvis. mulla on kaks asemaa, toinen on semmosella kovolla että vaan wintoosa tunnistaa sen, biosi ei tiedä siitä mitään. kun laitoin midin soimaan asemalta joka on vanhalla kovolla jonka kanssa ei ole mitään onkelmaa, midi jyrähtää soimaan ihan mukavasti. molempien tiijostojärjestelmä on ntfs

moptim [10.02.2007 11:34:02]

#

Oiskohan tää eka koodivinkkki? :)

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta