hinekure.net が http://hspdev-wiki.net/ から自動クローリングした結果を表示しています。画像やリソースなどのリンクが切れています。予めご了承ください。
MusicVillage - HSP開発wiki
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS

HspPlugin

MusicVillage

ドリームROMさんが公開されているDLL。RPGツクール2000シリーズに準拠した、MIDI完全無限ループ再生が可能になります。

注意事項

  • 必ずReadmeを読み、使用条規に従ってください。
    • このヘッダファイルはellerがドリームROMさんに公開許可をいただいてます。
  • 「HSPでどうやって使えばいいのか分からない」などの質問は作者であるドリームROMさんにはしないでください。
  • 一部、float型変数の使用が必要な場合があります。

ヘッダファイル

「MVillage.as」という名前でcommonディレクトリ内に保存してください。ワンキーヘルプにも対応しています。

fileMVillage20080706.as
Everything is expanded.Everything is shortened.
   1
   2
   3
   4
   5
   6
   7
   8
   9
  10
  11
  12
  13
  14
  15
  16
  17
  18
  19
  20
  21
  22
  23
  24
  25
  26
  27
  28
  29
  30
  31
  32
  33
  34
  35
  36
  37
  38
  39
  40
  41
  42
  43
  44
  45
  46
  47
  48
  49
  50
  51
  52
  53
  54
  55
  56
  57
  58
  59
  60
  61
  62
  63
  64
  65
  66
  67
  68
  69
  70
  71
  72
  73
  74
  75
  76
  77
  78
  79
  80
  81
  82
  83
  84
  85
  86
  87
  88
  89
  90
  91
  92
  93
  94
  95
  96
  97
  98
  99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 146
 147
 148
 149
 150
 151
 152
 153
 154
 155
 156
 157
 158
 159
 160
 161
 162
 163
 164
 165
 166
 167
 168
 169
 170
 171
 172
 173
 174
 175
 176
 177
 178
 179
 180
 181
 182
 183
 184
 185
 186
 187
 188
 189
 190
 191
 192
 193
 194
 195
 196
 197
 198
 199
 200
 201
 202
 203
 204
 205
 206
 207
 208
 209
 210
 211
 212
 213
 214
 215
 216
 217
 218
 219
 220
 221
 222
 223
 224
 225
 226
 227
 228
 229
 230
 231
 232
 233
 234
 235
 236
 237
 238
 239
 240
 241
 242
 243
 244
 245
 246
 247
 248
 249
 250
 251
 252
 253
 254
 255
 256
 257
 258
 259
 260
 261
 262
 263
 264
 265
 266
 267
 268
 269
 270
 271
 272
 273
 274
 275
 276
 277
 278
 279
 280
 281
 282
 283
 284
 285
 286
 287
 288
 289
 290
 291
 292
 293
 294
 295
 296
 297
 298
 299
 300
 301
 302
 303
 304
 305
 306
 307
 308
 309
 310
 311
 312
 313
 314
 315
 316
 317
 318
 319
 320
 321
 322
 323
 324
 325
 326
 327
 328
 329
 330
 331
 332
 333
 334
 335
 336
 337
 338
 339
 340
 341
 342
 343
 344
 345
 346
 347
 348
 349
 350
 351
 352
 353
 354
 355
 356
 357
 358
 359
 360
 361
 362
 363
 364
 365
 366
 367
 368
 369
 370
 371
 372
 373
 374
 375
 376
 377
 378
 379
 380
 381
 382
 383
 384
 385
 386
 387
 388
 389
 390
 391
 392
 393
 394
 395
 396
 397
 398
 399
 400
 401
 402
 403
 404
 405
 406
 407
 408
 409
 410
 411
 412
 413
 414
 415
 416
 417
 418
 419
 420
 421
 422
 423
 424
 425
 426
 427
 428
 429
 430
 431
 432
 433
 434
 435
 436
 437
 438
 439
 440
 441
 442
 443
 444
 445
 446
 447
 448
 449
 450
 451
 452
 453
 454
 455
 456
 457
 458
 459
 460
 461
 462
 463
 464
 465
 466
 467
 468
 469
 470
 471
 472
 473
 474
 475
 476
 477
 478
 479
 480
 481
 482
 483
 484
 485
 486
 487
 488
 489
 490
 491
 492
 493
 494
 495
 496
 497
 498
 499
 500
 501
 502
 503
 504
 505
 506
 507
 508
 509
 510
 511
 512
 513
 514
 515
 516
 517
 518
 519
 520
 521
 522
 523
 524
 525
 526
 527
 528
 529
 530
 531
 532
 533
 534
 535
 536
 537
 538
 539
 540
 541
 542
 543
 544
 545
 546
 547
 548
 549
 550
 551
 552
 553
 554
 555
 556
 557
 558
 559
 560
 561
 562
 563
 564
 565
 566
 567
 568
 569
 570
 571
 572
 573
 574
 575
 576
 577
 578
 579
 580
 581
 582
 583
 584
 585
 586
 587
 588
 589
 590
 591
 592
 593
 594
 595
 596
 597
 598
 599
 600
 601
 602
 603
 604
 605
 606
 607
 608
 609
 610
 611
 612
 613
 614
 615
 616
 617
 618
 619
 620
 621
 622
 623
 624
 625
 626
 627
 628
 629
 630
 631
 632
 633
 634
 635
 636
 637
 638
 639
 640
 641
 642
 643
 644
 645
 646
 647
 648
 649
 650
 651
 652
 653
 654
 655
 656
 657
 658
 659
 660
 661
 662
 663
 664
 665
 666
 667
 668
 669
 670
 671
 672
 673
 674
 675
 676
 677
 678
 679
 680
 681
 682
 683
 684
 685
 686
 687
 688
 689
 690
 691
 692
 693
 694
 695
 696
 697
 698
 699
 700
 701
 702
 703
 704
 705
 706
 707
 708
 709
 710
 711
 712
 713
 714
 715
 716
 717
 718
 719
 720
 721
 722
 723
 724
 725
 726
 727
 728
 729
 730
 731
 732
 733
 734
 735
 736
 737
 738
 739
 740
 741
 742
 743
 744
 745
 746
 747
 748
 749
 750
 751
 752
 753
 754
 755
 756
 757
 758
 759
 760
 761
 762
 763
 764
 765
 766
 767
 768
 769
 770
 771
 772
 773
 774
 775
 776
 777
 778
 779
 780
 781
 782
 783
 784
 785
 786
 787
 788
 789
 790
 791
 792
 793
 794
 795
 796
 797
 798
 799
 800
 801
 802
 803
 804
 805
 806
 807
 808
 809
 810
 811
 812
 813
 814
 815
 816
 817
 818
 819
 820
 821
 822
 823
 824
 825
 826
 827
 828
 829
 830
 831
 832
 833
 834
 835
 836
 837
 838
 839
 840
 841
 842
 843
 844
 845
 846
 847
 848
 849
 850
 851
 852
 853
 854
 855
 856
 857
 858
 859
 860
 861
 862
 863
 864
 865
 866
 867
 868
 869
 870
 871
 872
 873
 874
 875
 876
 877
 878
 879
 880
 881
 882
 883
 884
 885
 886
 887
 888
 889
 890
 891
 892
 893
 894
 895
 896
 897
 898
 899
 900
 901
 902
 903
 904
 905
 906
 907
 908
 909
 910
 911
 912
 913
 914
 915
 916
 917
 918
 919
 920
 921
 922
 923
 924
 925
 926
 927
 928
 929
 930
 931
 932
 933
 934
 935
 936
 937
 938
 939
 940
 941
 942
 943
 944
 945
 946
 947
 948
 949
 950
 951
 952
 953
 954
 955
 956
 957
 958
 959
 960
 961
 962
 963
 964
 965
 966
 967
 968
 969
 970
 971
 972
 973
 974
 975
 976
 977
 978
 979
 980
 981
 982
 983
 984
 985
 986
 987
 988
 989
 990
 991
 992
 993
 994
 995
 996
 997
 998
 999
