VST3: fetch midi mappings all at once, use it for note/sound-off
[carla.git] / source / modules / juce_audio_formats / format / juce_AudioFormat.cpp
blob13cc287b30f6587bfa20eb24f39a5bd5180d0c7c
1 /*
2 ==============================================================================
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
23 ==============================================================================
26 namespace juce
29 AudioFormat::AudioFormat (String name, StringArray extensions)
30 : formatName (name), fileExtensions (extensions)
34 AudioFormat::AudioFormat (StringRef name, StringRef extensions)
35 : formatName (name.text), fileExtensions (StringArray::fromTokens (extensions, false))
39 AudioFormat::~AudioFormat()
43 bool AudioFormat::canHandleFile (const File& f)
45 for (auto& e : getFileExtensions())
46 if (f.hasFileExtension (e))
47 return true;
49 return false;
52 const String& AudioFormat::getFormatName() const { return formatName; }
53 StringArray AudioFormat::getFileExtensions() const { return fileExtensions; }
54 bool AudioFormat::isCompressed() { return false; }
55 StringArray AudioFormat::getQualityOptions() { return {}; }
57 MemoryMappedAudioFormatReader* AudioFormat::createMemoryMappedReader (const File&)
59 return nullptr;
62 MemoryMappedAudioFormatReader* AudioFormat::createMemoryMappedReader (FileInputStream* fin)
64 delete fin;
65 return nullptr;
68 bool AudioFormat::isChannelLayoutSupported (const AudioChannelSet& channelSet)
70 if (channelSet == AudioChannelSet::mono()) return canDoMono();
71 if (channelSet == AudioChannelSet::stereo()) return canDoStereo();
73 return false;
76 AudioFormatWriter* AudioFormat::createWriterFor (OutputStream* streamToWriteTo,
77 double sampleRateToUse,
78 const AudioChannelSet& channelLayout,
79 int bitsPerSample,
80 const StringPairArray& metadataValues,
81 int qualityOptionIndex)
83 if (isChannelLayoutSupported (channelLayout))
84 return createWriterFor (streamToWriteTo, sampleRateToUse,
85 static_cast<unsigned int> (channelLayout.size()),
86 bitsPerSample, metadataValues, qualityOptionIndex);
88 return nullptr;
91 } // namespace juce