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
ei toimi! mulla on VB3
nyt toimii! mulla on VB6
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-
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.
Lataa tiedoston, mutta ei soita sitä!
mitä tohon Tiedosto pitää laittaa, pitääkö siihen laittaa sen midi tiedoston nimi?
ei toimi, (VB6) mutta vika on kyllä varmasti minussa, en vain osaa syöttää sitä (ehkä) kunnolla
Voiko joku pistää valmiin projektin jossa tuo toimisi?
Itse en saanut toimaan..
Voisitko Antti ystävällisesti lisää koodivinkkiin ominaisuuden, joka yhden soitetun midi:n jälkeen osaa jatkaa soittamalla seuraavaa midiä jne.
Kiitos.
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
Oiskohan tää eka koodivinkkki? :)