1000
1001
1002
1003
1004
1005
1006
1007
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
// MVillage.as
 
/*
%dll
MVillage
%ver
2.6
%date
2008/07/06
%group
マルチメディア制御命令
%author
ドリームROM
%note
このヘルプは付属SDKをHSPヘルプ用に書き換えたものです。
float型変数を利用する場合、変換モジュールを利用する必要があります。下記URLを参考にしてください。
http://sprocket.babyblue.jp/html/hsp_koneta3.htm#tofloat
%*/
 
#uselib "MVillage.dll"
/*
%index
MusicVillageInitialize
%inst
MVillage.dll内部を初期化します。通常はDLLがロードされた時に自動で実行されますので、あえて呼び出す必要はありません。また、複数回呼び出しても意味はありません。 
%*/
#func MusicVillageInitialize "MusicVillageInitialize"
 
/*
%index
MVOpenDevice
%prm
nDev, hEvent
nDev :  The number of the 'Midi' out device which you want to use.
hEvent :  The handle which notifies when the device openes.
%inst
Midiアウト音源をオープンします。曲の再生には必ずこの関数でデバイスをオープンする必要があります。
nDevではオープンしたいデバイスナンバーを指定します。デバイスに関する情報はMusicVillageからは全く提供されません。必要であれば、プログラム側から取得する必要があります。
hEventにはイベントハンドルを指定します。この値にNULLを指定すると、この関数は呼び出し側スレッドでデバイスをオープンし、結果を返します。 NULL以外の値を指定すると、この関数はすぐに制御を返します。この時、デバイスはオープンされているという保証はありません。デバイスによっては、オープンに数秒時間が掛かるものがあるため、処理を停止したくない時に使用します。デバイスオープンの通知が必要なら、コールバック関数を指定する必要があります。コールバック関数を指定するにはMVSetCapsを使います。 
%href
MVCloseDevice
%*/
#func MVOpenDevice "MVOpenDevice" int, int
 
/*
%index
MVCloseDevice
%inst
MVOpenDevice関数でオープンされたデバイスをクローズします。使用したデバイスは必ずクローズしなければなりません。また、MusicVillageでは内部で開けるデバイスは1つだけですので、オープンとクローズを1:1にして行えば安全です。 
%href
MVOpenDevice
%*/
#func MVCloseDevice "MVCloseDevice"
 
/*
%index
MVLoadMusic
%prm
lpFileName
lpFileName : The address of specific filename's ASCII string which you want to play.
%inst
lpFileNameで指定したMidiファイルを読みこみます。前回の曲データはこの関数が自動で破棄するので、深く考える必要はありません。 
%href
MVPlayMusic 
%*/
#func MVLoadMusic "MVLoadMusic" sptr
 
/*
%index
MVPlayMusic
%inst
MVLoadMusic関数で最後に読みこまれた曲データを再生します。
%href
MVLoadMusic
MVStopMusic
%*/
#func MVPlayMusic "MVPlayMusic"
 
/*
%index
MVStopMusic
%inst
再生中の曲を停止します。再生されていた曲データは失われません。ただし、再生位置などの情報は失われます。
MVStopMusic、およびMVWaitMusic関数はMusicVillageに設定されたタイムアウトを過ぎても返せないとき、エラーコードMVERR_TIMEOUTを返します。詳しくはMusicVillageCapabilityを参照してください。
%href
MVPlayMusic
%*/
#func MVStopMusic "MVStopMusic"
 
/*
%index
MVWaitMusic
%inst
再生中の曲を一時停止します。内部にはMVS_WAITが立ちます。 MVRestartMusic関数で続きを再生出来ます。
MVStopMusic、およびMVWaitMusic関数はMusicVillageに設定されたタイムアウトを過ぎても返せないとき、エラーコードMVERR_TIMEOUTを返します。詳しくはMusicVillageCapabilityを参照してください。
%href
MVPlayMusic
MVRestartMusic
MVGetStatus
%*/
#func MVWaitMusic "MVWaitMusic"
 
/*
%index
MVRestartMusic
%inst
曲を続きから再生します。内部フラグがMVS_WAIT以外だとこの関数は失敗します。内部フラグの取得はMVGetStatus関数を使用して下さい。
%href
MVWaitMusic
MVGetStatus
MVSeek
%*/
#func MVRestartMusic "MVRestartMusic"
 
/*
%index
MVGetStatus
%prm
lpsi
lpsi : The address of specific MVSTATUSINFO structure.
%inst
MusicVillageの内部情報を一気に取得します。1つずつ取得するにはMVGetCaps関数も使えますが、MVGetCaps関数では取得できない値もあります。
lpsiにはMVSTATUSINFO構造体へのポインタを指定します。この時、MVSTATUSINFO構造体のdwSizeメンバには有効なオフセット値を指定する値をsizeof(MVSTATUSINFO)によって指定しなければなりません。
%href
MVSTATUSINFO
%*/
#func MVGetStatus "MVGetStatus" int
 
