Silver Legacy
Speaker systems Legacy Audio Focus SE Price – RUB 1,215,000.
The assortment of all companies producing acoustic systems and electronic components includes items that provide the bulk of sales and on which the well-being of the company depends. This is exactly the model for Illinois-based Legacy Audio's Focus floor-standing speakers, which underwent another update a couple of years ago.
At one time, the original Focus became a real breakthrough for the American company Legacy. They helped it become one of the most reputable speaker manufacturers in the United States, because speakers of this size, capable of handling the low-frequency range with such high quality, are usually twice as expensive. Therefore, it is not surprising that the head of the company, Bill Duddleston, who personally develops all the speakers produced by the company, approached the creation of the next version of the legendary model with special care.
The letters SE in the name mean Silver Edition, that is, “silver edition”. The reason for giving this name, obviously, was the use of Kimber Cable with silver conductors in the internal wiring, but much more changes were made to the design of the speakers.
The first and main change is the new body: in appearance and design, the Focus SE is significantly different from the previous generation model. According to the developer himself, the main task was to eliminate parallel surfaces both inside and outside the acoustic design. In addition, additional ties were installed to increase the rigidity of the structure. A useful measure, considering how much energy the bass speakers produce.
The letters SE in the name mean Silver Edition, that is, “silver edition”. The reason for giving this name, obviously, was the use of Kimber Cable with silver conductors in the internal wiring, but much more changes were made to the design of the speakers. As for the appearance, a big step forward has been made in this regard compared to previous versions with their retro design. The finishing of the lacquered edges, and the workmanship in general, are simply impeccable. Suffice it to say that the Black Pearl finish is achieved by applying fourteen coats of varnish and curing for fourteen weeks before final polishing. Each speaker weighs more than 60 kg and is mounted on massive turned bronze legs. The dual bass reflex port is traditionally brought to the rear; there are also powerful terminals that allow the connection of a second pair of amplifiers for passive bi-amping.
As for the speakers used here, the main difference is the significantly more stringent selection of pairs based on frequency response. If previously they were selected with a tolerance of 1 dB, then for Legacy Focus SE the permissible error is no more than 0.25 dB. Experience suggests that the rejection rate in this case is extremely high. At the same time, the frequency response taken from each speaker is stored in the company’s database in case any of them fails during operation and needs to be replaced.
The low-frequency range is voiced by 12-inch woofers that have already become familiar to Legacy. All of them are equipped with powerful neodymium magnets and not the lightest aluminum diffusers. Head suspensions are rubber, with a long stroke; the baskets, of course, are cast. The bass section operates up to 120 Hz and passes the baton to dual midbass speakers, which are responsible for the region limited to 2800 Hz. The 7-inch drivers feature powerful ferrite magnets and Silver Graphite cones, a woven carbon fiber composite infused with silver, backed by a porous Rohacell material for excellent internal damping. The mid and high frequencies are handled by a dual AMT (Air Motion Transformer) ribbon module. At up to 8000 Hz, a 4-inch long “ribbon” operates; above that, a similar one-inch super tweeter comes into play. While Legacy Audio has not revealed the name of the HF driver manufacturer for the Focus SE, all indications are that it is German company Mundorf, which is widely known for its audiophile quality capacitors, coils and resistors used by the vast majority of high-end speaker manufacturers. To get the most out of the Legacy Focus SE, you need to ensure it's in the right environment. Fortunately, our test system featured a Krell Illusion preamp paired with Krell Solo 375 monoblocks, which is able to take absolute control of four aluminum-diaphragm, rubber-mounted bass drivers. Since, in our opinion, this combination of electronics is close to ideal for the speakers under test, their performance can be assessed without any concessions.
Let's say a few words about the signal source. The discs were played for us by the excellent Electrocompaniet ECM-2 media center, which can also work as a pre-amplifier. It can pull music not only from an external NAS server, but also from the built-in hard drive and even from connected USB drives. The Electrocompaniet proprietary application, available for tablets and phones on iOS and Android, was responsible for organizing and managing the media library. It is definitely more convenient to control playback using it than using the included remote control. Of course, the media center works with files up to 24-bit/192 kHz resolution, as well as DSD streams. Switching was carried out with well-known and field-proven Analysis Plus cables.
Before we get into the listening experience, we need to take a closer look at speaker placement in the room. Tall black obelisks with dual woofers require not only a good and muscular amplifier to demonstrate their capabilities, but also a carefully considered installation in the room. Particular attention should be paid to the location of the listener. It is absolutely necessary that his head be at the level of the mid-high frequency section, otherwise the frequency balance will be disrupted. It should also be taken into account that the front panel of the speakers is slightly tilted back, so it is better to listen to them in the far field. This is also one of the measures that makes it possible to fully appreciate the Legacy's bass punch. Fortunately, our test room allowed us to meet all the necessary conditions. The presence of a low-frequency equalization circuit in the crossover can be useful when it is necessary to get rid of annoying room modes in small rooms, but practice has shown that it is still better to spend time and effort on installing the speaker without resorting to activating it.
At one time, at the instigation of some overzealous British audio journalists, the concept of “American sound” came into use. This label has been applied to all high-power full-range speakers, from JBL to Dunlavy (including, of course, Legacy), which, unlike many of their European competitors, are capable of reproducing the full range of male vocals without endowing the lead singers with the talents of Farinelli. So: it is necessary to remove from memory, to forget forever all the nonsense that has been written about the notorious American sound. There is no American, English, German or Italian sound. There are simply good or bad speakers. And the Legacy Focus SE are very good speakers. Moreover: simply wonderful!
It is known that it is very difficult to pair ribbon drivers with dynamic drivers in such a way that the former do not dominate the latter. But Bill Dudleston coped with the task brilliantly. The use of ribbon cables and silver cables in the high-frequency circuit, if at all, can be discerned only by the excellent elaboration of the smallest details and tasty and long-lasting attenuation - and what is especially pleasant, in the complete absence of any coloring.
Maximum natural sound and comfort are what have always distinguished the Focus model and what is one of the advantages of its new version. Cozy house slippers - this is how one could describe the sound signature of the first Focus. Now, developing this association, it’s time to talk about stylish and original embroidered handmade leather shoes. The sound has become much more focused and dynamic, with excellent attack throughout the entire range, but at the same time it has not lost the comfort valued by Focus fans.
Moving on to a more detailed description of the sound of the speakers, we note that the scene is drawn very well, although for it to appear it is necessary to find the correct location of the listener and speakers in the room. The timbres of the instruments are absolutely natural, the solo trumpet always retains the liveliness and roughness inherent in its timbre, and never breaks into a screech. The rest of the wind instruments are conveyed just as naturally.
Maximum natural sound and comfort are what have always distinguished the Focus model and what is one of the advantages of its new version.
Cozy house slippers - this is how one could describe the sound signature of the first Focus. Now, developing this association, it’s time to talk about stylish and original embroidered handmade leather shoes. What can I say about the bass? It's great, as Legacy always is. If the electronic components are matched to the level of the speakers, the user will hear all the benefits provided by the powerful low-frequency section. When the phonogram requires it, the Focus SE simply explodes like a warehouse of dynamite, and when it is not needed, the double bass line softly purrs in the background. They will not disappoint the expectations of either rock and jazz lovers or fans of complex symphonic works. Fortunately, the model perfectly matches the colors of a large symphony orchestra, unleashing all its power on the grateful listener. The speakers respond gratefully to high-quality recordings, but at the same time, poorly recorded discs will not make you run out of the room in horror. Your entire collection will sound anywhere from good to amazing.
Full list
In this lesson:
- use Audio Focus
You've probably noticed that when listening to music, if a notification is triggered, then while the notification is playing, the sound of the music is either interrupted or becomes quieter. This can be achieved using audio focus.
Let me first try to explain the movement pattern of the focus on words. If we consider the example of music and notifications, then let a certain application_1 play music, and let a certain application_2 issue notifications. Application_1, when it starts playing, requests audio focus, gets it and plays the music. Next, an SMS or letter arrives, and application_2 wants to play the notification sound. It also requests and receives audio focus. But at the same time, the system sees that application_1 now has the focus. The system tells application_1 that it has lost focus for now. The notification sound plays, app_2 gives focus, and app_1 is told that the focus is back. When application_1 finishes playing music, it gives up focus. Those. The application must not only request focus when needed, but also explicitly give it away when it is no longer needed. There are special methods for this, we will consider them further.
It is also important to understand that these messages from the system to applications that focus is lost/restored are simply notification messages. And the application developer himself decides how he will handle it: ignore it, turn down the sound or pause playback. For example, I tested two players on my tablet. On one I turned on the music and minimized it, the music continued to play in the background. In another player I started watching a movie. As a result, I heard both the film and the music. Audio Focus avoids this.
You can draw an analogy with a person. Let's say a person speaks loudly. He is asked to speak more quietly, or even better, to shut up completely, because... he interferes with the others and is generally annoying, and everyone wants to listen to the other person. This is the loss of audio focus by the first person. But this does not mean at all that this person will immediately shut up. He simply received a notification that another person wanted to talk. And the first person does as he sees fit: either he continues to speak loudly, or he will speak more quietly, or he will remain silent. This remains at his discretion, especially if he is arrogant, strong or runs fast)
Let's write an application in which we implement an example with music and sound. When you press one button, we will start playing music, and when you press another, you will play a short sound. And we’ll attach an audio focus to this circuit.
Let's create a project:
Project name : P1281_AudioFocus Build Target : Android 2.3.3 Application name : AudioFocus Package name : ru.startandroid.develop.p1281audiofocus Create Activity : MainActivity
Let's add strings to strings.xml
:
Music Sound G Sound GT Sound GTD
layout file main.xml
:
Music button
will start music, and the other three buttons will start sound. There are three of them because there are three different types of focus that an application can request. We'll test all three.
To the folder mnt/sdcard/Music/
Place some file called
music.mp3
.
For example, you can take it here.
Place the file
explosion.mp3
in the res/raw , for example from here.
MainActivity.java
:
package ru.startandroid.develop.p1281audiofocus;
import java.io.IOException; import android.app.Activity; import android.content.Context; import android.media.AudioManager; import android.media.AudioManager.OnAudioFocusChangeListener; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.os.Bundle; import android.util.Log; import android.view.View; public class MainActivity extends Activity implements OnCompletionListener { final static String LOG_TAG = "myLogs"; AudioManager audioManager; AFListener afListenerMusic; AFListener afListenerSound; MediaPlayer mpMusic; MediaPlayer mpSound; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); } public void onClickMusic(View view) { mpMusic = new MediaPlayer(); try { mpMusic.setDataSource("mnt/sdcard/Music/music.mp3"); mpMusic.prepare(); } catch (IOException e) { e.printStackTrace(); } mpMusic.setOnCompletionListener(this); afListenerMusic = new AFListener(mpMusic, "Music"); int requestResult = audioManager.requestAudioFocus(afListenerMusic, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN); Log.d(LOG_TAG, "Music request focus, result: " + requestResult); mpMusic.start(); } public void onClickSound(View view) { int durationHint = AudioManager.AUDIOFOCUS_GAIN; switch (view.getId()) { case R.id.btnPlaySoundG: durationHint = AudioManager.AUDIOFOCUS_GAIN; break; case R.id.btnPlaySoundGT: durationHint = AudioManager.AUDIOFOCUS_GAIN_TRANSIENT; break; case R.id.btnPlaySoundGTD: durationHint = AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK; break; } mpSound = MediaPlayer.create(this, R.raw.explosion); mpSound.setOnCompletionListener(this); afListenerSound = new AFListener(mpSound, "Sound"); int requestResult = audioManager.requestAudioFocus(afListenerSound, AudioManager.STREAM_MUSIC, durationHint); Log.d(LOG_TAG, "Sound request focus, result: " + requestResult); mpSound.start(); } @Override public void onCompletion(MediaPlayer mp) { if (mp == mpMusic) { Log.d(LOG_TAG, "Music: abandon focus"); audioManager.abandonAudioFocus(afListenerMusic); } else if (mp == mpSound) { Log.d(LOG_TAG, “Sound: abandon focus”); audioManager.abandonAudioFocus(afListenerSound); } } @Override protected void onDestroy() { super.onDestroy(); if (mpMusic != NULL) mpMusic.release(); if (mpSound != NULL) mpSound.release(); if (afListenerMusic != NULL) audioManager.abandonAudioFocus(afListenerMusic); if (afListenerSound != NULL) audioManager.abandonAudioFocus(afListenerSound); } class AFListener implements OnAudioFocusChangeListener { String label = ""; MediaPlayermp; public AFListener(MediaPlayer mp, String label) { this.label = label; this.mp = mp; } @Override public void onAudioFocusChange(int focusChange) { String event = ""; switch (focusChange) { case AudioManager.AUDIOFOCUS_LOSS: event = "AUDIOFOCUS_LOSS"; break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: event = "AUDIOFOCUS_LOSS_TRANSIENT"; break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: event = "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"; break; case AudioManager.AUDIOFOCUS_GAIN: event = "AUDIOFOCUS_GAIN"; break; } Log.d(LOG_TAG, label + " onAudioFocusChange: " + event); } } } In onCreate
we just get AudioManager. It is through him that we will request focus.
onClickMusic
triggered when the Music button is pressed. Here we create a MediaPlayer and give it the path to the music file. Using the setOnCompletionListener method, we set the Activity as the recipient of the notification about the end of playback. Next comes work with focus. afListenerMusic is a listener (implementing the OnAudioFocusChangeListener interface) that will receive messages when focus is lost/restored. It is an instance of the AFListener class, which we will look at a little later.
Focus is requested using the requestAudioFocus method. The following must be passed to the input: - a listener who will receive focus messages - thread type - focus type
The focus type tells you how long the app is going to play its sound and how important it is that it silences the other app. There are three types of focus: AUDIOFOCUS_GAIN - the application makes it clear that it is going to play its sound for a long time, and the current playback should pause for this time AUDIOFOCUS_GAIN_TRANSIENT - the playback will be short, and the current playback should pause for this time AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK - the playback will be short, but the current playback can simply turn down the volume for this time and continue playing
So, we ask for focus and say that it will last for a long time - AUDIOFOCUS_GAIN. The requestAudioFocus method returns the status: AUDIOFOCUS_REQUEST_FAILED = 0 – focus not received AUDIOFOCUS_REQUEST_GRANTED = 1 – focus received
After we have received focus, we start playback.
onClickSound method
triggers when you press any of the three Sound buttons. Here we determine which of the three buttons was pressed. Thus, we write in the durationHint variable the type of audio focus that we will request. Next, we create a MediaPlayer that will play our explosion sound from the raw folder. We assign it a listener for the end of playback. We request focus with the type defined above. Let's start playback.
onCompletion method
, fires when playback ends. We determine which MediaPlayer has finished playing and use the abandonAudioFocus method to inform the system that we no longer claim audio focus. As input to the method, we pass the same listener that was given when requesting focus.
in onDestroy
we free up resources and let go of focus.
AFListener class
implements the OnAudioFocusChangeListener interface and is the recipient of focus loss/restoration messages. When creating it, we give it the appropriate MediaPlayer (later it will become clear why) and the text that we will need for logs.
The onAudioFocusChange method receives the focus status of this application as input. There are 4 options: AUDIOFOCUS_LOSS – focus is lost as a result of another application requesting the AUDIOFOCUS_GAIN focus. Those. they make us understand that another application is about to play something for a long time and asks us to pause our playback for now. AUDIOFOCUS_LOSS_TRANSIENT - Focus was lost as a result of another application requesting AUDIOFOCUS_GAIN_TRANSIENT focus. We are told that another application is about to play something small and asks us to pause our playback for now AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK - Focus was lost as a result of another application requesting focus AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK. They let us know that another application is about to play something small, and we can simply turn down the volume without pausing the playback AUDIOFOCUS_GAIN - the other application has finished playing, the sound is ours again
For now, we'll just log all this information to see how the two audio-focused applications interact.
Let's save everything and launch the application. Click Music, music playback starts. We see it in the logs.
Music request focus, result: 1
Those. music requested focus and received it (status = 1).
Press Sound G to play an explosion sound and request the AUDIOFOCUS_GAIN focus.
Sound request focus, result: 1
Music onAudioFocusChange: AUDIOFOCUS_LOSS
Focus requested and received with an explosion. And the music received a notification that it had lost focus (AUDIOFOCUS_LOSS).
We hear the sound of an explosion. After the sound of the explosion ends:
Sound: abandon focus
Music onAudioFocusChange: AUDIOFOCUS_GAIN
The onCompletion method is triggered, in which the explosion gives away focus (abandon focus). And therefore, the music gets the message that the focus is back to it (AUDIOFOCUS_GAIN).
If you wait until the music ends, you will see this message.
Music: abandon focus
The music gave focus.
As you noticed, the music was playing all this time and did not go away. Just because she was losing focus doesn't automatically mean she will stop. Again, focus is only a notification. How the application will react to this notification is up to you, as a developer, to decide.
The Sound GT and Sound GTD buttons work similarly, I won't press them anymore. The difference will be that the explosion will request the focuses AUDIOFOCUS_GAIN_TRANSIENT and AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK respectively. And the music will receive the statuses AUDIOFOCUS_LOSS_TRANSIENT and AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK.
Those. We saw how one application requests a certain type of focus, and another application sees that type and must take action accordingly. Speaking of measures. Let's implement these measures in addition to logs.
onAudioFocusChange method
class AFListener:
public void onAudioFocusChange(int focusChange) { String event = "";
switch (focusChange) { case AudioManager.AUDIOFOCUS_LOSS: event = "AUDIOFOCUS_LOSS"; mp.pause(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT: event = "AUDIOFOCUS_LOSS_TRANSIENT"; mp.pause(); break; case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK: event = "AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK"; mp.setVolume(0.5f, 0.5f); break; case AudioManager.AUDIOFOCUS_GAIN: event = "AUDIOFOCUS_GAIN"; if (!mp.isPlaying()) mp.start(); mp.setVolume(1.0f, 1.0f); break; } Log.d(LOG_TAG, label + " onAudioFocusChange: " + event); } When loss of focus AUDIOFOCUS_LOSS and AUDIOFOCUS_LOSS_TRANSIENT set a pause. And with AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK, we simply reduce the volume. When we receive focus (AUDIOFOCUS_GAIN), we resume playback if it was paused and set the volume to maximum.
I chose the simplest measures so as not to complicate the lesson. But they can be improved. For example, if focus is lost for a long time (AUDIOFOCUS_LOSS), you can release resources and create the MediaPlayer again when focus is gained. Or you can completely give up focus (abandon), in which case the user will have to explicitly return to your application to resume playback.
When you request focus, the requestFocus method returns whether the focus was captured or not. Help recommends taking this parameter into account and starting playback only if the result is positive (AUDIOFOCUS_REQUEST_GRANTED). I really don’t know how you can get a negative result here. If anyone has any thoughts on this matter, write on the forum.
In the next lesson:
— recording sound using MediaRecorder
Join us on Telegram
:
— the StartAndroid channel publishes links to new articles from the site startandroid.ru and interesting materials from Habr, medium.com, etc.
— in chats we solve emerging questions and problems on various topics: Android, Kotlin, RxJava, Dagger, Testing
- well, if you just want to talk with development colleagues, then there is the Fludilnya chat
— new Performance chat to discuss performance issues and for your suggestions on course content on this topic
Discuss on the forum [7 replies]