void sound_player::play(size_t iIndex, double dVolume) { if(available_channels_bitmap == 0 || iIndex >= sound_count || !sounds[iIndex]) return; play_raw(iIndex, (int)(positionless_volume * dVolume)); }
void sound_player::play_at(size_t iIndex, double dVolume, int iX, int iY) { if(available_channels_bitmap == 0 || iIndex >= sound_count || !sounds[iIndex]) return; double fDX = (double)(iX - camera_x); double fDY = (double)(iY - camera_y); double fDistance = sqrt(fDX * fDX + fDY * fDY); if(fDistance > camera_radius) return; fDistance = fDistance / camera_radius; double fVolume = master_volume * (1.0 - fDistance * 0.8) * (double)MIX_MAX_VOLUME * dVolume; play_raw(iIndex, (int)(fVolume + 0.5)); }
int main(int argc, char **argv) { int option_index = 0; int c,i; int ch = 2; int rate = 44100; char *mmap = "N"; char *device = "hw:0,0"; char *filename; int rc = 0; if (argc <2) { printf("\nUsage: aplay [options] <file>\n" "options:\n" "-D <hw:C,D> -- Alsa PCM by name\n" "-M -- Mmap stream\n" "-P -- Hostless steam[No PCM]\n" "-C -- Channels\n" "-R -- Rate\n" "-V -- verbose\n" "-F -- Format\n" "-B -- Period\n" "-T <MP3, AAC, AC3_PASS_THROUGH> -- Compressed\n" "<file> \n"); fprintf(stderr, "Formats Supported:\n"); for (i = 0; i <= SNDRV_PCM_FORMAT_LAST; ++i) if (get_format_name(i)) fprintf(stderr, "%s ", get_format_name(i)); fprintf(stderr, "\nSome of these may not be available on selected hardware\n"); return 0; } while ((c = getopt_long(argc, argv, "PVMD:R:C:F:B:T:", long_options, &option_index)) != -1) { switch (c) { case 'P': pcm_flag = 0; break; case 'V': debug = 1; break; case 'M': mmap = "M"; break; case 'D': device = optarg; break; case 'R': rate = (int)strtol(optarg, NULL, 0); break; case 'C': ch = (int)strtol(optarg, NULL, 0); break; case 'F': printf("optarg = %s\n", optarg); format = get_format(optarg); break; case 'B': period = (int)strtol(optarg, NULL, 0); break; case 'T': compressed = 1; printf("compressed codec type requested = %s\n", optarg); compr_codec = optarg; break; default: printf("\nUsage: aplay [options] <file>\n" "options:\n" "-D <hw:C,D> -- Alsa PCM by name\n" "-M -- Mmap stream\n" "-P -- Hostless steam[No PCM]\n" "-V -- verbose\n" "-C -- Channels\n" "-R -- Rate\n" "-F -- Format\n" "-B -- Period\n" "-T -- Compressed\n" "<file> \n"); fprintf(stderr, "Formats Supported:\n"); for (i = 0; i < SNDRV_PCM_FORMAT_LAST; ++i) if (get_format_name(i)) fprintf(stderr, "%s ", get_format_name(i)); fprintf(stderr, "\nSome of these may not be available on selected hardware\n"); return -EINVAL; } } filename = (char*) calloc(1, 30); if (!filename) { fprintf(stderr, "Aplay:Failed to allocate filename!"); return -ENOMEM; } if (optind > argc - 1) { free(filename); filename = NULL; } else { strlcpy(filename, argv[optind++], 30); } if (pcm_flag) { if (format == SNDRV_PCM_FORMAT_S16_LE) rc = play_wav(mmap, rate, ch, device, filename); else rc = play_raw(mmap, rate, ch, device, filename); } else { rc = play_wav(mmap, rate, ch, device, "dummy"); } if (filename) free(filename); return rc; }