/*
%index
MVSendSysEx
%prm
nLength, *lpData
nLength : The length in bytes of lpData
*lpData :  The address filled with exclusive data which you want to send to the device.
%inst
プログラム側から意図したシステム・エクスクルーシブメッセージを送信します。内容・処理結果はデバイスによって異なりますので、必ず意図した結果になるわけではありません。
nLengthにはlpDataのデータ長を入れます。この値は1以上でなければなりません。
lpDataには送信したいSysExデータを指すポインタを指定します。
nLengthに0以下の数値を入力した場合、MusicVillageで定義済みのメッセージを送信することになります。この時、lpDataはNULLを指定することが出来ます。詳しくはその他の定数の項を参照して下さい。
%href
MV_SYSEX_GM
MV_SYSEX_GS
MV_SYSEX_XG
%*/
#func MVSendSysEx "MVSendSysEx" int, int
 
/*
%index
MVSeek
%prm
dwPos
dwPos : The position to which you want to seek.
%inst
曲データの再生位置を指定します。
dwPosにはシークさせたい位置を指定します。この値が最大曲長を超えてはいけません。最大曲長を取得するにはMVGetStatus関数を使います。
この関数は内部フラグがMVS_NOMSG、MVS_STOP、MVS_WAITのいずれかでなければ失敗します。
関数が成功すると、内部フラグにはMVS_WAITが立ちます。シークを適応した状態で再生するには MVPlayMusic関数ではなくMVRestartMusicを使用して下さい。 
%href
MVRestartMusic
MVGetStatus
%*/
#func MVSeek "MVSeek" int
 
/*
%index
MVOpenSound
%prm
*pMVHandle, nDev, lpFileName
*pMVHandle : Specific handle of HMVSOUND.
nDev :  The device number which you want to use.
lpFileName : The address of the filename.
%inst
WAVEサウンド用ハンドルを生成します。
pMVHandleにはHMVSOUND型ハンドルのアドレスを指定します。関数が成功すると、このアドレスのハンドルに新しいHMVSOUNDハンドルが格納されます。
nDevにはオープンしたいWAVEサウンドデバイスナンバーを指定します。 WAVEに関しては、MVOpenDeviceの様に非同期オープン機能はありません。
lpFileNameには再生したいWAVEサウンドファイル名へのポインタを指定します。 WAVEはMidiと違って再生毎にファイルを指定することは出来ず、このデバイスをオープンする時点でファイルを指定します。
lpFileNameのファイルは、このハンドルが閉じられるまで、MusicVillageによりロックされます。したがって、ハンドルが有効なうちにこのファイルの削除やリネームをすることは出来ません。
%href
MVCloseSound
%*/
#func MVOpenSound "MVOpenSound" int, int, sptr
 
/*
%index
MVCloseSound
%prm
hMVSound
hMVSound : Specific handle of HMVSOUND.
%inst
MVOpenSound関数でオープンされたデバイスをクローズし、ハンドルをクローズします。 MVOpenSound関数で開かれたハンドルは必ずこの関数でクローズしなければなりません。この関数を読んだ後のhMVSoundの値は無効となります。
%href
MVOpenSound
%*/
#func MVCloseSound "MVCloseSound" int
 
/*
%index
MVPlaySound
%prm
hMVSound, dwOption
hMVSound : Specific handle of HMVSOUND.
dwOption : Options of playback types.
%inst
hMVSoundに指定されているWAVEサウンドを再生します。
dwOptionには再生オプションを指定します。詳しくはPlayBackOption定数を参照して下さい。
%href
MVStopSound
PlayBackOption定数
%*/
#func MVPlaySound "MVPlaySound" int, int
 
/*
%index
MVStopSound
%prm
hMVSound
hMVSound : Specific handle of HMVSOUND.
%inst
hMVSoundに指定されているWAVEサウンドを停止します。
%href
MVPlaySound
%*/
#func MVStopSound "MVStopSound" int
 
/*
%index
MVWaitSound
%prm
hMVSound
hMVSound : Specific handle of HMVSOUND.
%inst
hMVSoundに指定されているWAVEサウンドを一時停止します。続きを再生するにはMVRestartSound関数を使用します。
%href
MVRestartSound
%*/
#func MVWaitSound "MVWaitSound" int
 
/*
%index
MVRestartSound
%prm
hMVSound
hMVSound : Specific handle of HMVSOUND.
%inst
一時停止状態になっているhMVSoundに指定されているWAVEサウンド再生を再開します。
%href
MVWaitSound
%*/
#func MVRestartSound "MVRestartSound" int
 
/*
%index
MVSetCaps
%prm
MVCaps, dwParam
MVCaps : The type of MVCAPSTYPE which you want to set a new value.
dwParam : Specific new parameter.
%inst
MusicVillage内の様々な設定を変更します。
MVCapsではMVCAPSTYPEの中で、変更したいパラメータを指定します。詳しい解説はMVCAPSTYPEの項を参照して下さい。
dwParamには新しく設定する値を入れます。尚、このdwParamにはポインタが入る場合もありますので、注意して下さい。
%href
MVGetCaps
%*/
#func MVSetCaps "MVSetCaps" int, int
 
/*
%index
MVGetCaps
%prm
MVCaps, *lpParam
MVCaps : The type of MVCAPSTYPE which you want to set a new value.
*lpParam : The address of specific DWORD parameter.
%inst
MusicVillageの様々な設定を取得します。
MVCapsではMVCAPSTYPEの中で、変更したいパラメータを指定します。詳しい解説はMVCAPSTYPEの項を参照して下さい。
lpParamにはデータの入るDWORD値へのポインタを指定します。ここに設定されているデータが入ります。
%href
MVSetCaps
%*/
#func MVGetCaps "MVGetCaps" int, int
 
/*
%index
MVGetVersion
%prm
*lpVersion
*lpVersion : The address of specific DWORD parameter.
%inst
MusicVillage(MVillage.dll)のバージョンを返します。
lpVersionにはバージョン情報を受け取るDWORD値へのポインタを指定します。上位16ビットにはメジャー・マイナーバージョン、下位16ビットにはビルドナンバーが入ります。
DLLVERSION_MAJOR、DLLVERSION_MINOR、DLLVERSION_BUILDマクロを使用するとバージョンのチェックが楽になります。これらのマクロは『MVillage.h』を参照してください。
%*/
#func MVGetVersion "MVGetVersion" int
 
/*
%index
MVGetIcon
%prm
*lpIcon
*lpIcon : Specific address of HICON.
%inst
MVillage.dll内に入っている『♪』アイコンを取得します。
lpIconにはアイコンを受け取るハンドルへのポインタを指定します。このハンドルは使用しなくなったらDestroyIcon APIで破棄しなければいけません。
この関数は内部でLoadIcon APIを呼び出しているので、プログラム側からMVillage.dllのモジュールハンドルを使用してLoadIcon APIを呼び出したものと同じです。
%*/
#func MVGetIcon "MVGetIcon" int
 
/*
%index
MVGetErrorString
%prm
dwError, lpReturnString, dwMaxLength
dwError :  Specific error number.
lpReturnString : The address which is returned the error message.
dwMaxLength : Size of lpReturnString buffer.
%inst
MusicVillageは関数を呼び出したその戻り値に、必ずエラーコードを返します。この関数は、そのエラーコードからエラーの詳細に関するメッセージを取得します。 MusicVillageは関数が失敗してもWindows カーネルのラストエラーナンバーには全く手を加えません。
dwErrorにはMusicVillageにより返されたエラーナンバーを指定します。このエラーナンバーに関する詳細が取得出来ます。また、MVERR_NOERRORを指定することも出来ます。
lpReturnStringにはエラーに関する詳細メッセージを格納する文字列へのポインタを指定します。
dwMaxLengthにはlpReturnStringの最大バッファ長を指定します。通常はMV_MAX_STRING以上を指定してください。
この関数が失敗すると、lpReturnStringには失敗の文字列が入り、関数はMVERR_LOAD_STRINGを返します。 
%href
MusicVillage エラー定数
%*/
#func MVGetErrorString "MVGetErrorString" int, int, int
 
/*
%index
MVChooseDeviceDialog
%prm
lpcdd
lpcdd : Specific address of CDDLG which is filled with the information of dialog parameters.
%inst
Midiアウトデバイスを選択するダイアログを表示します。おもにユーザーにどのデバイスを使用するか問い合わせる時に使用します。
lpcddにはダイアログに関する情報が入ったCDDLG構造体へのポインタが入ります。詳しくはCDDLGの項を参照して下さい。
%href
ChooseDeviceDlg構造体
%*/
#func MVChooseDeviceDialog "MVChooseDeviceDialog" int
 
//  Constant error values - there will be returned by the function calling.
/*
%index
MusicVillage エラー定数
%inst
MusicVillageは関数が成功すると以下のエラーコードのいずれかを返します。それぞれの意味はMVGetErrorStringで取得して確かめてください。
html{
<ul><li>MVERR_NOERROR
</li><li>MVERR_LACKMEMORY
</li><li>MVERR_SYSTEMERROR
</li><li>MVERR_INITIALIZE
</li><li>MVERR_RETURNCANCEL
</li><li>MVERR_LOAD_STRING
</li><li>MVERR_FAILED_SET_TIMER
</li><li>MVERR_FILE_OPEN
</li><li>MVERR_FILE_INVALID_FORMAT
</li><li>MVERR_NOT_PCM
</li><li>MVERR_UNSUPPORTED
</li><li>MVERR_DEVICE_OPENED
</li><li>MVERR_DEVICE_CLOSED
</li><li>MVERR_NO_ENTRY
</li><li>MVERR_INVALID_NUMBER
</li><li>MVERR_CANNOT_OPEN
</li><li>MVERR_WAVE_DEVICE_ENTRY
</li><li>MVERR_NOW_PLAYING
</li><li>MVERR_NOT_PLAYING
</li><li>MVERR_TIMEOUT
</li><li>MVERR_INVALID_COMMAND
</li><li>MVERR_INVALID_STATE
</li><li>MVERR_INVALID_HANDLE
</li><li>MVERR_INVALID_PARAMETER
</li><li>MVERR_INVALID_CAPS
</li><li>MVERR_NOBUFFERONMEMORY
</li><li>MVERR_INVALID_CALL_INTERVAL
</li><li>MVERR_NOW_FADINGOUT
</li><li>MVERR_NOW_FADINGIN
</li><li>MVERR_FILE_TOO_LARGE
</li></ul>
}html
%href
MVGetErrorString
%*/
#define MVERR_NOERROR                  0
#define MVERR_SUCCESS                  MVERR_NOERROR
#define MVERR_RETURNOK                 MVERR_NOERROR
#define MVERR_LACKMEMORY               10
#define MVERR_SYSTEMERROR              11
#define MVERR_INITIALIZE               12
#define MVERR_RETURNCANCEL             13
#define MVERR_LOAD_STRING              14
#define MVERR_FAILED_SET_TIMER         19
#define MVERR_FILE_OPEN                20
#define MVERR_FILE_INVALID_FORMAT      21
#define MVERR_FILE_NOT_PCM             22
#define MVERR_UNSUPPORTED_FORMAT       29
#define MVERR_DEVICE_OPENED            30
#define MVERR_DEVICE_CLOSED            31
#define MVERR_DEVICE_NO_ENTRY          32
#define MVERR_DEVICE_INVALID_NUMBER    33
#define MVERR_DEVICE_CANNOT_OPEN       34
#define MVERR_WAVE_DEVICE_NO_ENTRY     35
#define MVERR_NOW_PLAYING              40
#define MVERR_NOT_PLAYING              41
#define MVERR_TIMEOUT                  42
#define MVERR_INVALID_COMMAND          43
#define MVERR_INVALID_STATE            44
#define MVERR_INVALID_HANDLE           45
#define MVERR_INVALID_PARAMETER        46
#define MVERR_INVALID_CAPS             47
#define MVERR_NOBUFFERONMEMORY         48
#define MVERR_INVALID_CALL_INTERVAL    49
#define MVERR_NOW_FADINGOUT            50
#define MVERR_NOW_FADINGIN             51
#define MVERR_FILE_TOO_LARGE           52
 
 
//  MusicVillage constant values
/*
%index
MV_SYSEX_GM
%inst
GM音源初期化コマンドを送信します。
MVSendSysEx 関数に使うことができます。
%href
MVSendSysEx
MV_SYSEX_GS
MV_SYSEX_XG
%*/
#define MV_SYSEX_GM                                    0              //  Reset by GM system
 
/*
%index
MV_SYSEX_GS
%inst
GS音源初期化コマンドを送信します。
MVSendSysEx 関数に使うことができます。
%href
MVSendSysEx
MV_SYSEX_GM
MV_SYSEX_XG
%*/
#define MV_SYSEX_GS                                    -1             //  Reset by GS system
 
/*
%index
MV_SYSEX_XG
%inst
XG音源初期化コマンドを送信します。
MVSendSysEx 関数に使うことができます。
%href
MVSendSysEx
MV_SYSEX_GM
MV_SYSEX_GS
%*/
#define MV_SYSEX_XG                                    -2             //  Reset by XG system
 
/*
%index
MV_NO_SINGLE
%inst
単一楽器演奏を行いません。
%*/
#define MV_NO_SINGLE                           -1             //  Not use single instrument
 
/*
%index
MV_MAX_STRING
%inst
MVGetErrorString関数が返す文字列を十分に受け取ることの出来るサイズです。必ずしも最大のエラー文字列長がこの値であるわけではありません。
%href
MVGetErrorString
%*/
#define MV_MAX_STRING                          0x80
 
/*
%index
MV_INVALID_DEVICE_ID
%inst
デバイスナンバーが不正なことを表す定数です。
%*/
#define MV_INVALID_DEVICE_ID                   -2
 
/*
%index
MV_MIN_TEMPO
%inst
設定できる最小テンポ長です。
%href
MV_MAX_TEMPO
%*/
#define MV_MIN_TEMPO                           0.25
 
/*
%index
MV_MAX_TEMPO
%inst
設定できる最大テンポ長です。
%href
MV_MIN_TEMPO
%*/
#define MV_MAX_TEMPO                           2.00
 
/*
%index
MV_MIN_INSTRUMENT
%inst
単一楽器演奏で指定できる最小値です。
%href
MV_MAX_INSTRUMENT
%*/
#define MV_MIN_INSTRUMENT                      0
 
/*
%index
MV_MAX_INSTRUMENT
%inst
単一楽器演奏で指定できる最大値です。
%href
MV_MIN_INSTRUMENT
%*/
#define MV_MAX_INSTRUMENT                      127
 
/*
%index
MV_MIN_FADE_TIME
%inst
フェードイン・アウト時間で指定できる最小値です。
%href
MV_MAX_FADE_TIME
%*/
#define MV_MIN_FADE_TIME                       1000
 
/*
%index
MV_MAX_FADE_TIME
%inst
フェードイン・アウト時間で指定できる最大値です。
%href
MV_MIN_FADE_TIME
%*/
#define MV_MAX_FADE_TIME                       10000
 
/*
%index
MV_MIN_TIMEOUT
%inst
タイムアウトで設定できる最小の時間です。
%href
MV_DEFAULT_TIMEOUT
MV_MAX_TIMEOUT
%*/
#define MV_MIN_TIMEOUT                         100
 
/*
%index
MV_MAX_TIMEOUT
%inst
タイムアウトで設定できる最大の時間です。
%href
MV_DEFAULT_TIMEOUT
MV_MIN_TIMEOUT
%*/
#define MV_MAX_TIMEOUT                         1000
 
/*
%index
MV_DEFAULT_TIMEOUT
%inst
デフォルトのタイムアウトです。
%href
MV_MIN_TIMEOUT
MV_MAX_TIMEOUT
%*/
#define MV_DEFAULT_TIMEOUT                     1000
 
/*
%index
MV_MIN_VOLUME
%inst
設定できる音量の最小値です。
%href
MV_MAX_VOLUME
%*/
#define MV_MIN_VOLUME                          0
 
/*
%index
MV_MAX_VOLUME
%inst
設定できる音量の最大値です。
%href
MV_MIN_VOLUME
%*/
#define MV_MAX_VOLUME                          100
 
/*
%index
MVCAPSTYPE
%inst
MVSetCaps、及びMVGetCaps関数で使用される列挙型です。
%href
MVSetCaps
MVGetCaps
MVCAPS_ACTIONFLAG
MVCAPS_CALLBACKPTR
MVCAPS_USERPARAM
MVCAPS_TEMPO
MVCAPS_FADEOUT
MVCAPS_FADEIN
MVCAPS_SINGLE
MVCAPS_TIMEOUT
MVCAPS_SHORTMSG
MVCAPS_VOLUME
%*/
 
/*
%index
MVCAPS_ACTIONFLAG
%inst
MusicVillage内部での自動動作を指定するフラグです。詳しくはMusicVillageActionFlagsを参照してください。
dwParamにはフラグを指定します。
lpParamにはフラグを受け取るDWORD型へのポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_ACTIONFLAG                       0              //  For more information, see MVAF_*
 
/*
%index
MVCAPS_CALLBACKPTR
%inst
動作通知を行うコールバック関数のアドレスを指定します。関数の型についてはfnMVCallbackを参照してください。
dwParamにはLPFNMVCALLBACK型の関数のアドレスを指定します。
lpParamにはLPFNMVCALLBACK型の変数へのポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_CALLBACKPTR                      1
 
/*
%index
MVCAPS_USERPARAM
%inst
コールバック関数でdwUserの値に入るデータを指定します。詳しくはfnMVCallbackを参照してください。
dwParamにはコールバックに入る32ビット値を指定します。
lpParamにはDWORD型の変数へのポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_USERPARAM                        2
 
/*
%index
MVCAPS_TEMPO
%inst
曲のテンポを指定します。デフォルトでは1.0fで、値を小さくするほど、演奏速度は速くなります。
dwParamにはテンポを示すFLOAT型の変数へのポインタを指定します。
lpParmaにはテンポを格納するFLOAT型の変数へのポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_TEMPO                            3
 
/*
%index
MVCAPS_FADEOUT
%inst
MVSetCaps関数ではフェードアウトを実行し、 MVGetCaps関数ではフェードアウト中かどうかを取得します。
dwParamにはフェードアウトを完了するまでの時間をミリ秒単位で指定します。
lpParamにはフェードアウト中かどうかを知るBOOL型への変数のポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_FADEOUT                          4              //      Set fade out, and Get command returns true or false of being fade out.
 
/*
%index
MVCAPS_FADEIN
%inst
MVSetCaps関数ではフェードインを実行し、 MVGetCaps関数ではフェードイン中かどうかを取得します。
MVSetCaps関数でフェードインを指定するとき、内部フラグがMVS_PLAYINGでないと失敗します。 MVPlayMusic関数で演奏を開始したら、その直後にフェードインするようにして下さい。
dwParamにはフェードインを完了するまでの時間をミリ秒単位で指定します。
lpParamにはフェードイン中かどうかを知るBOOL型への変数のポインタを指定します。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_FADEIN                           5              //  Set fade in, and Get command returns true or false of being fade in.
 
/*
%index
MVCAPS_SINGLE
%inst
単一楽器演奏を行います。MV_NO_SINGLEを指定すると、通常通り演奏されます。
dwParamには単一演奏させる楽器ナンバーを指定します。
lpParamには単一楽器ナンバーを取得するDWORD型の変数へのポインタをしています。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_SINGLE                           6
 
/*
%index
MVCAPS_TIMEOUT
%inst
MVStopMusic及びMVWaitMusic関数での、タイムアウトを設定します。 MusicVillageは、このタイムアウトを過ぎてもクライアントに制御を返せなかった場合は、エラーコードMVERR_TIMEOUTを返します。ただし、ほとんどの場合、即座に制御を返すので、デフォルトのタイムアウトで十分だと思います。参考で書いておくと、Windows 95時代より昔のプロセッサで、メッセージが込み合っている、もしくは、他のタイマのキューが詰まっている場合などには、タイムアウトを過ぎるかもしれません。
 
dwParamには新しくセットするタイムアウト値をミリ秒単位でセットします。
lpParamには現在のタイムアウトを格納するDWORD値へのポインタをセットします。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_TIMEOUT                          7
 
/*
%index
MVCAPS_SHORTMSG
%inst
プログラム側から、デバイスへ直接メッセージを送信します。ただし、このメッセージは内部でフィルタリングされます。
フィルタリングとは、例えば『単一楽器演奏』が指定されている場合、プログラムチェンジメッセージを送っても無視する設計です。
 
dwParamには送信したいメッセージをDWORD値をセットします。
lpParamには最後に送信されたメッセージを受け取るDWORD値へのポインタをセットします。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_SHORTMSG                         8              //  Send a short message to device through this function, and get a last message sent.
 
/*
%index
MVCAPS_VOLUME
%inst
基本音量を変更します。音量は絶対値ではなく、『相対値』です。発音されるノートの音量は、次の式で表されます。
 
v = (ノートの音量) * (現在のフェード値/フェード値の最大値) * (音量/最大音量)
 
また、この他にも、システムエクスクルーシブで変更される音量や、 Windows ミキサーの音量にも依存します。
 
dwParamには新しく設定する音量の数値をセットします。
lpParamには現在の音量を取得するDWORD値へのポインタをセットします。
%href
MVSetCaps
MVCAPSTYPE
MVGetCaps
%*/
#define        MVCAPS_VOLUME                           9              //  Set and get muster volume
 
/*
%index
MusicVillage Callback Messages
%inst
html{
<table><tbody>
<tr><th>メッセージ</th><th>意味</th><th>dwParamの値</th></tr>
<tr><td>MVMSG_DEVICE_OPENERROR</td><td>デバイスのオープンに失敗しました。</td>
<td>(LONG)開かれようとしたデバイスナンバー</td></tr>
<tr><td>MVMSG_DEVICE_OPEN</td>
<td>デバイスが開かれました。</td><td>(LONG)開かれたデバイスナンバー</td></tr>
<tr><td>MVMSG_DEVICE_CLOSE</td>
<td>デバイスが閉じられました。</td><td>NULL</td></tr>
<tr><td>MVMSG_LOAD_FILE</td><td>新たな曲データが読みこまれました。</td><td>(LPCSTR)ファイル名へのポインタ</td></tr>
<tr><td>MVMSG_PLAY</td>
<td>曲が再生されました。</td><td>NULL</td></tr>
<tr><td>MVMSG_STOP</td><td>曲が停止しました。</td><td>NULL</td></tr>
<tr><td>MVMSG_WAIT</td><td>待機命令で曲が一時停止しました。</td><td>NULL</td></tr>
<tr><td>MVMSG_RESTART</td><td>曲が途中から再生しました。</td><td>(DWORD)再生もとの曲位置</td></tr>
<tr><td>MVMSG_LOOP</td><td>曲が終了し、ループしようとしています。</td><td>NULL</td></tr>
<tr><td>MVMSG_FADEOUT</td><td>フェードアウトが正常に完了しました(<a href="#_msg_caution">注※1</a>)。</td><td>NULL</td></tr>
<tr><td>MVMSG_FADEIN</td><td>フェードインが正常に完了しました(<a href="#_msg_caution">注※1</a>)。</td><td>NULL</td></tr>
</tbody></table>
<div name="_msg_caution">注※1:<br>
フェードイン・アウト中に、ユーザーによって曲がストップされたりした場合、フェードイン・アウトは終了しますが、このメッセージは送られません。
このメッセージはあくまでMusicVillage自身でフェード処理を完了した場合にのみ送られます。</div>
}html
%*/
#define MVMSG_DEVICE_OPENERROR         0xFF           //  (LONG)DeviceNumber
#define MVMSG_DEVICE_OPEN              0x00           //  (LONG)DeviceNumber
#define MVMSG_DEVICE_CLOSE             0x01           //  NULL
#define MVMSG_LOAD_FILE                0x02           //  (LPCSTR)lpFileName
#define MVMSG_PLAY                     0x03           //  NULL
#define MVMSG_STOP                     0x04           //  NULL
#define MVMSG_WAIT                     0x05           //  NULL
#define MVMSG_RESTART                  0x06           //  (DWORD)Restart Point
#define MVMSG_LOOP                     0x07           //  NULL
#define MVMSG_FADEOUT                  0x08           //  NULL
#define MVMSG_FADEIN                   0x09           //  NULL
 
/*
%index
MusicVillage States
%inst
MVStatusInfo構造体のnStateメンバには、以下のいずれかの状態が入ります。
html{
<table><tbody>
<tr><th>状態</th><th>意味</th></tr>
<tr><td>MVS_EMPTY</td><td>デバイスは開かれていません。</td></tr>
<tr><td>MVS_NOMSG</td><td>デバイスは開かれていますが、何もメッセージがありません。</td></tr>
<tr><td>MVS_PLAYING</td><td>曲が演奏されている最中です。</td></tr>
<tr><td>MVS_WAIT</td><td>曲は待機命令で待機中です。</td></tr>
<tr><td>MVS_STOP</td><td>曲は停止しています。</td></tr>
</tbody></table>
}html
%href
MVStatusInfo構造体
%*/
#define MVS_EMPTY                      -1             //  Device has not opened.
#define MVS_NOMSG                      0              //  Device has opened, but music data has not read.
#define MVS_PLAYING                    1
#define MVS_WAIT                       2
#define MVS_STOP                       3
 
/*
%index
MusicVillage Action Flags
%inst
アクションフラグを指定します。
MVAF_GMRESET、MVAF_GSRESET、およびMVAF_XGRESETは同調できません。2つ以上同時に指定するとエラーMVERR_INVALID_FLAGSが返ります。
html{
<table><tbody>
<tr><td>MVAF_GMRESET</td><td>曲が再生される前に、デバイスを<b>GM音源</b>で初期化します。</td></tr>
<tr><td>MVAF_GSRESET</td><td>曲が再生される前に、デバイスを<b>GS音源</b>で初期化します。</td></tr>
<tr><td>MVAF_XGRESET</td><td>曲が再生される前に、デバイスを<b>XG音源</b>で初期化します。</td></tr>
<tr><td>MVAF_NOSENDSYSEX</td><td>システムエクスクルーシブメッセージを送信しません。曲によっては多数のエクスクルーシブメッセージを送信し、後に再生させる曲の妨げになる場合があります。このフラグを立てていると、そういった現象を回避出来ます。また、このフラグで有効なのは、曲の再生中に、ファイル自身に組みこまれているエクスクルーシブメッセージを送信しないだけで、<a href="#sendsysex">MVSendSysEx</a>関数などでは通常通り送信出来ます。</td></tr>
</tbody></table>
}html
%*/
#define MVAF_GMRESET                    0x0001 //  --------
#define MVAF_GSRESET                    0x0002 //  Cannot exclusive.
#define MVAF_XGRESET                    0x0004 //  --------
#define MVAF_NOSENDSYSEX                0x0010
 
/*
%index
MusicVillage CDDLG Flags
%inst
CDDLG構造体のdwFlagsメンバに使用されるフラグです。
html{
<table><tbody>
<tr><td>CDDF_HWNDPARENT</td><td><i>hWndParent</i>メンバを有効にします。このメンバにセットされたウィンドウハンドルがダイアログボックスの親となります。</td></tr>
<tr><td>CDDF_DEVICENAME</td><td><i>lpszDeviceName</i>メンバを有効にします。このメンバのアドレスにデバイスからのデバイス名が格納されます。このメンバはかならずNULL以外の値をセットします。バッファサイズは<i>MAXPNAMELEN</i>よりも大きいほうが安全です。</td></tr>
<tr><td>CDDF_HOOKPROC</td><td><i>lpfnHookProc</i>メンバを有効にします。デバイス選択のダイアログ関数は、このアドレスの関数を呼び出した後に、デフォルトのデバイス選択ダイアログ関数をよび、最後にデフォルトのダイアログ関数を呼びます。フックプロシージャでメッセージを処理したら、必ずTRUEを返してください。また、基本的にデバイス選択ダイアログ関数よりフックプロシージャのほうが先に呼ばれますが、<b>WM_INITDIALOG</b>メッセージをデバイス選択ダイアログより先に捕まえることが出来ません。<br><b>WM_CLOSE</b>メッセージでTRUEを返した場合、ダイアログの終了を取り消すことが出来ます。</td></tr>
<tr><td>CDDF_RESERVED</td><td>予約済みです。使用しないで下さい。</td></tr>
<tr><td>CDDF_INITIALIZE_DEVICE</td><td>ダイアログを表示する時、デフォルトで選択済みのデバイスとして、<i>nDevice</i>のデバイスナンバーを使用します。このフラグが立っていない時は、<b>MIDI_MAPPER</b>がデフォルトとしてセットされた状態でダイアログが表示されます。<i>nDevice</i>が有効なデバイスナンバーで無い場合、同様に<b>MIDI_MAPPER</b>をセットします。</td></tr>
<tr><td>CDDF_HIDEMIDIMAPPER</td><td><b>MIDI_MAPPER</b>を表示せず、選択不可能にします。デフォルトでセットされるのはデバイスナンバー0に繰り越されます。</td></tr>
<tr><td>CDDF_ACTIVEUPDATE</td><td>デバイス選択ダイアログがアクティブになるたびに、Midi アウト音源のデバイスを再スキャンします。つまり、ユーザーは常に信頼できるデバイスを選択することが出来ます。</td></tr>
</tbody></table>
}html
%href
ChooseDeviceDlg構造体
%*/
#define CDDF_HWNDPARENT                 0x0001
#define CDDF_DEVICENAME                 0x0002
#define CDDF_HOOKPROC                   0x0004
#define CDDF_RESERVED                   0x0100
#define CDDF_INITIALIZE_DEVICE          0x0200
#define CDDF_HIDEMIDIMAPPER             0x0400
#define CDDF_ACTIVEUPDATE               0x0800
 
/*
%index
MusicVillage PlayBackOptions
%inst
WAVEサウンドを再生させるときのオプションです。
html{
<table><tbody>
<tr><td>PBO_PLAYBACK</td><td>MusicVillageが内部で処理する、再生フラグです。クライアントアプリケーションでは使用しないで下さい。</td></tr>
<tr><td>PBO_USE_LOOP_BEGIN</td><td><b>LPBn</b>チャンクで指定されたループ開始位置を使用します。このフラグが立っていない時は、ループ時に一番はじめからループします。</td></tr>
<tr><td>PBO_USE_LOOP_END</td><td><b>LPEd</b>チャンクで指定された再生終了位置を使用します。このフラグが立っていない時は、ファイルの最後まで再生されます。</td></tr>
<tr><td>PBO_LOOP</td><td>WAVEサウンドをループします。ループ位置については<i>PBO_USE_LOOP_BEGIN</i>及び、<i>PBO_USE_LOOP_END</i>に基づいて決定されます。逆に、このフラグを立てないとループはせず、サウンドが最後まで再生されたらそこで終了します。</td></tr>
</tbody></table>
}html
%*/
#define PBO_PLAYBACK                    0x80000000             //  This flag is used in MusicVillage. A Client application don't have to use this.
#define PBO_USE_LOOP_BEGIN              0x00000001             //  Enable the chunk 'LPBn'
#define PBO_USE_LOOP_END                0x00000002             //  Enable the chunk 'LBEd'
#define PBO_LOOP                        0x00000004             //  Sound is repeated when the playing finishes.
 
/*
%index
DLLVERSION_MAJOR
%prm
(p1)
p1 : メジャーバージョンを取り出すMVGetVersionの戻り値
%inst
MVGetVersionの戻り値からメジャーバージョンのみを取り出すマクロです。
%href
MVGetVersion
DLLVERSION_MINOR
DLLVERSION_BUILD
%*/
#define ctype DLLVERSION_MAJOR(%1)      (((%1) & 0xFF000000) >> 24)
 
/*
%index
DLLVERSION_MINOR
%prm
(p1)
p1 : マイナーバージョンを取り出すMVGetVersionの戻り値
%inst
MVGetVersionの戻り値からマイナーバージョンのみを取り出すマクロです。
%href
MVGetVersion
DLLVERSION_MAJOR
DLLVERSION_BUILD
%*/
#define ctype DLLVERSION_MINOR(%1)      (((%1) & 0x00FF0000) >> 16)
 
/*
%index
DLLVERSION_BUILD
%prm
(p1)
p1 : ビルドナンバーを取り出すMVGetVersionの戻り値
%inst
MVGetVersionの戻り値からビルドナンバーのみを取り出すマクロです。
%href
MVGetVersion
DLLVERSION_MAJOR
DLLVERSION_MINOR
%*/
#define ctype DLLVERSION_BUILD(%1)      (((%1) & 0x0000FFFF) >>  0)
 
/*
%index
MVStatusInfo構造体
%inst
typedef struct MVStatusInfo{
	DWORD dwSize;
	LONG  nUsedDevice;
	LONG  nState;
	DWORD dwCurPos;
	DWORD dwMusicLength;
	FLOAT fTempo;
	LPFNMVCALLBACK lpfnFunc;
	DWORD dwUser;
}MVSTATUSINFO, * LPMVSTATUSINFO;
この構造体はMVGetStatus関数によって使用され、MusicVillageの内部の情報が格納されます。 
html{
<ul>
<li>dwSizeにはこの構造体のサイズを入れます。MVGetStatus関数を呼び出す前に、このメンバに構造体のサイズ(sizeof(MVStatusInfo))をセットしておく必要があります。関数が成功すると、このメンバにコピーされた情報のサイズをバイト単位で格納します。</li>
<li>nUsedDeviceにはMusicVillageが使用しているデバイスナンバーが格納されます。デバイスが未使用のときはMV_INVALID_DEVICE_IDが格納されます。</li>
<li>nStateにはMusicVillageの内部フラグが入ります。詳しくはMusicVillageStateを参照して下さい。</li>
<li>dwCurPosには現在の演奏位置がはいります。必ずdwMusicLengthの値以下を取ります。</li>
<li>dwMusicLengthには曲の長さが入ります。 MVSeek関数などがこの情報を使用します。</li>
<li>fTempoには現在のテンポが浮動小数点位で入ります。この値の範囲はMV_MIN_TEMPOからMV_MAX_TEMPOの範囲になります。</li>
<li>lpfnFuncにはコールバック関数のアドレスが入ります。コールバック関数についてはCallback Function及びMusicVillage Callback Messagesを参照してください。</li>
<li>dwUserにはコールバックで送られてくるdwUserの値が入ります。</li>
</ul>
}html
%href
MusicVillage Callback Messages
%*/
 
 
/*
%index
CDDLG
%inst
MVChooseDeviceDialog関数を呼び出す際の設定情報を含んだ構造体です。
詳しくはChooseDeviceDlg構造体を参照してください。
%href
ChooseDeviceDlg構造体
 
%index
ChooseDeviceDlg構造体
%prm
%inst
typedef struct ChooseDeviceDlg{
	DWORD dwSize;
	DWORD dwFlags;
	HWND hWndParent;
	LONG nDevice;
	LPSTR lpszDeviceName;
	DLGPROC lpfnHookProc;
}CDDLG, * LPCDDLG;
 
MVChooseDeviceDialog関数を呼び出す際の設定情報を含んだ構造体です。
html{
<ul>
<li>dwSizeにはこの構造体のサイズをバイト単位で指定してください。</li>
<li>dwFlagsは、第7ビット以下のブロックにはどのメンバを指定するか、第8ビット以上は動作フラグが入ります。詳しくはChooseDeviceDialogFlagsを参照して下さい。</li>
<li>hWndParentにはダイアログの親となるウィンドウのハンドルを指定します。 dwFlagsメンバにCDDF_HWNDPARENTビットが立っている場合のみ有効です。</li>
<li>nDeviceにはユーザーが選択したデバイスナンバーが返ります。 dwFlagsメンバにCDDF_INITIALIZE_DEVICEビットが立っていると、関数が呼び出された時にこのメンバのデバイスナンバーを初期設定として選択します。</li>
<li>lpszDeviceNameには選択したデバイスの名前が格納されます。デバイス名を受け取りたいバッファへのポインタを指定します。このメンバはdwFlagsメンバにCDDF_DEVICENAMEビットが立っている場合のみ有効です。</li>
<li>lpfnHookProcにはメッセージプロシージャをフックするための関数のアドレスを指定します。ただし、WM_CLOSEメッセージは受信できません。また、WM_INITDIALOGメッセージは内部で処理が終わった後に呼び出されます。このメンバはdwFlagsメンバにCDDF_HOOKPROCビットが立っている場合のみ有効です。</li>
</ul>
}html
%*/

サンプルスクリプト

Everything is expanded.Everything is shortened.
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
-
|
|
|
!
 
 
 
 
-
|
!
 
 
 
 
 
 
 
 
 
#addition "MVillage.as"
#ifndef MVGetVersion
    dialog "MusicVillage用ヘッダファイルをダウンロードして、commonディレクトリに追加してください。\nhttp://hspdev-wiki.net/?MusicVillage"
    end
#endif
 
*init
    screen 0, 320, 140
    title "MusicVillageサンプル"
    filename = ""
    gosub *open_device
    gosub *make_objects
    stop
 
*open_device
    MVOpenDevice
    onexit goto *end_program
    return
 
*make_objects
    pos 16, 8
    mes "ファイル名"
    pos 16 + ginfo_mesx, 8
    input filename, ginfo_winx - 32 - ginfo_mesx
    id_input = stat
 
    objsize ginfo_winx-32
    pos 16,  50 : button gosub "MIDIファイルを開く", *load_midi
    pos 16,  80 : button gosub "再生", *play_midi
    pos 16, 110 : button gosub "停止", *stop_midi
    return
 
*load_midi
    dialog "mid", 16
    if stat {
        filename = refstr
        MVLoadMusic filename
        objprm id_input, filename
    }
    return
 
*play_midi
    exist filename
    if strsize != -1 {
        MVPlayMusic
    }
    return
 
*stop_midi
    MVStopMusic
    return
 
*end_program
    MVCloseDevice
    end
添付ファイル:
fileMVillage20080706.as
594件 [詳細]
fileMVillage.as
228件 [詳細]
トップ    編集凍結 差分バックアップ添付複製名前変更リロード   新規一覧単語検索最終更新   最終更新のRSS
Last-modified: 2008-07-13 (日) 09:09:22 (1974d)